سؤال

ولدي صفحة فب التي تنتج مجموعة واسعة من العناصر. من أجل البساطة دعنا نقول أنه يحتوي على أرقام 1-5 في الترتيب العددي. هذه الأرقام يجب أن تكون على قدم المساواة (أو أقرب إلى المساواة ممكن) تنقسم إلى عمودين (باستخدام جدول أتش تي أم أل) مثل ذلك:

1   4
2   5
3

وعدد الأعمدة قد يتغير في المستقبل. لأن هذا هو التغيير على مستوى العرض وأفترض أنه ينبغي أن يكون الشيء الذي لا يمكن أن يتحقق عن طريق إجراء تغييرات حصرا في ملف القالب. الأمر الذي يوحي لي أنه هندى التي ينبغي التعامل مع تقسيم العناصر إلى أعمدة.

هل هناك وسيلة لتحقيق ذلك مع هندى (وكيف) أو ينبغي أن ندع ملف فب القيام بكل عمل؟

هل كانت مفيدة؟

المحلول

ومن الممكن أن تفعل ذلك في هندى، ولكن منذ HTML و CSS لا يملك في الواقع دعما للأعمدة انها الألم القيام به. وهو ينطوي على معرفة عدد العناصر هناك في مجموعة واستخدام {قسم} علامات أولا للاستيلاء على النصف الأول (تقريب) من العناصر، وعرضها في عمود واحد، وبعد ذلك {قسم} منفصل للاستيلاء على الثانية نصف (تقريب) من العناصر ووضعها في العمود الثاني.

ل{قسم} يمكنك تحديد أي مؤشر مجموعة لبدء في وكم العناصر التي تريد. إذا قمت بتعيين عدد من العناصر في مجموعة كما متغير آخر، يمكنك حساب هذا فقط.

هل يمكن أن تحاول كود مثل هذا - ولكن أخشى أنا لم تختبر تلك الحسابات لذلك قد يكون من الخطأ ...

<td>
  {section name=myitem loop=$items max=(($itemcount/2)+0.499)}
    {$items[myitem]}
  {/section}
</td>
<td>
  {section name=myitem loop=$items start=(($itemcount/2)+0.499)}
    {$items[myitem]}
  {/section}
</td>

نصائح أخرى

وهنا حل بي باستخدام foreach والتكرار:

<ul>
{foreach from=$items item=item name=firstFE}
            {if $smarty.foreach.firstFE.index lt ($items|@count / 2)}
               <li>{$item->title}</li>
            {/if}
{/foreach}
</ul><ul>
{foreach from=$items item=item name=secFE}
            {if $smarty.foreach.secFE.index gte ($items|@count / 2)}
               <li>{$item->title}</li>
            {/if}
{/foreach}
</ul>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top