2010-06-24 2 views
1

Je viens juste de commencer à créer mes propres modules pour faire mes fonctions personnalisées telles que hook_form_alter() etc ...Drupal, une question sur les modules de personnalisation

Maintenant que je fait demander comment puis-je utiliser des modules personnalisés pour apporter de petits changements à certains modules. Par exemple, considérons le module de vue, je veux modifier le fichier: « vues-view.tpl.php » .. disons changer le nom de la classe de cette div

... 
<div class="view-filters"> 
     <?php print $exposed; ?> 
    </div> 

Comment puis-je faire sans pirater le code?

grâce

Répondre

3

Pour changer la classe CSS pour les .views-filtres div, vous devez fournit une autre views-view.tpl.php (ou views-view--VIEWNAME.tpl.php ou views-view--VIEWNAME--DISPLAYID.tpl.php). C'est généralement et facilement done in the theme. Mais si nécessaire, il peut être fait à partir d'un module aussi:

function YOURMODULE_registry_alter($theme_registry) { 
    $originalpath = array_shift($theme_registry['TEMPLATE']['theme paths']); 
    $modulepath = drupal_get_path('module', 'YOURMODULE') .'/themes'); 
    array_unshift($theme_registry['TEMPLATE']['theme paths'], $originalpath, $modulepath); 
} 

Cela vous permet de placer un fichier modèle views-view.tpl.php primordial dans le répertoire des thèmes de votre module. Pour que cela fonctionne, votre fonction doit avoir un poids supérieur à celui du module fournissant le modèle redéfini. Donc, dans votre fichier d'installation de module (YOURMODULE.install), vous aurez quelque chose comme

function YOURMODULE_install() { 
    db_query("UPDATE {system} SET weight = 10 WHERE name = 'YOURMODULE'"); 
} 
+0

Je suis d'accord. Gardez à l'esprit qu'il existe une différence entre les thèmes (fonctions_tarifs et modèles tpl.php) et le comportement du module écrit en code PHP. Lorsque vous avez besoin de modifier la sortie html produite par un module, cela s'appelle un thème, et l'endroit le plus logique pour le faire est dans votre thème. Lorsque vous avez besoin de changer le fonctionnement d'un module, essayez de le faire dans un module personnalisé en implémentant des hooks (comme avec hook_form_alter). – marcvangend

+0

ok cool! La solution consiste simplement à copier coller le fichier de modèle dans le dossier de thème. – aneuryzm

1

La façon la plus facile de changer ce tpl est utilisé pour une vue est de fournir un TPL à la vue d'utiliser. Si vous cliquez sur Thème: Informations dans une vue, il affichera différentes façons de remplacer la sortie de l'ensemble de la vue jusqu'au niveau du champ.

1

Il est rare que vous ayez besoin d'éditer un module contribué ou le noyau (si c'est ce que vous voulez dire par piratage).

La réponse est oui! Cela dit, certains modules sont mal écrits. Si vous ne pouvez pas écrire une interface ou l'ébrécher, vous devez le pirater et soumettre un correctif à la file d'attente de problèmes du projet. Ensuite, vos modifications pourraient être incluses dans la prochaine version.

Questions connexes