publikacja: 5 sierpnia 2008, autor: , komentarzy 36 https://wpninja.pl/artykuly/koniec-z-ignorowaniem-znacznika-more/

Koniec z ignorowaniem znacznika <!–more–>


Warning: Trying to access array offset on false in /home/klient.dhosting.pl/wpn/wpninja.pl/public_html/wp-content/themes/wpninja/functions.php on line 159
Koniec z ignorowaniem znacznika <!–more–>

Znacznik <!--more-->, który umieścimy we wpisie dzieli go na zajawkę oraz pozostałą treść. Dzięki temu na stronie głównej i w paru innych miejscach zamiast pełnej treści artykułu otrzymamy jedynie skróconą wersję z zakończeniem w stylu „czytaj dalej”.

Załóżmy teraz, że chcemy stworzyć statyczną stronę, na której znajdować się będzie lista wpisów z danej kategorii wraz ze skróconą przez znacznik <!--more--> treścią. Tutaj pojawiają się problemy ponieważ zarówno plik single.php jak i page.php całkowicie ignorują znacznik…

Podobny problem miał keithan na forum polskiego supportu WordPressa:

Na mocno zmodyfikowanym defaultowym theme chce wyswietlic na pojedynczym wpisie zajawki pozostalych artykulow. Pojawia sie problem w postaci wyswietlenia calego tekstu z pozostalych artykulow.

Zarówno dla single.php jak i page.php rozwiązanie jest identyczne, proste ale wcale nie takie oczywiste. W pętli, która generuje listę należy dodać poniższą linijkę:

<?php global $more; $more = 0; ?>

Dzięki temu znacznik oddzielający zajawkę od pozostałej części tekstu nie będzie już ignorowany.

Komentarze

  1. Wasze pytania: Zajawka i dalsza część wpisu w oddzielnych div-ach 16 lat temu:

    […] 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 […]

    odpowiedz
  2. Symbian 16 lat temu:

    No niestety – u mnie nie działa. Chyba, że jakoś źle wklejam kod.
    Czy da się zastosować w wersji 2.7, aby na głównej pojawiały się tylko streszczenia ?

    odpowiedz
  3. Marianka Mroczeńska 15 lat temu:

    Dzięki! Ten artykuł mi wszystko wyjaśnił :)

    odpowiedz
  4. Szymon Skulimowski 15 lat temu:

    @Symbian,
    Kod działa nawet dla najnowszej wersji WordPressa (2.8.3) i działać będzie jeszcze pewnie stosunkowo długo… Zwróć uwagę, że kod trzeba umieścić w pętli.

    odpowiedz
    1. Jurek 11 lat temu:

      Witam
      Ponieważ nie za bardzo się znam to chciałbym zapytać gdzie ten kod dokładnie wkleić?
      Nie jest dla mnie jasne:”W pętli, która generuje listę …”. Próbowałem wklejać do wspomnianych wyżej plików, ale coś mi nie działa. Mam najnowszą wersję WordPressa, jak wklejam funkcję more we wpisie to działa, a na stronie statycznej nie działa niestety. Mógłbym ew. przesłać te moje 2 pliki. Bardzo proszę o pomoc i z góry dziękuję. pozdr JurekZ

      odpowiedz
    2. Paweł Knapek 11 lat temu:

      To już jest bardzo indywidualna kwestia, zależna od projektu konkretnego motywu. Napisz z jakiego motywu korzystasz lub wrzuć go gdzieś do pobrania.

      odpowiedz
    3. Szymon Skulimowski 11 lat temu:

      W imieniu Jurka zamieszczam odpowiedź (poszła na e-mail w odpowiedzi na powiadomienie :-)):

      motyw można pobrać tutaj https://wordpress.org/themes/annarita

      odpowiedz
    4. Jurek 11 lat temu:

      Dziękuję koledze za wyręczenie, faktycznie źle to posłałem zamiast odpowiedzieć tutaj. :-)
      No to mamy motyw i teraz gdzie te wpisy wkleić, bo tak jak pisałem ta sztuka mi się nie udała :-(

      odpowiedz
    5. Paweł Knapek 11 lat temu:

      Plik page.php, po 17 linijce – czyli PO wywołaniu funkcji the_post()

      odpowiedz
    6. Jurek 11 lat temu:

      Zrobiłem tak no i zadziałało ale nie do końca ;-(
      tzn. ukrywa tekst i wstawia link „więcej… ” tylko że potem można klikać na ten link i nic się nie rozwija.

      odpowiedz
    7. Paweł Knapek 11 lat temu:

      Czyli zadziałało jak najbardziej poprawnie …nie rozwija, bo i nie ma czego rozwijać (za każdym razem pobierany jest tylko fragment do quicktagu „more”). Inaczej, ten sposób nie zadziała w sposób jakiego oczekujesz na pojedyńczej stronie. Zadziałał by, gdyby to był szablon strony prezentujący zajawki innych stron (np strona A, na której jest zajawka strony B i link Read more B). W obrębie samej siebie to nie zadziała.
      Jeżeli chcesz mieć przejście do dalszej części, to najprostszym rozwiązaniem jest zostawić jak było wcześniej, a zamiast qiucktagu „more” użyć „nextpage”.

      Jeżeli zaś miało by to być oparte na „more”, to trzeba by kombinować inaczej – np. pobierać cały content, dzielić na oddzielne bloki, a potem javascriptem regulować który ma być ukryty a który widoczny. -Znacznie więcej dłubaniny w kodzie.

      odpowiedz
    8. Jurek 11 lat temu:

      OK, teraz rozumiem, w takim razie najprościej zrobię za pomocą „nextpage”. Dziękuję za podpowiedź.

      odpowiedz
  5. Vhaeraun 13 lat temu:

    Kurcze, chyba 2 godziny spędziłem przeszukując google dlaczego WP ignoruje mi to i odpowiedź znalazła się na rodzimym podwórku :)
    Dzięki za artykuł.

    odpowiedz
  6. Kamil Lipiński 13 lat temu:

    Dzięki wielkie. Bardzo mi brakuje takiego przycisku na Twoim blogu służącego do doceniania Twoich wpisów. Często się przydają :)

    odpowiedz
    1. Szymon Skulimowski 13 lat temu:

      Proszę bardzo. Cieszę się, że pomimo upływu czasu artykuł nadal jest przydatny. Wprawdzie przycisków do oceniania nie ma, ale zawsze możesz kliknąć na „Lubię to” Facebooka, „+1” Google lub tweetnąć :-).

      odpowiedz
  7. Paweł Nowak 13 lat temu:

    Fajnie. Nie wiedziałem o tym. Nie używałem tego w ten sposób choć już dawno zrezygnowałem z używania zajawek na korzyść wypisów. Z tego względu, że początkowa treść wpisy (do znacznika ) nie zawsze wygląda tak jak bym chciał aby się przedstawiała. Biorąc np. pod uwagę fakt skrótowego przedstawienia zawartości wpisu.

    Dzięki za artykuł.

    Pozdrawiam Ciepło ;)

    odpowiedz
  8. Marcin 11 lat temu:

    Hej,

    Jak zamienić słowo <!--more--> w znaczniku na np: „czytaj dalej” lub „więcej”?

    Pozdrawiam

    odpowiedz
    1. Marcin 11 lat temu:

      Już znalazłem dla tych co nie wiedza to w wersji tekstowej wystarczy wstawić np: coś takiego <!--more Czytaj dalej-->

      Pamiętajcie że musi to być wersja tekstowa w edytorze a nie wizualna.

      Pozdrawiam

      odpowiedz
    2. Szymon Skulimowski 11 lat temu:

      Zgadza się, można to zrobić w sposób który opisałeś powyżej.

      Inny sposób, którego zaletą jest to, że robi się go tylko raz, polega na edycji kodu. Wystarczy odnaleźć wywołania funkcji the_content() i zamienić ją na the_content('Czytaj dalszy ciąg...').

      Można też posłużyć się specjalnym filtrem:
      http://justintadlock.com/archives/2009/07/01/how-to-filter-a-wordpress-themes-more-link-text

      odpowiedz
    3. Jacek 8 lat temu:

      Podaj dokładnie jak to zrobić bo ja mam z tym problem

      odpowiedz
  9. Paweł 9 lat temu:

    Latka lecą a wpis nadal pomaga. Co prawda w tym wypadku komentarz ale zawsze. :)

    odpowiedz
  10. Marzena 8 lat temu:

    Witam,
    Ja mam troszkę inne cudo mianowicie zamiast „read more” mam trzy kropeczki i nie wiem jak to zmienić.
    Byłabym wdzięczna za pomoc.
    Pozdrawiam Marzena

    odpowiedz
    1. Szymon Skulimowski 8 lat temu:

      Czy nie jest to przypadkiem ten sam problem, o którym wspominał wcześniej Marcin?

      odpowiedz
    2. Marzena 8 lat temu:

      Tak też myślałam i przejrzałam cały edytor i u mnie nie ma the_content()
      u mnie wygląda tak:
      get_header(); ?>


      odpowiedz
    3. Szymon Skulimowski 8 lat temu:

      Tutaj możesz wkleić kod PHP: http://wklej.org/ :-)

      odpowiedz
  11. Jacek 8 lat temu:

    Mi nie udało się tego zrobić nie wiem czemu

    odpowiedz
  12. Jacek 8 lat temu:

    Mam pytanie czy na stronie głównej moge użyć zwijania tekstu bo nie działa u mnie ta funkcja ,działa tylko jak dodaję wpisy na blogu

    odpowiedz
    1. Eto 8 lat temu:

      Mam ten sam problem. Mam statyczną stronę, która nie wyświetla wpisów i chciałbym zrobić tak, żeby na końcu krótkiej zajawki pojawiał się button 'read more’, po kliknięciu w którego rozwija się reszta. Nie do końca wiem jak to zrobić.

      odpowiedz
  13. dyziunio 8 lat temu:

    Proszę o pomoc, co należy dodać i gdzie??

    odpowiedz
    1. dyziunio 8 lat temu:

      W szablonie twenty ten

      odpowiedz
    2. Szymon Skulimowski 8 lat temu:

      Poprawiłem zapis w powyższym artykule.

      odpowiedz
  14. Ewka 8 lat temu:

    Mam ten sam problem używam szablonu colinear, chcę stworzyć dodatkową kategorię w menu, która będzie wyświetlać zajawki wpisów. proszę o pomoc.

    odpowiedz
  15. Mateusz DL 8 lat temu:

    A co w przypadku, gdy przycisk “read more” na stronie głównej – statycznej przekierowuje na … stronę główną zamiast na stronę wpisu?

    Z góry dziękuję za odpowiedź.

    odpowiedz
    1. Szymon Skulimowski 8 lat temu:

      W takim przypadku trzeba zajrzeć do plików motywu i fragmentu, który generuje wspomniany odnośnik. Być może ktoś wstawił go „na sztywno” i zapomniał dopisać właściwy adres :-)

      odpowiedz
  16. Michał 7 lat temu:

    Witam,
    nie potrafię sobie poradzić z tym problemem. Nie mam pliku index.php. Korzystam z szablonu Church. Zmiana kodu plików index, single ani page.php w szablonie Omega (nadrzędnym) nic nie daje. Może mógłby ktoś pomóc? :)

    odpowiedz
  17. krzysztof 6 lat temu:

    Kurcze jakoś mi nie zadziałało…

    odpowiedz

Dodaj własny komentarz


Warning: Undefined variable $user_ID in /home/klient.dhosting.pl/wpn/wpninja.pl/public_html/wp-content/themes/wpninja/comments.php on line 95

Odnośniki z innych stron

Lista innych stron, które w jakiś sposób odnoszą się do opublikowanej tutaj treści:

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

    […] 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 […]