Wsparcie » Zaawansowane » Wyświetlanie własnego kodu php w pętli

  • Rozwiązano oliver87

    (@oliver87)


    Witam.

    Zasięgnąłem wątku na wp.org odnośnie wstawiania własnego kodu w pętli np pomiędzy 2, a 3 wpisem.

    link do tematu

    Oto kod umożliwiający wyświetlenie własnej składni w pętli

    <?php $postnum++; if($postnum%5 == 0) { ?>
    YOUR AD CODE HERE
    <?php } ?>

    Działa on super, z tym, że kod został napisany tak, że wyświetla własną składnię co każde 5 czy 10 wpisów. Chciałbym zadeklarować aby własna składnia była wyświetlana zawsze na 4 pozycji. Niestety moja znajomość php jest równa 0 i niestety nie potrafię zmodyfikować tego fragmentu.

    Ten kawałeczek kodu jest o tyle fajny, że zastępuje w zupełności wtyczkę Adsense Extreme, która jako chyba jedyna umożliwia wyświetlanie np skryptu Google pomiędzy wpisami.

Viewing 6 replies - 1 through 6 (of 6 total)
  • Thread Starter oliver87

    (@oliver87)

    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.

    Thread Starter oliver87

    (@oliver87)

    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.

    Thread Starter oliver87

    (@oliver87)

    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ę.

    Thread Starter oliver87

    (@oliver87)

    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.

Viewing 6 replies - 1 through 6 (of 6 total)
  • Temat ‘Wyświetlanie własnego kodu php w pętli’ jest zamknięty na nowe odpowiedzi.