Мой модуль предоставляет простой блок, который должен содержать неупорядоченный список с некоторыми изображениями. Из функции блока я возвращаю рендеринг массив:
$block['content'] = array(
'list' => array(
'#theme' => 'item_list',
'#type' => 'ul',
'#attributes' => array('class' => 'foo1'),
'#items' => array(
/* ... what should go here? */
),
),
);
Я хотел бы иметь несколько отображаемых массивов в качестве элементов в списке элементов, но мне кажется, что я не могу вставить какие-либо массивы в #items
массив.
В Drupal 7 theme_item_list API Docs говорит:
items: массив элементов для отображения в списке. Если элемент является строкой, то он используется как есть. Если элемент является массивом, то элемент «массив» данных используется в качестве содержимого элемента списка. Если элемент является массивом с элементом «children», эти дочерние элементы отображаются во вложенном списке. Все остальные элементы рассматриваются как атрибуты элемента элемента списка.
Я пытался использовать элементы «data» и «children», но я получаю либо пустые элементы, либо внутри них <li>
есть слово Array
.
Как правильно это сделать? Является ли theme_item_list правильным / актуальным решением?
'#items' => array('data' => 'my data')
кажется, на самом деле ничего не делает больше, чем'#items' => 'my data'
(посмотрите на код для theme_item_list ).'children'
используется специально для создания вложенного списка. Я не уверен, почему это настроено так.Ответы:
Что-то вроде этого:
источник
Я столкнулся с этой же проблемой. Из того, что я могу сказать, читая исходный код,
theme_item_list()
он не может использовать рендеринг массивов в качестве элементов списка. В итоге я передал рендеринг-массив со всеми изображениями в свою собственную функцию темы для вывода списка. Вы можете взять свой текущий код и изменить#theme
свойство на свою пользовательскую функцию темы и добавить свои рендерируемые массивы как дочерние элементы вашегоlist
массива. Для того, чтобы ваша функция проще, вы можете добавить<li>
и</li>
теги , как#prefix
и ,#suffix
соответственно , к изображению визуализации массивов и вызовdrupal_render_children()
в массиве, то вы просто обернуть его в<ul>
и ваше благо.источник
Я использую следующий код, и он отображает список после вызова AJAX
Основным отличием является "#", если вы прочитаете код функции в функции API Drupal theme_item_list , вы увидите, что для переменных нет хэшей
источник