Bonjour à tous,
J’ai créé un type de contenu ayant pour nom tutoriel. Ce type de contenu contient deux CCK field nommé pre-requis et resume. J’ajouterai prochainement un sommaire grâce au module Table of content et enfin le corps du texte.
Je souhaiterais créer un nouveau thèmes spécialement pour les tutoriaux. Pour cela j’ai créer un templates nommé node-tutoriel.tpl.php. La variable $content contient l’ensemble du texte qui sera affiché, j’aimerais pouvoir modifier cette dernière afin notamment d’ajouter et grouper certain div.
En effet, mon but est de pouvoir définir une taille à 50% pour les CCk field qui se placerait à gauche, et ensuite le TOC à droite.
Pensez-vous que cela est possible ?
Merci pour vos réponses.
Arnaud
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

Oui, tu fais «floater» ta TOC sur la droite.
Drupalfr.org est aussi sur freenode à #drupal-fr
—
Amipicto communication et publicité
floown@drupal.org
910
Bonjour floown,
J’ai déjà pensé à ça. Malheureusement Mes CCK Fields et TOC sont dans des div indépendants. Du coup le div TOC n’est pas bien placé :).
Mon but serait de pouvoir mettre les deux champs CCK et TOC dans un DIV conteneur afin d’avoir plus de liberté.
Ci-joint la copie d’écran de ce que j’ai actuellement
arno974
50
Si tu veux modifier l’affichage finement de ce qui est dans $content, je te conseille le module contemplate, ça permet de contrôler précisémment les variables affichées dans le teaser et dans le body.
Software is like sex, it’s better when it’s free (Linus Torvalds)
http://twitter.com/davidm_fr
davidm
631
Merci à tous pour vos commentaires.
Grâce à contemplate, j’ai accès à quasiment toutes les variables de mon document c’est super.
Néanmoins, reste le souci d’accès à la variable toc. Auriez-vous une idée ?
Merci.
Arnaud
arno974
50
Je me doutai que contemplate pourrait te convenir :)
Pour la TOC comme le suggère floown pourquoi ne pas la faire flotter à droite effectivement ?
Il suffit pour ça de mettre
<!--tableofcontents-->dans un div flottant à droite.Software is like sex, it’s better when it’s free (Linus Torvalds)
http://twitter.com/davidm_fr
davidm
631
J’ai joué un peu toute la journée avec contemplate à essayer avec des preg_replace() de modifier mon contenu.
L’idée étant de mettre mes deux champs CCK ainsi que tableofcontents dans un div commun. J’avais déjà essayé de mettre toc en float right mais le résultat n’est pas top -> voir copie d’écran post précédent. En bidouillant mon CSS et en mettant mon toc en position absolute j’arrive à arriver à un résultat convenable, mais bon c’est pas très propre comme technique.
Du coup j’aurais aimé directement inclure ma mise en page dans un template du style ci-dessous. Mais là malheureusement mon tableofcontents n’est pas interprété.
<div class="node<?php if ($sticky) { print " sticky"; } ?><?php if (!$status) { print " node-unpublished"; } ?>">
<?php if ($picture) {
print $picture;
}?>
<?php if (!$page) { ?><h2 class="title"><a href="<?php print $node_url?>"><?php print $title?></a></h2><?php }; ?>
<?php if ($submitted) { ?>
<span class="submitted">
<?php
$variables['submitted'] = t('Ecrit par !a le @b.', array('!a' => theme('username', $node), '@b' => format_date($node->created,'custom', 'j/m/Y')));
print $variables['submitted'];
?>
</span>
<?php } ?>
<?php if ($terms) { ?><span class="taxonomy"><?php print $terms?></span><?php } ?>
<div id="CustomGrouping">
<!-- tableofcontents list:ol; title:Table of Contents; minlevel: 3; maxlevel: 4;-->
<?php
print $node->content['group_tutorial']['group']['field_resume']['#children'];
print $node->content['group_tutorial']['group']['field_prerequis']['#children'];
?>
</div>
<div class="content"><div id="test"></div><?php print $node->content['body']['#value'] ?></div>
<?php if ($links) { ?><div class="links"><span id="anchorTop"><a href="#backToTop" alt="retour au de page">Retour en haut</a></span><?php print $links?></div><?php } ?>
</div>
</php>
arno974
50
Ok j’ai finalement réussi :p
Ce post m’a beaucoup aidé, et je peux du coup afficher mon toc sans que l’utilisateur ai à le spécifier. Voici le template que j’ai utilisé :
<div class="node<?php if ($sticky) { print " sticky"; } ?><?php if (!$status) { print " node-unpublished"; } ?>">
<?php if ($picture) {
print $picture;
}?>
<?php if (!$page) { ?><h2 class="title"><a href="<?php print $node_url?>"><?php print $title?></a></h2><?php }; ?>
<?php if ($submitted) { ?>
<span class="submitted">
<?php
$variables['submitted'] = t('Ecrit par !a le @b.', array('!a' => theme('username', $node), '@b' => format_date($node->created,'custom', 'j/m/Y')));
print $variables['submitted'];
?>
</span>
<?php } ?>
<?php if ($terms) { ?><span class="taxonomy"><?php print $terms?></span><?php } ?>
<?php
if (module_exists('tableofcontents')) {
$resume = $node->content['group_tutorial']['group']['field_resume']['#children'];
$prerequis = $node->content['group_tutorial']['group']['field_prerequis']['#children'];
$node->content['body']['#value'] = '<div id="CustomGrouping"><!--tableofcontents-->'.$resume.$prerequis.'</div>'.$node->content['body']['#value'];
$node->content['body']['#value'] = tableofcontents_filter('prepare', 0, -1, $node->content['body']['#value']);
$node->content['body']['#value'] = tableofcontents_filter('process', 0, -1, $node->content['body']['#value']);
}
?>
<div class="content"><div id="test"></div><?php print $node->content['body']['#value'] ?></div>
<?php if ($links) { ?><div class="links"><span id="anchorTop"><a href="#backToTop" alt="Retour en haut">Retour en haut</a></span><?php print $links?></div><?php } ?>
</div>
arno974
50
Merci d’avoir partagé ton code et le lien, ça peut être utile :)
Software is like sex, it’s better when it’s free (Linus Torvalds)
http://twitter.com/davidm_fr
davidm
631
Salut
Je trouve que la gestion de la variable $content est un point faible du systeme de template de drupal.
Contemplate est une solution un peu bancale (du moins dans drupal 5), une fois un template fait, ça n’ajoute plus automatiquement les nouvelles variables que peuvent ajouter de nouveaux modules par la suite ; il faut aller les chercher et les mettre soi même…
Et puis le principe d’avoir une partie du template dans l’admin alors que tout le reste se trouve dans un dossier theme ça me plaît pas trop.
Le seul moyen que j’ai trouvé pour garder le controle c’est de passer par la création d’un module en utilisant le hook_nodeapi, ce que je trouve un peu lourd.
http://formation.ideia.fr/formation/drupal-la-carte | http://twitter.com/nyl_auster
nyl auster
838