publikacja: 5 maja 2009, 23:46; autor: Szymon Skulimowski http://wpninja.pl/artykuly/wasze-pytania-zajawka-i-dalsza-czesc-wpisu-w-oddzielnych-div-ach/

Wasze pytania: Zajawka i dalsza część wpisu w oddzielnych div-ach

Wasze pytania: Zajawka i dalsza część wpisu w oddzielnych div-ach

Andrzej przesłał do mnie takie oto zapytanie:

(…) Otóż single.php dzieli mi stronę na divy (i to jest ok) ale chciałem zrobić tak by w 1-szym divie był content aż do znacznika <!--more--> a w drugim divie reszta po znaczniku.

Przy rozwiązaniu skorzystamy z dodatkowych parametrów jakie oferuje funkcja the_content(), która odpowiada za wyświetlanie treści głównej wpisu. Jej pełna składnia prezentuje się następująco:

<?php the_content('more_link_text', strip_teaser, 'more_file'); ?>

Obiektem naszych zainteresowań jest parametr strip_teaser - typ logiczny odpowiedzialny za wyświetlanie zajawki (FALSE) lub jej ukrywanie (TRUE).

Wyświetlanie zajawki i dalszej części wpisu

Dla przypomnienia, standardowe wywołanie funkcji:

<?php the_content(); ?>

da nam następujący wynik (pierwszy akapit to zajawka, drugi to dalsza część wpisu):

wasze-pytania-zajawka-i-dalsza-czesc-wpisu-w-oddzielnych-div-ach-01

Standardowe wywołanie funkcji the_content();

Wyświetlanie jedynie dalszej części wpisu, bez zajawki

Gdy funkcję wywołamy z ustawionym parametrem strip_teaser na TRUE czyli:

<?php the_content('', true, ''); ?>

to otrzymamy tylko dalszą część wpisu, bez zajawki:

wasze-pytania-zajawka-i-dalsza-czesc-wpisu-w-oddzielnych-div-ach-02

Wyświetlenie jedynie dalszej części wpisu, bez zajawki

Czyli pół zadania wykonane :-).

Wyświetlanie jedynie zajawki, bez dalszej treści wpisu

Tutaj posłużymy się rozwiązaniem, które już opisywałem a które wiązało się z ignorowaniem znacznika more przy wyświetlaniu pojedynczego wpisu czy strony.

Tak więc, wywołanie nastepującego kodu:

<?php
   global $more;
   $more = 0;
   the_content('', false, '');
   $more = 1;
?>

wyświetli jedynie zajawkę, bez dalszej części wpisu (i bez odnośnika „czytaj więcej):

wasze-pytania-zajawka-i-dalsza-czesc-wpisu-w-oddzielnych-div-ach-03

Wyświetlenie jedynie zajawki, bez dalszej części wpisu

A to druga część zadania :-).

Wyświetlenie zajawki i dalszej części wpisu w oddzielnych div-ach

Składając obie funkcje w jeden kod otrzymamy to samo co na początku z tą różnicą, że teraz możemy umieścić zajawkę i dalszą część wpisu w oddzielnych blokach:

<div style="background:#E7E7E7">
   <?php
      global $more;
      $more = 0;
      the_content('', false, '');
      $more = 1;
   ?>
</div>
 
<div style="background:#DFDFC3">
   <?php the_content('', true, ''); ?>
</div>

Czego efektem będzie:

wasze-pytania-zajawka-i-dalsza-czesc-wpisu-w-oddzielnych-div-ach-04

Wyświetlenie zajawki i dalszej części wpisu w oddzielnych div-ach

Podobał się artykuł? Dodaj kanał RSS / Atom do swojego czytnika lub zapisz się na bezpłatny newsletter i dołącz do grona stałych czytelników.

Komentarze (21)

  1. Jacek Krużycki Jacek Krużycki 1108 dni temu:

    Rewelacyjne! Już widzę jak na 90% blogach wpisy są kilkukolorowe :P

    odpowiedz
  2. Szymon Skulimowski Szymon Skulimowski 1108 dni temu:

    Może aż tak źle nie będzie :-). Właściwie to nie wiem w jaki sposób Andrzej wykorzystał takie rozwiązanie - może zademonstruje w komentarzu (?).

    odpowiedz
  3. aniec2 aniec2 1107 dni temu:

    Gdyby nie Szymon to bym musiał główkować i główkować.

    Demonstruje jak było:
    http://i8.photobucket.com/albums/a6/aniec2/1org.jpg
    Galeria znajdowała się po boku co wyglądało źle (i przy większej ilości informacji powodowało by pustkę pod gł. zdjęciem). Previous i Next były w osobnym divie i pomyślałem sobie, że można by tak podzielić wpis, że galerie dawał bym po znaczniku właśnie w divie poniżej gł. zdjęcia.

    Kod od Szymona rozwiązał mój problem i dziś całość wygląda tak:
    http://i8.photobucket.com/albums/a6/aniec2/2pozmianie.jpg

    Jeszcze raz dziękuję za szybką pomoc. Coś czuje, że teraz ludzie zaleją Cię pytaniami:)

    odpowiedz
  4. Paweł Rabinek Paweł Rabinek 1107 dni temu:

    Dzięki, od dawna szukałem jak wstawić coś między zajawkę a dalszą część - świetna robota.

    Chciałbym tylko zapytać, czy wywołanie dwa razy the_content() nie spowoduje dwukrotnego odpytania bazy danych?

    odpowiedz
  5. Szymon Skulimowski Szymon Skulimowski 1107 dni temu:

    Chciałbym tylko zapytać, czy wywołanie dwa razy the_content() nie spowoduje dwukrotnego odpytania bazy danych?

    Zmierzyłem za pomocą wbudowanej w WP funkcji get_num_queries(); i o dziwo, liczba zapytań do bazy się nie zmieniła. Nie wiem jednak na ile ta funkcja jest wiarygodna.

    odpowiedz
  6. Flanker Flanker 1107 dni temu:

    Taki mechanizm można fajnie wykorzystać na wstanienie reklamy, nie trzeba bawić się w instalowanie wtyczek ani wklejanie kodu do każdego wpisu.

    odpowiedz
  7. Flanker Flanker 1107 dni temu:

    PS. U mnie niestety to nie zadziała, wtyczka Powiązane wpisy (YARPP) wpycha się po każdym the_content();

    odpowiedz
  8. Szymon Skulimowski Szymon Skulimowski 1107 dni temu:

    PS. U mnie niestety to nie zadziała, wtyczka Powiązane wpisy (YARPP) wpycha się po każdym the_content();

    Nie znam wtyczki ale po screenach widzę, że jest tam opcja „Automatically display related posts?”. Po odznaczeniu opcji wtyczka nie będzie już pewnie automatycznie doklejała swojego kodu (trzeba będzie wywołać ją ręcznie w kodzie).

    odpowiedz
  9. Flanker Flanker 1107 dni temu:

    Ahhh aż mi wstyd, że sam tego nie zauważyłem, a ty, mimo że nie miałeś takiego obowiązku zainteresowałeś się i pomogłeś mi. Dziękuję.

    odpowiedz
  10. palmiak palmiak 1103 dni temu:

    Baza jest odpytana w innym momencie. the_content pokazuje tylko efekty wcześniejszego odpytania.

    Osobiście zamiast takiego rozwiązania mam funkcyjkę the_better_content, która bierze zajawkę w div o klasie zajawka i już. get_the content + explode + filtry i działą jak ta lala.

    odpowiedz
  11. Mariusz Mariusz 1101 dni temu:

    Witaj, świetnie i pięknie,

    tylko co zrobić gdy w tekście są też - u mnie niestety po zastosowaniu :Wyświetlenie zajawki i dalszej części wpisu w oddzielnych div-ach + przestaje działać nextpage

    odpowiedz
  12. marsjaninzmarsa marsjaninzmarsa 1099 dni temu:

    dzięki, już dawno kombinowałem jak wstawić adSense po zajawce, na pewno się przyda :)

    odpowiedz
  13. Jacek Krużycki Jacek Krużycki 1099 dni temu:

    Właaaaaśnie :D AdSense :D
    Teraz zaczną się wszelkie kombinacje :D

    odpowiedz
  14. yasc yasc 1006 dni temu:

    Hmm… O ile mi wiadomo samą zajawkę wyświetla funkcja the_excerpt();. Nie trzeba się męczyć z tym global.

    Według mnie wystarczy:

    ale mogę się mylić… :)

    odpowiedz
  15. yasc yasc 1006 dni temu:

    Ee… do powyższego komentarza doklejam kod:

    odpowiedz
  16. Robert Robert 800 dni temu:

    Witam.
    raczkuję z wordpress i na moim blogu: http://www.urana.eu niestety wyświetlane są całe artykuły. nie bardzo wiem jak zrobić żeby wyświetlał się jedynie kilku wierszowy wstęp i link „dalsza część…”

    odpowiedz
  17. Robert Robert 800 dni temu:

    zapomniałem włączyć powiadamiacza…

    odpowiedz
  18. marsjaninzmarsa marsjaninzmarsa 731 dni temu:

    @Robert: Wystarczy kliknąć na taki sympatyczny przycisk w edytorze posta, o nazwie More w tekstowym, a z ikonką podzielonej strony w wizualnym (to ten 4-ty od prawej w pierwszym rzędzie).

    Albo po prostu wpisz w edytorze tekstowym (mam nadzieję, że mi nie usunie kodu…) :)

    odpowiedz
  19. marsjaninzmarsa marsjaninzmarsa 731 dni temu:

    Usunęło. Generalnie to jest [nawias ostry]!--more[zamknięcie tegoż nawiasu]. Oczywiście zamień te [] na odpowiednie znaczniki… ;)

    odpowiedz
  20. Andrzej Andrzej 304 dni temu:

    Witam serdecznie,

    Panie Szymonie, czy mogę prosić, aby tego typu teksty, rozwiązania były pisane w taki sposób, aby zrozumiał je także laik w WP tzn. gdzie w panelu, w jakim pliku dokonujemy np. takich zmian, by uzyskać określoną funkcjonalność?
    Czy byłoby to możliwe? Dopiero zaczynam z blogiem na WP, ale chciałbym zastosować w nim najlepsze rozwiązania związane z publikacją treści.

    odpowiedz
  21. Szymon Skulimowski Szymon Skulimowski 302 dni temu:

    Jeśli coś jest niejasne to proszę śmiało pytać za pośrednictwem komentarzy. Jeśli tylko będę mógł to pomogę.

    Dziękuję za cenną uwagę. Artykuły staram się przygotowywać w ten sposób żeby były one zrozumiałe zarówno dla początkujących jak i bardziej doświadczonych z WordPressem użytkowników ale jak widać nie zawsze się to udaje.

    odpowiedz

Dodaj własny komentarz