Tutaj znalazłem odpowiedź 🙂
link
Ten wątek w źródle został ucięty w krytycznym miejscu.
Otóż jakiej należy dokonać modyfikacji w kodzie aby po 6 oraz po 10 wpisie wyświetlić inną składnię? Każda np z 3 składni jest całkowicie niezależne od pozostałych.
Na 4 pozycji wyświetlam sobie zdjęcie popularnego artykułu X
Na 6 pozycji wyświetlam sobie zdjęcie popularnego artykułu Y
Na 10 pozycji wyświetlam sobie zdjęcie popularnego artykułu Z
Z góry dziękuję za udział w dyskusji 🙂
dodajesz sobie po prostu kolejne warunki
np.
if($postnum % 3 == 0) { echo 'co 3'; }
if($postnum % 6 == 0) { echo 'co 6'; }
if($postnum % 8 == 0) { echo 'co 8'; }
if($postnum == 10) { echo 'przed/po 10'; }
if($postnum < 9) { echo 'dla każdego do 9'; }
itd.
U mnie wygląda to tak
...
<?php $postnum = 1; $showads = 5; ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
...
<?php if ($postnum == $showads) { ?> <a href="treść linku</a> <?php } $postnum++; ?>
<?php endwhile; else: ?>
...
Tylko, że np na kolejnych pozycjach nie będzie wyświetlana kopia lecz kompletnie inna, niezależna składnia.
Jeżeli więc dam echo np co 5 wówczas ta sama składnia będzie wyświetlana co 5 postów.
Celem jest wyświetlenie np na 3 pozycji widgetu z popularnymi wpisami, a na 5 pozycji kod z Google Adsense.
Przerobiłem to następująco na:
...
<?php $postnum = 1; $showads = 7; if ($postnum % 8 == 0); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
...
oraz przy wywołaniu przed końcem pętli
...
<?php if ($postnum == $showads) { ?> <a href="treść linku</a> <?php } $postnum++; ?>
<?php if ($postnum % 8 == 0) { ?> <a href="treść linku</a> <?php } $postnum++; ?>
<?php endwhile; else: ?>
...
Teraz mam faktycznie 2 różne składnie. Z tym, że
pierwsza z nich wyświetla się prawidłowo, dlatego, że ukazuje się tylko raz na określonej pozycji, natomiast druga składnia zlicza posty i pokazuje się co ilość zadeklarowanych wpisów w kodzie.
Dałem radę w 95%
problem jest, że owszem różne składnie wyświetlają się lecz nie na tych pozycjach co trzeba – coś nie tak ze zliczaniem jest
...
<?php $postnum = 1; $showads = 3; ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
...
i pod koniec pętli
...
<?php if ($postnum == $showads) { ?> <a href=własna treść</a> <?php } $postnum++; ?>
<?php if ($postnum == 10) { ?> <a href=własna treść</a> <?php } $postnum++; ?>
<?php endwhile; else: ?>
...
Kłopot jest tego typu że pierwsza pętla wyświetla się po 3 wpisie tylko wtedy kiedy jest zadeklarowana jako jedyna w pętli.
Jak dokładam drugią skłądnię to pierwsza treśc wyświetla się po 2 pisach czyli na 3 pozycji (o jedno oczko wyżej)
A druga treść ($postnum == 10) wyświetla się na 7 pozycji od góry wliczając poprzednią składnię.
Chyba rozwiązałem sprawę 🙂
przed pętlą:
<?php $postnum = 1;?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
…
pod koniec pętli:
<?php if($postnum == 3) { ?> <własna treść> <?php } $postnum++; ?>
<?php if($postnum == 6) { ?> <własna treść> <?php } $postnum++; ?>
<?php endwhile; else: ?>
I teraz działa tak jak powinno działać czyli:
Na 3 pozycji ukazuje się własna składnia
Na 6 pozycji ukazuje się własna składnia niezależna od tej z pozycji 3
Bardzo dziękuję za pomoc w składni. Trochę pokombinowałem (przekleiłem odpowiednio) i działa 🙂 Dziękuję ślicznie 🙂
Inkrementacja licznika powinna być tylko raz, przed samym końcem pętli …a nie w warunkach.
<?php $postnum = 1; ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
...
<?php if($postnum == 3) { ?> <własna treść> <?php } ?>
<?php if($postnum == 6) { ?> <własna treść> <?php } ?>
<?php $postnum++; ?>
<?php endwhile; else: ?>
Szczerze polecam lekturę jakiegoś kursu php, bo widzę spore braki w podstawach.