Hallo,


Ik heb een vraag over modulus.
Per 4 posts laat ik deze insluiten door een li element.

<?php
if ($countpackage%4 == 0) {
    if ($countpackage != 0){
        echo '</li>';
    }
    echo '<li class="blog_package">';
}
?>



Voor de opmaak wil ik graag aan het laatste gemaakte li element een class toevoegen.
Hoe kan ik binnen modulus het laatste element krijgen?

Gr. Jop
Hi Ariën,


Heb het inderdaad zo gedaan :-) bedankt voor de tip.

Gr. Jop
- Ariën - op 14/11/2019 12:40:48
Layout zijn niet echt dingen die je door PHP moet laten doen.

PHP is juist bij uitstek geschikt voor dynamische content, maar als er een simpelere oplossing is waarbij PHP niet nodig is (volledig in CSS) dan verdient dat natuurlijk de voorkeur.

Als je dan toch aangewezen bent op PHP voor het genereren van HTML en zoiets gebruikt:
<?php
if ($countpackage%4 == 0) {
    if ($countpackage != 0){
        echo '</li>';
    }
    echo '<li class="blog_package">';
}
?>

Dan is het ook zaak dat je goed rekening houdt met randgevallen. Wat als het totaal aantal items een veelvoud is van 4? Dan heb je een li-openings tag zonder een sluitingstag. En daarmee een syntactisch ongeldig HTML-document.

Het kan handig zijn om bij te houden of een tag geopend is door het bijhouden van een Boolse waarde (true of false) maar ik heb geen idee hoe de rest van je code er uit ziet dus ik weet ook niet of en waar dat ingepast zou moeten worden. Deze waarde inspecteer je dan nadat je je lijst met items bent afgelopen en kijk je of je alsnog een tag moet sluiten.
Hi Thomas,

Dit is de loop

<?php
$weblogloop = new WP_Query( $args );
	$countid        = 1;
	$countpackage	= 0;
	while ( $weblogloop->have_posts() ) : $weblogloop->the_post();
		if ($countpackage%4 == 0) {
        	if ($countpackage != 0){
            	echo '</li>';
            }
            	echo '<li class="blog_package">';
		}
?>
						<div class="blogs_page blogid-<?php echo $countid;?>">
							<a href="<?php the_permalink(); ?>">
								<h1><?php echo the_title(); ?></h1>
								<?php the_excerpt(); ?>	
							</a>
						</div>
<?php
	$countid ++;
	$countpackage ++;
	endwhile;	
	wp_reset_query(); 
?>
$count en $countpackage verschillen 1, dus je zou dit kunnen vereenvoudigen tot:
<?php
$weblogloop = new WP_Query($args);
$count = 1;
$tagOpen = false;
while ($weblogloop->have_posts()):
    $weblogloop->the_post();
    if ($count % 4 == 0) {
        if ($count > 0) { // impliceert $tagOpen === true
            ?></li><?php
            $tagOpen = false;
        }
        ?><li class="blog_package"><?php
        $tagOpen = true;
    }
    ?><div class="blogs_page blogid-<?php echo ($count + 1); ?>">
        <a href="<?php the_permalink(); ?>"><h1><?php echo the_title(); ?></h1><?php the_excerpt(); ?></a>
    </div><?php
    $count++;
endwhile;
if ($tagOpen) {
    ?></li><?php
}
wp_reset_query();
?>

Als je e.e.a. wat anders inspringt dan leest dit ook wat prettiger ;).

Reageren