Afficher un bloc entre le contenu et les commentaires

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

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 !

Version de Drupal : 

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 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 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 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 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 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.

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 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.

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...