2017-07-12 2 views
1

Ich muss Beiträge über zwei Seitenleisten verteilen. Es kann bis zu 10 Beiträge geben, aber möglicherweise weniger. Die Beiträge sind nach Datum sortiert und müssen in dieser Reihenfolge gleichmäßig auf die beiden Seitenleisten verteilt werden. (Erster Beitrag in der linken Seitenleiste, zweiter Beitrag in der rechten Seitenleiste usw.)Posts gleichmäßig über zwei Seitenleisten verteilen und für jedes Element nur ausgegeben, wenn es existiert

Momentan erhalte ich die Posts und speichere sie in einem Array. Für die linke Seitenleiste überprüfe ich alle geraden Posts (beginnend mit 0, bis 8) und gebe den Post aus, wenn er existiert. Ich mache das gleiche mit den ungeraden Posts (1 bis 9) in der rechten Seitenleiste.

Ich bin jedoch auf der Suche nach einer effizienteren Möglichkeit, dies durch Schleifen durch das Array und nur die gerade/ungerade Beiträge zu überprüfen.

Dies ist mein Code für eine Sidebar:

<?php $posts = query_posts("posts_per_page=10&cat=1340"); 

if($posts != null) { 

$ad = object_to_array($posts);?> 

<?php if($ad[1]) {?> 
    <br /> 
    <a href="<?php echo get_field('link',$ad[1]['ID']); ?>" target="_blank"> <span class="ad1" style="background-image:url('<?php echo get_featured_image_url($ad[1]["ID"],"large");?>')"></span></a> 
<?php } ?> 

<?php if($ad[3]) {?> 
<br /> 
<a href="<?php echo get_field('link',$ad[3]['ID']); ?>" target="_blank"> <span class="ad1" style="background-image:url('<?php echo get_featured_image_url($ad[3]["ID"],"large");?>')"></span></a> 
<?php } ?> 

<?php if($ad[5]) {?> 
    <br /> 
    <a href="<?php echo get_field('link',$ad[5]['ID']); ?>" target="_blank"> <span class="ad1" style="background-image:url('<?php echo get_featured_image_url($ad[5]["ID"],"large");?>')"></span></a> 
<?php } ?> 

<?php if($ad[7]) {?> 
<br /> 
<a href="<?php echo get_field('link',$ad[7]['ID']); ?>" target="_blank"> <span class="ad1" style="background-image:url('<?php echo get_featured_image_url($ad[7]["ID"],"large");?>')"></span></a> 
<?php } ?> 

<?php if($ad[9]) {?> 
<br /> 
<a href="<?php echo get_field('link',$ad[9]['ID']); ?>" target="_blank"> <span class="ad1" style="background-image:url('<?php echo get_featured_image_url($ad[9]["ID"],"large");?>')"></span></a> 
<?php } ?> 


<?php } ?> 

Dies funktioniert. Allerdings möchte ich irgendwie die geraden/ungeraden Posts durchlaufen.

Antwort

0

Eine einfache FOR-Schleife mit einem MOD-Check auf dem Index würde Ihr Problem lösen: Ihr Code zeigt nicht, wie Sie den HTML-Code links und rechts ausrichten, so werde ich den PHP-Code zum Drucken der ungeraden liefern/gerade Reihen und Sie finden es heraus den HTML-Teil. Ich fügte einen Haken hinzu, um eine CSS-Klasse für den ungeraden/geraden Code hinzuzufügen.

Also, wie Sie kommentieren Sie bereits die ungeraden und geraden divs. Duplizieren Sie einfach die oben genannten (obwohl ich immer noch meine Lösung bevorzuge, mit ein wenig Fix können Sie die Divs aus diesem Code ausgeben).

for ($i=0; $i<count($ad); $i++){ 
    if ($i%2==0){ //Even values 
     echo '<a href="' . get_field('link',$ad[$i]['ID']) . 
       '" target="_blank"> <span class="ad1" style="background-image:url(\'' . 
       get_featured_image_url($ad[$i]["ID"],"large") .'\')"></span></a>'; 
    } 
} 

Und ein anderer für

for ($i=0; $i<count($ad); $i++){ 
    if ($i%2!=0){ //odd values 
     echo '<a href="' . get_field('link',$ad[$i]['ID']) . 
       '" target="_blank"> <span class="ad1" style="background-image:url(\'' . 
       get_featured_image_url($ad[$i]["ID"],"large") .'\')"></span></a>'; 
    } 
} 
+0

Ich verwende keine CSS-Klasse, um sie auszurichten. Ich habe zwei separate 'div's mit dem Inhalt und Styling für die Sidebars. Innerhalb des "div" für die rechte Seitenleiste muss ich nur die ungeraden Posts ausgeben, und an anderer Stelle in meinem Code muss ich im "div" für die linke Seitenleiste die geraden Posts ausgeben. –

1

Vielen Dank für alle, die die Zeit in meine Frage zu suchen hat. Ich habe eine Lösung gefunden.

Dies ist, wie ich das Problem gelöst:

Für die linke Seite, verwende ich die folgende Schleife, die nur die geraden Beiträge Schleifen durch und prüft, ob sie existieren vor der Ausgabe:

<?php for($i=0; $i<10; $i++) { if(($ad[$i]) && ($i%2 == 0)) {?> 
    <br /> 
    <a href="<?php echo get_field('link',$ad[$i]['ID']); ?>" target="_blank"> <span class="ad1" style="background-image:url('<?php echo get_featured_image_url($ad[$i]["ID"],"large");?>')"></span></a> 
<?php } } } ?> 

Und für die rechte Seite mache ich das selbe mit $1%2 == 1 zu prüfen, und nur die ungeraden Posts auszugeben.

Verwandte Themen