توفر الوحدة الخاصة بي كتلة بسيطة تحتاج إلى احتواء قائمة غير مرتبة مع بعض الصور. من دالة كتلة ، أعيد مصفوفة قابلة للعرض:
$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 هو الحل الصحيح/المحدث؟
شيء من هذا القبيل:
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);
}
لقد واجهت نفس المشكلة بالضبط. من ما يمكنني أن أقول قراءة التعليمات البرمجية المصدر ل theme_item_list()
لا يمكن استخدام صفائف قابلة للعرض كعناصر للقائمة. انتهى بي الأمر بتمرير الصفيف القابل للعرض مع جميع الصور إلى وظيفة السمة الخاصة بي لإخراج القائمة. يمكنك بشكل أساسي أخذ الشفرة الحالية الخاصة بك وتغيير خاصية #theme
إلى وظيفة السمة المخصصة الخاصة بك وإضافة المصفوفات القابلة للعرض كأطفال في صفيف list
الخاص بك. لتسهيل وظيفتك ، يمكنك إضافة علامتي <li>
و </li>
كـ #prefix
و #suffix
على التوالي إلى صفائف عرض الصور واستدعاء drupal_render_children()
على الصفيف ، ثم لفه في <ul>
وحسن.
أنا أستخدم التعليمات البرمجية التالية وهي القائمة بعد مكالمة 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'];
... }