2016-05-17 5 views
0

Ich wollte den DRY Ansatz in meinem Code machen, aber es fällt mir schwer, es herauszufinden. Und außerdem möchte ich den gesamten Code verstecken, wenn es keine image_1 gibt. Hoffe, du könntest mir helfen, den Trick zu machen.Wie man einen php Code wiederholt?

Hier ist der Code

<div class="col-md-4"> 
    <?php 
    $image = get_field('image_1'); 
    if(get_field('image_1')) 
    { 
     echo '<a href="' . get_field('image_link_1') . '">';?> 
     <img src="<?php echo $image['url']; ?>" title="<?php echo $image['title']; ?>" alt="<?php echo $image['alt']; ?>" /> 
     <?php echo '</a>'; 
    } else { 
     echo '<img src="http://localhost/image.png">'; 
    } ?> 
</div> 
<div class="col-md-4"> 
    <?php 
    $image = get_field('image_2'); 
    if(get_field('image_2')) 
    { 
     echo '<a href="' . get_field('image_link_2') . '">';?> 
     <img src="<?php echo $image['url']; ?>" title="<?php echo $image['title']; ?>" alt="<?php echo $image['alt']; ?>" /> 
     <?php echo '</a>'; 
    } else { 
     echo '<img src="http://localhost/image.png">'; 
    } ?> 
</div> 
<div class="col-md-4"> 
    <?php 
    $image = get_field('image_3'); 
    if(get_field('image_3')) 
    { 
     echo '<a href="' . get_field('image_link_3') . '">';?> 
     <img src="<?php echo $image['url']; ?>" title="<?php echo $image['title']; ?>" alt="<?php echo $image['alt']; ?>" /> 
     <?php echo '</a>'; 
    } else { 
     echo '<img src="http://localhost/image.png">'; 
    } ?> 
</div> 
+4

Und was genau ist Ihr Problem? – jmattheis

+0

@JannisMattheis Ich möchte den Code loopen. –

+0

Wie Jannis sagt, ist es großartig, dass du schon einige Zeit damit verbracht hast, es herauszufinden! Wenn Sie uns zeigen, wie weit Sie gekommen sind, können wir Ihre Frage beantworten, was Sie anders machen sollten! – stuXnet

Antwort

0

Nur ein Hauch ...:

<?php 
    for ($i = 0; $i < 3; $i++) { 
    echo "<div class='col-md-4'>" . "\n"; 
    $image = get_field("image_" . ($i + 1)); 
    ... 
    echo "</div>" . "\n"; 
    } 
?> 
2

Sie sollten auf Arrays setzen Unterschiede und dann wickeln alles in for Schleife:

<?php 
    $images = array('image_1', 'image_2', 'image_3'); 
    $links = array('image_link_1', 'image_link_2', 'image_link_3'); 

    for($i=0; $i<3; $i++){ 
?> 
<div class="col-md-4"> 
    <?php 
    $image = get_field($images[$i]); 
    if(get_field($images[$i])){ 
     echo '<a href="' . get_field($links[$i]) . '">'; 
    ?> 
    <img src="<?php echo $image['url']; ?>" title="<?php echo $image['title']; ?>" alt="<?php echo $image['alt']; ?>" /> 
    <?php echo '</a>'; 
    } else { 
     echo '<img src="http://localhost/image.png">'; 
    } 
    ?> 
</div> 
<?php 
    } 
?> 
+0

Das hat den Trick! Danke für die Hilfe. Prost! : D –

+0

Btw, wie kann ich es verstecken, wenn kein 'image_1' hochgeladen wird? –

+0

@RubyAnnRosales Ich kann an mehrere Lösungen denken, aber die einfachste ist wahrscheinlich zu ändern "für" Bedingung zu: 'für ($ i = 0; $ images [0] & & $i<3; $ i ++)' – cdm

0

Etwas In diesem Sinne solltest du anfangen, wenn ich dich richtig verstehe:

<?php for ($q = 1; $q <= 3; $q++) { 
    $image_loop = 'image_' . $q; 

    echo '<div class="col-md-4">'; 

    if ($image = get_field($image_loop)) { 
     echo '<a href="' . get_field('image_link_' . $q) . '">'; 
?> 
     <img src="<?php echo $image['url']; ?>" title="<?php echo $image['title']; ?>" alt="<?php echo $image['alt']; ?>" /> 
     <?php echo '</a>'; 
    } else { 
     echo '<img src="http://localhost/image.png">'; 
    } ?> 
</div> 

<?php } // end loop ?> 
+0

Danke für den Code. Es funktioniert wie Magie. Prost :) –

+0

Aber wie kann ich es verstecken, wenn kein 'image_1' hochgeladen wird? –

+0

Das ist als Übung für Sie übrig. Stackoverflow ist kein Platz, um Ihren Code für Sie zu schreiben! Tipp: Testen Sie vielleicht vor der for-Schleife nach image_1. –

0

Die anderen Vorschläge hier wird auch funktionieren, aber hier ist es, was ich tun würde:

Zuerst die Bilder in einem assoziativen Array ordnen mit den Tasten der Bildname sein und Werte, um den Zusammenhang Bild und dann iterieren über eine foreach-Schleife.

Ich versuche im Allgemeinen, HTML nicht zu echoten, es sei denn unbedingt notwendig.

<?php 
$array = [ 
    "image_1" => "image_link_1", 
    "image_2" => "image_link_2", 
    "image_3" => "image_link_3", 
    "image_4" => "image_link_4" 
]; 

foreach ($array as $name => $link): 
    $image = get_field($name); 
    if ($image): ?> 
    <div class="col-md-4"> 
     <a href="<?=get_field($link)?>"> 
      <img src="<?= $image['url']; ?>" title="<?= $image['title']; ?>" alt="<?= $image['alt']; ?>" />   
     </a> 
     <?php else: ?> 
      <img src="http://localhost/image.png"> 
     <?php endif; ?> 
    </div> 
<?php endforeach; ?> 
Verwandte Themen