10
votes

Comment puis-je thème le modèle pour édition ou ajouter un nœud pour un type de contenu spécifique?

Je veux themer le modèle pour édition ou ajouter un nœud pour un type de contenu spécifique.
Par exemple, au thème Tous les formulaires de type de contenu, j'utilise le fichier page-nœud- {Ajouter | edit} .tpl.php (selon ce que je dois faire ajouter ou modifier).

Mais je n'ai pas trouvé le nom du modèle pour un type de noeud personnalisé, par exemple des produits.

J'ai besoin de theme uniquement pour les produits, mais pas pour les autres types de contenu.

J'ai essayé avec page-node-edit-product.tpl.php et page-nœud-produit-edit.tpl.php mais pas de chance. < / p>


0 commentaires

6 Réponses :


16
votes

hmm. Il peut y avoir une meilleure façon, mais qu'en est-il de la fonction de préprocession.

Je suis toujours vraiment nouveau à Drupal, alors je voudrais peut-être essayer quelque chose comme ceci [code peut ne pas fonctionner]: P>

<?php
function themeName_preprocess_page(&$vars, $hook) {
  if ((arg(0) == 'node') && (arg(1) == 'add' && arg(2) == 'product')) {
    $vars['template_files'][] =  'page-node-add-product';
  }
}
?>


0 commentaires

0
votes

Je suis un noob drupal moi-même, mais quelque chose que quelque chose (pourrait avoir besoin d'un peu plus) comme ce travail?

function phptemplate_node_form($form)
{
  switch ($form['#node']->type) {
    case 'product':
    return theme_render_template(path_to_theme().'/node-edit-product.tpl.php', array('form' => $form));
    default:
     return theme_node_form($form);
}
}


0 commentaires

1
votes

C'est ce que je pense, c'est le moyen "approprié" de le faire.

du module de nœud: xxx

si drupal tentera de thème "produit_node_form"

afin que vous puissiez créer un module qui implémente ceci.

Vous devrez mettre en place [harok_theme] [1] et fournir une fonction ou un modèle.

Vous constaterez peut-être qu'il est plus facile d'utiliser [harok_form_alter] [2] pour ajouter des classes et des CSS normaux pour changer l'apparence.


2 commentaires

Ah, mais je veux utiliser un modèle complet différent plutôt que sur le thème uniquement.


Bien que vous puissiez faire comme vous l'avez posté, je ne suis pas sûr que c'est ce que veut l'OP. Cela ne changera que le modèle de la forme réelle (qui n'utilise actuellement aucun), cela ne changera pas le modèle de page utilisé. De ses exemples semble être comme c'est ce qu'il veut.



0
votes

pour moi le même problème. Invite d'où insérer un code: xxx

il est entré dans template.php ou dans la page-nœud - {Ajouter | edit} -example.tpl.php?


1 commentaires

Dans la deuxième comparaison, il y a une erreur, il doit être un && au lieu de ||: Parce que cela s'applique à tout contenu "Ajouter".



0
votes

Je mets ceci dans mon fichier template.php dans le répertoire de mon thème: xxx


0 commentaires

1
votes
function themename_preprocess_page(&$vars) { 
  // Add per content type pages
  if (isset($vars['node'])) {
    // Add template naming suggestion. It should alway use hyphens.
    // If node type is "custom_news", it will pickup "page-custom-news.tpl.php".
    $vars['template_files'][] = 'page-'. str_replace('_', '-', $vars['node']->type);
  }
}
Add the above code in template.phpThen create couple of tpl files1) page-contenttype.tpl.phpused when displaying and editing the content2) page-node-add-contenttype.tpl.phpused when adding that content type.Works with drupal 6.

0 commentaires