Submitted by mrcroc on
Bonjour à tous,
Je cherche à placer un bloc entre le contenu d'un article et la zone de commentaire qui le suit.
Je crois qu'il est possible de surcharger le template d'une page en passant par node-article.tpl.php. Mais je ne vois pas comment déclarer mon bloc là-dedans.
Je viens de passer deux heure à chercher la solution mais je ne trouve rien de clair.
Merci d'avance pour votre aide !
Cela dépands de ton
Permalien Soumis par darkjeff le 4 Septembre, 2012 - 14:29
Cela dépands de ton template.
Tu peux créer un région en plus et la placer dans ton template, mais cela demande de la programmation.
Merci pour ta réponse
Permalien Soumis par mrcroc le 4 Septembre, 2012 - 14:41
Merci pour ta réponse Darjjeff.
C'est en effet ce que j'ai pu lire. Mais je ne vois pas comment placer ma région entre le contenu de l'article et les commentaires.
Comme dit avant cela dépand
Permalien Soumis par darkjeff le 4 Septembre, 2012 - 14:51
Comme dit avant cela dépand de ton thème.
En gros il faut modifier le ficher .info de ton thème déclarer une nouvelle région (copier/coller d'une autre) ensuite tu modifie le fichier page.tpl.php, tu trouves l'endroit où ce finis le contenu et tu ajoutes ta région
<?php if ($taRegion): ?>
<div id="taRégion"><?php print $taRégion; ?></div>
<?php endif; ?>
où taRégion = ce que tu as déclaré dans le .info
Merci Darjeff Alors j’ai
Permalien Soumis par mrcroc le 4 Septembre, 2012 - 16:24
Merci Darjeff
Alors j'ai déclaré ma nouvelle région dans le .info de la façon suivante :
regions[after_content] = after content
Puis je l'ai placé dans article.tpl.php
<?php if ($after_content): ?>
<div id="after_content"><?php print $after_content; ?></div>
<?php endif; ?>
La région apparait correctement dans les gestions des blocs de Drupal. Mais une fois le bloc placé dans la nouvelle région, celui-ci n'apparait plus...
Je dois faire une erreur quelque part mais je ne vois ce qui manque...
Pourquoi dans
Permalien Soumis par darkjeff le 4 Septembre, 2012 - 16:30
Pourquoi dans article.tpl.php ?
Il ne s'affichera que si tu visualises un contenu de type article.
C'est ce que tu veux ?
Je te conseil plutôt page.tpl.php
le code que tu as mis me semble bon.
Oui je voulais limiter
Permalien Soumis par mrcroc le 4 Septembre, 2012 - 17:09
Oui je voulais limiter l'affichage au type article. Mais ça ne fonctionne pas...
Par contre le bloc s'affiche si le code est placé dans page.tpl.php, je pourrais donc limiter l'affichage au type article dans les paramètres du bloc.
En revanche, c'est ce que je craignais, le bloc n'apparait qu'après l'affichage des commentaires alors que je souhaite le mettre entre le contenu de l'article et les com.
Voici un bout de code pour comprendre où est placée la région dans page.tpl.php :
<div id="content-area">
<?php print $content; ?>
</div>
<?php if ($after_content): ?>
<div id="after_content"><?php print $after_content; ?></div> <!-- /#after_content -->
<?php endif; ?>
<?php if ($feed_icons): ?>
<div class="feed-icons"><?php print $feed_icons; ?></div>
<?php endif; ?>
<?php if ($content_bottom): ?>
<div id="content-bottom" class="region region-content_bottom">
<?php print $content_bottom; ?>
</div> <!-- /#content-bottom -->
<?php endif; ?>
Il faut sans doute déclarer l'espace de commentaire quelque part mais je ne sais pas comment.
Alors, il faut que tu cache
Permalien Soumis par darkjeff le 5 Septembre, 2012 - 08:17
Alors, il faut que tu cache les comments et que tu le ré affiche après ta nouvelle région, comme tu peux le voir dans le code ci-dessous.
Par contre tu risques d'avoir des problèmes de theming.
<div id="content-area">
<?php
hide($content['comments']);
print $content;
?>
</div>
<?php if ($after_content): ?>
<div id="after_content"><?php print $after_content; ?></div> <!-- /#after_content -->
<?php endif; ?>
<?php
print render($content['comments']);
?>
<?php if ($feed_icons): ?>
<div class="feed-icons"><?php print $feed_icons; ?></div>
<?php endif; ?>
<?php if ($content_bottom): ?>
<div id="content-bottom" class="region region-content_bottom">
<?php print $content_bottom; ?>
</div> <!-- /#content-bottom -->
<?php endif; ?>
Désolé pour mon retour
Permalien Soumis par mrcroc le 6 Septembre, 2012 - 11:24
Désolé pour mon retour tardif,
Ca ne fonctionne pas... il me cache tout le contenu de l'article...
C'est sans doute au niveau du "hide" qu'il y a un soucis.
<?php
hide($content['comments']);
print $content;
?>
Je vais faire des essais.
Bonjour, À vue de nez, un
Permalien Soumis par NetOctet le 6 Septembre, 2012 - 11:37
Bonjour,
À vue de nez, un print $tableau, ça te retournera pas ce que tu voudras.
Essaye avec
NetOctet, malheureusement ça
Permalien Soumis par mrcroc le 6 Septembre, 2012 - 12:10
NetOctet, malheureusement ça ne passe pas non plus.
Il y a bien un print $content sur le code de départ pour afficher le contenu.
D'ailleurs lorsque remplace le "print $content" par "print render $content" sur le code de base le contenu n'apparait plus.
En tout cas merci pour ce soutient, je continue de fouiner.
Tu as raison, j’ai confondu
Permalien Soumis par NetOctet le 6 Septembre, 2012 - 12:27
Tu as raison, j'ai confondu page.tpl avec node.tpl.
Ce que tu veux changer en fait, c'est node.tpl.php. C'est au milieu de l'affichage de ton node que tu vas vouloir rajouter une région.
Du coup, il faut que tu ajoutes le contenu de cette région comme paramètre supplémentaire de l'affichage de ton node.
http://bridgecitystudio.com/tutorials/adding-region-node-template
Essaye de t'inspirer un peu de ce qui est fait là, ça pourra t'aider je pense.
J’ai créé un template
Permalien Soumis par mrcroc le 6 Septembre, 2012 - 12:40
J'ai créé un template node-article.tpl.php pour mon type de contenu, je suppose que c'est ici qe je dois travailler et non dans node.tpl.php ?
Si tu es bien dans Drupal 7,
Permalien Soumis par NetOctet le 6 Septembre, 2012 - 12:46
Si tu es bien dans Drupal 7, il faut doubler le tiret.
Ca tourne sur Drupal 6. Mais
Permalien Soumis par mrcroc le 6 Septembre, 2012 - 13:08
Ca tourne sur Drupal 6.
Mais les blocs de la région n'apparaissent pas après l'insertion de la région dans node-article.tpl.php
Quelle galère pour une si petite chose...
Je ne sais pas trop ce que tu
Permalien Soumis par NetOctet le 6 Septembre, 2012 - 14:14
Je ne sais pas trop ce que tu as fait ni comment, donc c'est dur de te dire. En plus, je n'y connais rien en Drupal 6, je dois l'avouer.
En gros, tu dois ajouter la variable qu'il faut par une fonction de preprocess de la page, puis l'afficher dans node-article.tpl.php. Mais je ne peux pas trop t'aider davantage sur D6...