Comment puis-je basculer vers un fichier de modèle de thème différent pour n'importe quel nœud que je veux? Je comprends comment créer des sous-thèmes comme node-recipes.tpl.php pour un noeud qui a un chemin de "recettes". Mais ce que je veux avoir le contrôle de l'ensemble du modèle de base comme page.tpl.php. Puis-je utiliser une fonction de pré-traitement dans template.php pour cela?Fichier de modèle de thème principal Drupal pour n'importe quel nœud
En ce moment, j'ai dans mon fichier template.php:
function mythemename_preprocess_node(&$vars) {
// template name for current node id
$suggestions = array('node-'. $vars['nid']);
// additional node template names based on path alias
if (module_exists('path')) {
// we already can have a path alias
if (isset($vars['path'])) {
$alias = $vars['path'];
}else{
// otherwise do standard check
$alias = drupal_get_path_alias('node/'. $vars['nid']);
}
if ($alias != 'node/'. $vars['nid']) {
$add_path = '';
foreach (explode('/', $alias) as $path_part) {
$add_path .= !empty($path_part) ? $path_part.'_' : '';
$suggestions[] = 'node-'. $add_path;
}
// adding the last one (higher priority) for this path only
// node-some-long-path-nofollow.tpl.php (not for anchestors)
$suggestions[] = end($suggestions) .'-nofollow';
}
$suggestions=array_map(stripTag, $suggestions);
//print_r($suggestions);
}
$vars['template_files'] = isset($vars['template_files']) ? array_merge($vars['template_files'], $suggestions) : $suggestions;
}
grâce
Merci, je vais vérifier. Si je voulais utiliser un fichier de modèle spécial pour un noeud du type "page" qui a le chemin d'accès "news", comment l'implémenterais-je? Est-ce que j'ajouterais du code dans l'instruction "($ hook == 'page')" if pour vérifier un template avec cet alias comme ceci: node-news.tpl.php ou news.tpl.php? merci – EricP
Cette fonction "template_suggestions_preprocess" peut-elle être utilisée dans le fichier template.php ou doit-elle être utilisée dans un module? – EricP
1) J'ignore généralement l'URL des nœuds, je travaille uniquement avec le hook_preprocess et le $ vars ['node'] -> type. Cela m'a permis de changer n'importe quel pathautos etc au besoin. Dans le cas de hook_preprocess_page() vous pouvez voir l'URL de la page dans la variable $ vars, il faudrait que je regarde mais un rapide dpm ($ vars) devrait le montrer près du bototm. – electblake