it-swarm.asia

جارٍ عرض عناصر theme_item_list

توفر الوحدة الخاصة بي كتلة بسيطة تحتاج إلى احتواء قائمة غير مرتبة مع بعض الصور. من دالة كتلة ، أعيد مصفوفة قابلة للعرض:

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

أرغب في الحصول على بعض = صفائف قابلة للعرض كعناصر في قائمة العناصر ، ولكن يبدو أنني غير قادر على إدراج أي صفائف في الصفيف #items.

واجهة برمجة تطبيقات دروبال 7 theme_item_list المستندات تقول:

العناصر: مجموعة من العناصر لعرضها في القائمة. إذا كان العنصر عبارة عن سلسلة ، يتم استخدامه كما هو. إذا كان العنصر عبارة عن صفيف ، فسيتم استخدام عنصر "البيانات" للصفيف كمحتويات عنصر القائمة. إذا كان العنصر عبارة عن صفيف يحتوي على عنصر "الأطفال" ، يتم عرض هؤلاء الأطفال في قائمة متداخلة. يتم التعامل مع جميع العناصر الأخرى كسمات لعنصر عنصر القائمة.

لقد حاولت استخدام كل من عنصري "البيانات" و "الأطفال" ، لكني أحصل على إما عناصر <li> فارغة أو هناك كلمة Array داخلها.

ما هي الطريقة الصحيحة للقيام بذلك؟ هل theme_item_list هو الحل الصحيح/المحدث؟

8
Dominik Stożek

شيء من هذا القبيل:

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

لقد واجهت نفس المشكلة بالضبط. من ما يمكنني أن أقول قراءة التعليمات البرمجية المصدر ل theme_item_list() لا يمكن استخدام صفائف قابلة للعرض كعناصر للقائمة. انتهى بي الأمر بتمرير الصفيف القابل للعرض مع جميع الصور إلى وظيفة السمة الخاصة بي لإخراج القائمة. يمكنك بشكل أساسي أخذ الشفرة الحالية الخاصة بك وتغيير خاصية #theme إلى وظيفة السمة المخصصة الخاصة بك وإضافة المصفوفات القابلة للعرض كأطفال في صفيف list الخاص بك. لتسهيل وظيفتك ، يمكنك إضافة علامتي <li> و </li> كـ #prefix و #suffix على التوالي إلى صفائف عرض الصور واستدعاء drupal_render_children() على الصفيف ، ثم لفه في <ul> وحسن.

4
SoftArtisans

أنا أستخدم التعليمات البرمجية التالية وهي القائمة بعد مكالمة ajax

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

الاختلاف الرئيسي هو "#" ، إذا قرأت كود الوظيفة على وظيفة وظيفة Drupal API theme_item_list ، سترى أنه لا توجد تجزئات للمتغيرات

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