Mon module fournit un bloc simple qui doit contenir une liste non ordonnée avec quelques images. À partir d'une fonction de bloc, je renvoie un tableau pouvant être rendu:
$block['content'] = array(
'list' => array(
'#theme' => 'item_list',
'#type' => 'ul',
'#attributes' => array('class' => 'foo1'),
'#items' => array(
/* ... what should go here? */
),
),
);
Je voudrais avoir des tableaux rendables en tant qu'éléments dans la liste des éléments, mais il semble que je ne puisse pas insérer de tableaux dans le #items
tableau.
La documentation de l'API theme_item_list de Drupal 7 indique:
éléments: un tableau d'éléments à afficher dans la liste. Si un élément est une chaîne, il est utilisé tel quel. Si un élément est un tableau, l'élément "data" du tableau est utilisé comme contenu de l'élément de liste. Si un élément est un tableau avec un élément "enfants", ces enfants sont affichés dans une liste imbriquée. Tous les autres éléments sont traités comme des attributs de l'élément d'élément de liste.
J'ai essayé d'utiliser à la fois les éléments "data" et "children", mais j'obtiens des vides <li>
ou il y a un mot à l' Array
intérieur.
Quelle est la bonne façon de procéder? Theme_item_list est-il la bonne solution / à jour?
'#items' => array('data' => 'my data')
ne semble pas vraiment faire plus que'#items' => 'my data'
(regardez le code de theme_item_list ).'children'
est utilisé spécifiquement pour créer une liste imbriquée. Je ne sais pas pourquoi il est configuré de cette façon.Réponses:
Quelque chose comme ça:
la source
J'ai rencontré exactement le même problème. D'après ce que je peux dire, la lecture du code source
theme_item_list()
ne peut pas utiliser de tableaux rendables comme éléments de la liste. J'ai fini par passer le tableau rendable avec toutes les images à ma propre fonction de thème pour sortir la liste. Vous pouvez essentiellement prendre votre code actuel et modifier la#theme
propriété en fonction de votre thème personnalisé et ajouter vos tableaux rendables en tant qu'enfants de votrelist
tableau. Pour rendre votre fonction plus facile, vous pouvez ajouter les balises<li>
et en</li>
tant que#prefix
et#suffix
respectivement à vos tableaux de rendu d'image et appelerdrupal_render_children()
votre tableau, puis il vous suffit de l'envelopper dans un<ul>
et votre bien.la source
J'utilise le code suivant et il rend la liste après un appel ajax
la principale différence est le "#", si vous lisez le code de la fonction sur la fonction theme_item_list de l'API Drupal , vous verrez qu'il n'y a pas de hachage pour les variables
la source