web-gelistirme-sc.com

Theme_item_list öğeleri oluşturma

Modülüm, bazı görüntülerde sırasız bir liste içermesi gereken basit bir blok sağlar. Bir blok işlevinden, okunabilir bir dizi döndürüyorum:

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

Öğe listesinde öğeler olarak bazı yenilenebilir diziler almak istiyorum, ancak #items dizi.

Drupal 7 theme_item_list API dokümanlar şöyle diyor:

items: Listede görüntülenecek bir dizi öğe. Bir öğe bir dizeyse, olduğu gibi kullanılır. Bir öğe bir diziyse, dizinin "data" öğesi liste öğesinin içeriği olarak kullanılır. Bir öğe "alt" öğeye sahip bir diziyse, bu alt öğeler iç içe bir listede görüntülenir. Diğer tüm öğeler, liste öğesi öğesinin öznitelikleri olarak kabul edilir.

Hem "veri" hem de "alt" öğelerini kullanmayı denedim, ancak her ikisini de boş buluyorum <li> 's veya içinde bir Word Array var.

Bunu yapmanın uygun yolu nedir? theme_item_list doğru/güncel çözüm müdür?

8
Dominik Stożek

Bunun gibi bir şey:

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

Ben de aynı problemle karşılaştım. theme_item_list() için kaynak kodunu okuyarak söyleyebileceğimden, liste için yenilenebilir dizileri kullanamazsınız. Listenin çıktısını almak için tüm temalarla birlikte okunabilir diziyi kendi tema fonksiyonuma geçtim. Temel olarak mevcut kodunuzu alıp #theme Özelliğini özel tema işlevinize değiştirebilir ve yenilenebilir dizilerinizi list dizinizin alt öğeleri olarak ekleyebilirsiniz. İşlevinizi kolaylaştırmak için <li> Ve </li> Etiketlerini sırasıyla #prefix Ve #suffix Olarak resim oluşturma dizilerinize ekleyebilir ve drupal_render_children() değerini seçerseniz, onu bir <ul>.

4
SoftArtisans

Aşağıdaki kodu kullanıyorum ve ajax çağrısından sonra listeyi oluşturuyor

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

ana fark "#" dır, eğer işlevin kodunu Drupal API işlevi theme_item_list adresinde okursanız, değişkenler için karma olmadığını görürsünüz.

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