14 Stimmen

Smarty - foreach-Schleife 10 Mal und Stopp

Ich verwende den folgenden Smarty-Code:

{foreach from=$entries key=i item=topic}
  {if $topic.topic_style == question}
    <li>
      <a href="topic.php?id={$topic.id}">{$topic.title}</a>
    </li>
  {/if}
{/foreach}

Wie kann ich {foreach} maximal 10 Mal ausführen und dann aufhören?

1voto

Joe Okatch Punkte 551

All das hat bis zu einem gewissen Grad funktioniert, aber nicht genau so, wie ich es wollte. Hier ist, was für mich gearbeitet. Ich habe grundsätzlich die Index-Eigenschaft von foreach verwendet

{foreach $products as $product}
{if $product@index eq 3}
    {break}
{/if}
<img src="..products/{$product.product_image}" alt="">

{/foreach}

0voto

Divion D Punkte 3

Kleine Erweiterung in smarty, um foreach zu begrenzen.

In der Datei : sysplugins/smarty_internal_compile_foreach.php

Hinzufügen einer Grenze zu den ursprünglichen Attributen :

public $optional_attributes = array('name', 'key','limit'); 

Hinzufügen nach $output = "<?php "; dies >

if (isset($_attr['limit'])) {
    $limit = $_attr['limit'];
    $output .= "\n \$_limitCnt = 0; \n \$_limit = $limit; \n";
}

Vorher hinzufügen $output .= "?>"; dies >

if (isset($_attr['limit'])) {
     $output .= "\n if (\$_limitCnt == \$_limit) { break; }";
     $output .= "\n \$_limitCnt++;";
}

Verwenden Sie wie üblich für jedes und fügen Sie limit=# hinzu, um Ihre Ergebnisse einzuschränken.

Ich hoffe, ich konnte helfen.

0voto

CodingInTheUK Punkte 874

Smarty 3 bietet eine weitere Option, und wenn es möglich ist, wäre ein Upgrade ratsam. Wenn das nicht möglich ist, sollten Sie mit dem Entwickler Ihrer Anwendung sprechen.

{foreach $result_set as $result}
    {if $result@iteration lte 10}
        // just as in php both forms of access are available.
        {$result.assoc_key}
        {$result.0}
    {/if}
{/foreach}

Es ist auch erwähnenswert, dass Smarty 3 {break} auch eingebaut hat. Allerdings, wenn Sie brechen aus der foreach-Schleife vor dem Ende und im Wesentlichen die verbleibenden Daten zu verwerfen, dann möchten Sie vielleicht zu prüfen, ob seine möglich, Ihre Sql-Abfragen zu begrenzen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X