2016-05-12 11 views
1

Ich mache einige Änderungen an einem Online-Shop, der OpenCart 2.2 ausführt. Wenn Sie unter den Kategorien auf der linken Seite suchen, gibt es 2 Karussells, die verschiedene Aktionen anzeigen. Ich möchte es ändern, dass vor dem zweiten Karussell ein Beschreibungstext ist. Um das zu tun, sollte ich die Vorlagendatei bearbeiten. Und hier ist, wo ich verloren gehen .. Dies ist der Code in der Template-Datei:PHP: Foreach mit "if-else" Anweisung

<div id="banner<?php echo $module; ?>" class="owl-carousel"> 
    <?php foreach ($banners as $banner) { ?> 
    <div class="item"> 
    <?php if ($banner['link']) { ?> 
    <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" /></a> 
    <?php } else { ?> 
    <img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" /> 
    <?php } ?> 
    </div> 
    <?php } ?> 
</div> 

Von mir im Browser-Inspektoren zu sehen und in meinem Fall, dieser Code erzeugt zwei Banner mit der ids - „banner0“ und "banner1". Der Beschreibungstext sollte oben im Code (rechts davor) stehen. Wenn ich einen einfachen Absatz verwende, wird er zweimal angezeigt - über jedem Banner. Wie soll ich ihn ändern, so dass er den Absatz nur über dem zweiten Banner (id - banner1) anzeigt? Ich habe über eine if-else-Anweisung nachgedacht, aber ich bin mir nicht sicher, ob das funktionieren wird ... Könnte jemand ein bisschen helfen? Mein Wissen in PHP ist nicht viel ...: S

Vielen Dank im Voraus!

Mit freundlichen Grüßen, Tsvetko Krastev

Antwort

1

Wenn ich den Code richtig, $module ist 0/1 (wenn Ids Werte erhalten banner0 und banner1), dann sollte diese Arbeit:

<div id="banner<?php echo $module; ?>" class="owl-carousel"> 
    <?php foreach ($banners as $banner) { ?> 
     <?php if ($module == "1") { ?> 
      <p>Your description</p> 
     <?php } ?> 
    <div class="item"> 
     <?php if ($banner['link']) { ?> 
      <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" /></a> 
     <?php } else { ?> 
      <img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" /> 
     <?php } ?> 
    </div> 
<?php } ?> 
</div> 
1

Sie dann Ich muss wissen, dass dies das zweite Mal in der foreach-Schleife ist. So ändern Sie die foreach den Index so zu schließen, und fügen Sie einen Test in der Schleife für $i == 1

<div id="banner<?php echo $module; ?>" class="owl-carousel"> 

    <?php //foreach ($banners as $banner) { 
     foreach ($banners as $i => $banner) { 
    ?> 


    <div class="item"> 

    <?php if ($banner['link']) { 
     if ($i == 1) { 
      echo 'YOUR HTML CONTAINING SOME TEXT HERE'; 
     } 
    ?> 
    <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" /></a> 
    <?php } else { ?> 
    <img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" /> 
    <?php } ?> 
    </div> 
    <?php } ?> 
</div> 
0

Danke so sehr guys !!! Versucht beide Versionen und sie werfen einen Fehler, aber näherem Hinsehen in den Code und sowohl Ihre Lösungen, kam ich mit auf den Punkt:

<div id="desc<?php echo $module; ?>"> 
    <?php if ($module == 1) { ?> 
     <p>Description</p> 
    <?php } ?> 
<div id="banner<?php echo $module; ?>" class="owl-carousel"> 
    <?php foreach ($banners as $banner) { ?> 
    <div class="item"> 
    <?php if ($banner['link']) { ?> 
    <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" /></a> 
    <?php } else { ?> 
    <img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" /> 
    <?php } ?> 
    </div> 
    <?php } ?> 
</div> 
</div> 

Vielen Dank noch einmal für die schnellen Antworten und Hilfe! :): 3

Mit freundlichen Grüßen, Tsvetko Krastev