[Résolu] $block->content

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,
Je cherche a modifier le contenu de la variable $block->content utilisé dans "block.tpl.php" mais impossible de trouver ou est créée cette variable...
La solution que j'ai envisagé serait de faire un explode de cette variable pour récupérer les différents éléments html mais ca ne me parait pas idéal.
L'idée étant par exemple de mettre un lien autour de l'image ou encore de changer les éléments de place (image en premier puis le titre, puis contenu, etc.) ou encore supprimer certains éléments (pour le moment j'utilise les css avec des regles en display:none)
Quelqu'un saurait il comment faire cela?
Merci d'avance pour votre aide!
Eric

Version de Drupal : 

Alors les infos proviennent d'une vue "générée" (provides as) en bloc. Ce meme bloc est configuré pour utilisé le module "block theme", j'ai donc un fichier block-x.tpl.php qui contient :

<div id="block-<?php print $block->module .'-'. $block->delta; ?>" class="block-x">

<?php if ($block->subject): ?>
  <h2><?php print $block->subject ?></h2>
<?php endif;?>

  <div><?php print $block->content ?></div>
</div>

J'ai pour le moment simplement rajouté la class "block-x" pour pouvoir masquer comme je le disais certains champs en css. Et je veux modifier cette fameuse variable $block->content.

Voilà j'espère avoir été clair :)

Merci de ton aide en tout cas !
Eric

Ah oui j'avais pas pensé a ca ! merci
Mais ca reste quand même limité, notamment si je veux rajouter un lien autour d'un champ image, ou encore supprimé les informations "soumis par XXX" etc. ou encore si je ne veux qu'afficher un certain champ et pas du tout le champ body (qui lui n'apparait pas dans l'onglet display fields)
N'y a t-il aucune maniere d'agir au niveau du code pour sélectionner les champs que l'on veut au niveau du fichier .tpl.php ? je trouve ca etrange que drupal ne donne pas ce choix et force à utiliser que cette variable content :/

Non c'est possible de récupérer le contenu de l'array. Tu peux utiliser la fonction template_preprocess_node pour calculer des variables avant l'affichage du bloc et les rendres disponibles à block.tpl.php.

Mon propos c'est que normalement avec views tu choisis uniquement les champs que tu veux afficher, pour un champ image tu peux le lier au lien du contenu en question (ou de l'image), tu n'affiches pas le "soumis par"...

Yes ! Merci en fait je regardais pas au bon endroit, je viens de trouver la catégorie "fields" dans la vue.
Ca fonctionne a merveille, il me reste encore a trouver comment placer le lien sur mon champ image mais ca devrait aller je pense^^
Merci pour ton aide!

Salut !

Je fais remonter ce topic résolu car j'aimerais :

"utiliser la fonction template_preprocess_node pour calculer des variables avant l'affichage du bloc et les rendres disponibles à block.tpl.php"

Afin de pouvoir disposer des variables qui affiche mon block en cours pour les modifier.

Je n'ai aucune idée du code à insérer dans la fonction template_preprocess_node ( ou peut-être template_preprocess_block).