J'ai du mal à comprendre ce que harok_theme () fait.
Ma compréhension est que cela a quelque chose à faire pour permettre de remplacer les modèles. P>
Je cherchais: P> < Pré> xxx pré>
Pourriez-vous donner un exemple de la façon dont cela fonctionne? p> p>
3 Réponses :
Il fournit une place pour un module pour définir ses thèmes em>, qui peuvent ensuite être remplacés par tout autre module / thème. Il fournira également la possibilité de tout module d'utiliser un crochet tel que Il y a essentiellement deux façons d'initialiser une fonction de thème : p> et p> Veuillez garder à l'esprit, vous devriez éviter d'appeler le thème () directement (par la documentation dans thème.inc) depuis qu'il: p> dans Drupal 8, Theme () est une fonction privée, _theme (). Pour plus de détails, veuillez vous reporter à www.drupal.org/node/2173655 . P> Lorsque vous comparez les deux d'entre eux à l'élément en ce qui concerne" l'élément rendu ", cela dit essentiellement au thème Système que cette fonction thématique sera appelée à l'aide d'un tableau de rendu, avec un em> argument nommé (dans ce cas Ceci passera tout ce qui est dans la variable code> de la variable code> à la fonction de thème car il est seul argument. p> concernant le modèle code> clé code>: p> définit un thème appelé Il existe deux façons de renvoyer la sortie pour une fonction de thème, en implémentant le nom de la fonction physique (dans ce cas, il serait Les fichiers de modèle sont préférables si vous avez un peu de HTML à Sortie pour un thème ou vous n'aimez tout simplement pas écrire HTML dans des chaînes à l'intérieur de PHP (personnellement, je ne le fais pas). Dans les deux cas cependant, les variables passaient lorsque vous appelez le thème (en utilisant soit le thème myModule_preprocess_theme_name code> pour modifier les variables passées à la fonction thème éventuelle ou le fichier de modèle.
Poll_Results code> dans l'exemple que vous donnez ci-dessus, vous pouvez probablement déterminer ce qui se passe ... Depuis que PHP n'est pas une langue fortement dactylographiée Drupal fournit des arguments nommés «Grâce à une matrice à clé transmise à la fonction code> theme code> ou comme touches haillées dans une matrice de rendu. p>
formulaire code>). Le code ressemblerait à ceci: p>
poll_vote code> qui utilise un fichier de modèle ( D'où le modèle code> clé code>) avec un nom de «sondage vote.tpl.php» (ceci est par convention). Le chemin de ce fichier de modèle sera trouvé à l'aide du chemin d'accès au module qui l'applique (par exemple des modules / sondage / sondage / vote.tpl.php), il est donc bon de mettre des fichiers de modèle dans les sous-dossiers du dossier du module principal du dossier principal du module. . p>
theme_poll_vote code>) ou à l'aide d'un fichier de modèle . Si la touche CODE> Template CODE> est vide Drupal supposera que vous avez implémenté une fonction physique et tentera de l'appeler. P>
() code> ou un tableau de rendu comme décrit ci-dessus) sont eux-mêmes transmis au fichier de modèle ou à la fonction de thème. Donc: P>
function theme_poll_results(&$vars) {
$raw_title = $vars['raw_title'];
$results = $vars['results'];
// etc...
}
"Si vous utilisiez plutôt un fichier de modèle pour la même méthode, les variables seraient disponibles en tant que $ Raw_title, des résultats $, etc., étant donné que Drupal exécute l'extrait sur les Vares $ avant d'analyser le fichier de modèle." Un peu d'informations d'information dorée, cela. Merci.
@Clive choisit le rendu () au lieu de thème () empêche les problèmes potentiels de mise en cache et de javascript que vous avez mentionné?
J'étais coincé toute la journée avec ceci et mis en œuvre avec succès, alors partageant ma découverte ici, peut-il aider à comprendre Il y a 3 étapes impliquées: p> La variable maintenant est disponible comme par magie disponible en vous hook_theme code>. p>
hook_theme code> p>
<?php echo $xxx ?>
echo code> /
retour code> le thème de votre
.tpl code> ou n'importe quel
.module code> p >
$output = theme('xxx_xxx', $xxx);
xxx-xxx.tpl.php code>. p>
function YOURMODULENAME_theme() {
return array(
'xxx_xxx' => array(
'template' => 'xxx-xxx', // define xxx-xxx.tpl.php inside module
'arguments' => array('xxx' => null), //define $xxx so it will available in your xxx-xxx.tpl.php
),
);
}
Cela m'aide beaucoup. Merci beaucoup. +1 pour vous. :)
Je ne pense pas que le thème de crochet est bien défini: Stackoverflow.com/a/12987731/1384237
Il y a encore un autre moyen: (peut être trouvé dans le thème Bartik)
Le scénario est que nous avons créé notre propre module et que nous souhaitons remplacer la sortie par défaut pour dire un nœud avec le titre 'ZZZ' uniquement.
Nous ne savons pas et ne vous souciez pas de la manière dont la valeur par défaut la sortie est générée. Tout ce dont nous avons besoin est de dire à Drupal d'utiliser notre propre fichier de modèle personnalisé (nœud - personnalisé - nom.tpl.php) pour rendre ce nœud spécifique.
Ce sont les étapes:
dites drupal où notre fichier de modèle vit. (Gardez à l'esprit que cette fonction ne prendra effet qu'une seule fois et après avoir effacé le cache de Drupal): P>
//Implements hook_preprocess_node() function mymodulename_preprocess_node($vars) { if($vars['node']->title == 'zzzz') { $vars['theme_hook_suggestions'][] = 'node__custom__name'; ... your other code ... } }
dites drupal où et quand l'utiliser p>
// Implements hook_theme() function mymodulename_theme() { $theme = array(); $theme['node__custom__name'] = array( 'render element' => 'node', 'template' => 'path_from_mymodule_root/node__custom__name', ); return $theme; }