it-swarm-id.com

Merender item item_list tema

Modul saya menyediakan blok sederhana yang perlu berisi daftar tidak terurut dengan beberapa gambar. Dari fungsi blok, saya mengembalikan array yang dapat diulang:

$block['content'] = array(
    'list' => array(
        '#theme' => 'item_list',
        '#type' => 'ul',
        '#attributes' => array('class' => 'foo1'),
        '#items' => array(
          /* ...  what should go here? */
        ),
    ),
);

Saya ingin memiliki beberapa array yang dapat di render sebagai item dalam daftar item, tetapi saya tampaknya tidak dapat memasukkan array apa pun ke dalam #items Himpunan.

The Drupal 7 theme_item_list API docs mengatakan:

item: Array item yang akan ditampilkan dalam daftar. Jika item adalah string, maka item itu digunakan apa adanya. Jika item adalah array, maka elemen "data" dari array digunakan sebagai konten dari item daftar. Jika item adalah array dengan elemen "anak-anak", anak-anak tersebut ditampilkan dalam daftar bersarang. Semua elemen lain diperlakukan sebagai atribut elemen item daftar.

Saya mencoba menggunakan elemen "data" dan "anak-anak", tetapi saya mendapatkan keduanya <li> atau ada Word Array di dalamnya.

Apa cara yang tepat untuk melakukan ini? Apakah theme_item_list solusi yang tepat/terbaru?

8
Dominik Stożek

Sesuatu seperti ini:

foreach ($images as $image) {

  // New array for readability
  $options = array(
    'path' => $image->url,
    'alt' => $image->alt,
  );

  // Push the image tag onto the items array
  $block['content']['list']['#items'][] = theme('image', $options);
}
5
Bart

Saya mengalami masalah yang sama persis ini. Dari apa yang saya tahu membaca kode sumber untuk theme_item_list() tidak dapat menggunakan array yang dapat diurai sebagai item untuk daftar. Saya akhirnya melewati array yang dapat diulang dengan semua gambar ke fungsi tema saya sendiri untuk menampilkan daftar. Anda pada dasarnya dapat mengambil kode Anda saat ini dan mengubah properti #theme Ke fungsi tema khusus Anda dan menambahkan array yang dapat Anda render sebagai anak-anak dari array list Anda. Untuk membuat fungsi Anda lebih mudah, Anda dapat menambahkan tag <li> Dan </li> Sebagai #prefix Dan #suffix Masing-masing ke array render gambar Anda dan panggil drupal_render_children() pada array Anda, maka Anda cukup membungkusnya dalam <ul> dan barang Anda.

4
SoftArtisans

Saya menggunakan kode berikut dan membuat daftar setelah panggilan ajax

$test = array("type"=>"ol","items"=>array('data'=>'1'),'attributes'=>array());
$commands[] = ajax_command_replace('#item-'.$ot->nid,theme_item_list($test));

perbedaan utama adalah "#", jika Anda membaca kode fungsi di fungsi Drupal API theme_item_list , Anda akan melihat tidak ada hash untuk variabel

    function theme_item_list($variables) {
        $items = $variables ['items'];
        $title = $variables ['title'];
        $type = $variables ['type'];
        $attributes = $variables ['attributes'];
    ... }
0
user49593