Submitted by erike on
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
Il y a plusieurs facon de
Permalien Soumis par ineation le 6 Janvier, 2009 - 12:44
Il y a plusieurs facon de faire.
Mais avant d'ou vient le contenu de ton block ? C'est un noeud, une vue, un module en particulier ?
Alors les infos proviennent
Permalien Soumis par erike le 6 Janvier, 2009 - 13:41
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
Si c'est une vue, tu as la
Permalien Soumis par ineation le 6 Janvier, 2009 - 13:56
Si c'est une vue, tu as la possibilité depuis l'interface de views de choisir les champs qui doivent apparaitre ainsi que l'ordre d'apparition de ces champs (display style : fields)
Ah oui j'avais pas pensé a
Permalien Soumis par erike le 6 Janvier, 2009 - 14:08
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
Permalien Soumis par ineation le 6 Janvier, 2009 - 14:14
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
Permalien Soumis par erike le 6 Janvier, 2009 - 14:32
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!
Super, c'est la beauté de
Permalien Soumis par ineation le 6 Janvier, 2009 - 15:13
Super, c'est la beauté de Drupal. Le recours au code à la mano est rarement nécessaire pour les taches courante.
Un petit [Résolu] dans le titre ?
Salut ! Je fais remonter ce
Permalien Soumis par Marvine le 27 Octobre, 2009 - 18:42
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).