PROGRESO | WEBESTEEM | ART&DESIGN MAGAZINE 
Forum webesteem Strona Główna webesteem:forum

   Regulamin | Szukaj | Użytkownicy | Grupy | Statystyki | Ostatnie tematy | RSS | Rejestracja | Profil | Skrzynka | Zaloguj

[wordpress] the_content() i 'more' we wpisie...

 
Napisz nowy temat   Odpowiedz do tematu    Forum webesteem Strona Główna | server side i bazy danych
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
nappy




Od: 2006.08.27
Posty: 483

PostWysłany: 2010.06.08 17:15    Temat postu: [wordpress] the_content() i 'more' we wpisie...

rozwiązanie 5 postów niżej

Jest jakiś WP Kozak na sali ? ^_^

Założenia:

WP standardowo wypluwa tak:

Kod:

<p> jakis tam tekst przed 'more'
<span id="more-29"></span>
jakis tam tekst po more</p>


a chciałbym, żeby wypluwał tak:

Kod:

<p> jakis tam tekst przed 'more'</p>
<span id="more-29"></span>
<p class="post-more">jakis tam tekst po more</p>


(ew w ogole bez tego <span id="xxx"></span> ,zamiast tego moze byc np </p><p class="afterMore"> i wyjdzie na to samo a przynajmniej czytelniej).

Czyli jak widać chciałbym, aby to co znajduje się po <!-- more --> szło z automatu w nowy paragraf. Da się to zrobić modyfikując pliki Wp ale tego chciałbym uniknąć (potrzebne to do theme'a który będzie publicznie dostępny).
Gdyby ktos byl ciekaw po co mi to: chce z jquery chowac ten fragment i wyswietlac sliderem po kliknieciu w link (da sie wygenerowac calosc na stronie glownej a nie tylko w single-post view).

Calego posta wyswietlam na stronie glownej (czyli multi-post view) w ten sposob:

Kod:
           
<?php
global $more;
$more = 1;
the_content();
?>


plz help :)


Ostatnio zmieniony przez nappy dnia 2010.06.10 17:59, w całości zmieniany 1 raz
^
Odpowiedz z cytatem
EDi
moderator*



Od: 2004.10.26
Posty: 4429
Skąd: Moryń

PostWysłany: 2010.06.08 20:06    Temat postu:

Taaak... to jest właśnie zajebistość najpopularniejszego systemu blogowego na świecie. Jacyś k[wulg!] pseudo programiści z Koziej Wólki wybełtali kod PHP z HTMLem.

Może spróbuj to po prostu parsować JSem?



EDi .:. nabi.pl
^
Odpowiedz z cytatem
nappy




Od: 2006.08.27
Posty: 483

PostWysłany: 2010.06.08 20:37    Temat postu:

Właśnie tego chciałbym uniknąć (bo to znowu oznacza zrobienie czegoś w stylu <p> tekst tekst tekst <p class="paragraf_generowany_z_js">tekst tekst tekst</p></p> Brzydko.

Generalnie cały Theme będzie dość zależny od JS (ale staram się żeby bez JS też 'działał'), więc chciałbym uniknąć dodawania niepotrzebnego skryptu.

Najśmieszniejsze w tym wszystkim jest to, że wszyscy tak się zachwycają tym WP a theme-dev mają niezły orzech do zgryzienia. Jeszcze pajace z WP wymyślili milirad zasad (które w paru przypadkach kłócą się z tym co sami zrobili w kodzie) żeby dopuścić theme'a do oficjalnego banku. I bądź tu człowieku 'dobry' i rób coś za free...
^
Odpowiedz z cytatem
nappy




Od: 2006.08.27
Posty: 483

PostWysłany: 2010.06.08 20:39    Temat postu:

@up co do kodu to w sumie moge przecież wrzucić na pałke z JS </p><p class="costam"> zaraz po <span> i tez bedzie ok. No ale tak jak pisalem - to rozwiazanie awaryjne.
^
Odpowiedz z cytatem
nappy




Od: 2006.08.27
Posty: 483

PostWysłany: 2010.06.10 17:56    Temat postu:

Ok rozwiązałem swój problem, poniżej kod dla potomnych. Może komuś się przyda.

Całość wrzucamy do pliku functions.php w głównym katalogu naszego theme'a. (wp includuje ten plik automatycznie).

Co to robi?

Dzieli nam tekst (cały, bez tagów <p>,<span> itp - czysty tekst) na 2 części. Pierwsza (excerpt) wyświetla fragment tekstu od początku do (domyślnie) 600 znaku. Skrypt wyszukuje pierwszą kropke/wykrzyknik/znak zapytania/średnik i dopiero po nim ucina tekst. Więc problem ucinania słowa/zdania w środku odpada.

Plusy wiadome, możemy osobno wywoływać/formatować wstęp/tekst, działać na nim z jQuery, nie ma żadnych tagów-śmieci z WP.

Wywołanie:
Kod:

show_post(); // wyświetli wstęp, domyślnie 600 znaków
show_post(content, 666); // wyświetli część tekstu zaczynając od 666 znaku.


Więc jeśli chcemy wyświetlić cały tekst w ciągu od np 700 znaku to wpisujemy:

Kod:

show_post(excerpt, 700); //pierwszy parametr nie jest wymagany
show_post(content, 700); //wyświetli reszte tekstu




Kod:

    function cut_off($lookfor, $lenght) {
   
    global $more;
    $more = 1;
    $whole_content = get_the_content();
    $cutoff_pos = strpos($whole_content, $lookfor, $lenght);   
    return $cutoff_pos;
    }
   


    function show_post($select = "excerpt", $excerpt_lenght = "600") {
    global $more;
    $more = 1;
    $whole_content = get_the_content();
               
        $whole_content_lenght = strlen($whole_content);
       
        if ($excerpt_lenght<$whole_content_lenght)
        {
            $punctation[0] = cut_off('.',"$excerpt_lenght");
            $punctation[1] = cut_off('!',"$excerpt_lenght");
            $punctation[2] = cut_off('?',"$excerpt_lenght");
            $punctation[3] = cut_off(';',"$excerpt_lenght");
           
            $i = 0;
            foreach($punctation as $pointer) {
               
                if(empty($pointer) === FALSE) {
                    $true[$i] = $pointer;
                }

                $i++;
            }
                                   
            $nearest_pointer = min($true);
            $nearest_pointer = $nearest_pointer+1;
           
           
            $text[excerpt] = substr($whole_content, 0, $nearest_pointer);
            $text[content] = substr($whole_content, $nearest_pointer);
           
            echo $text[$select];
           
        }
        else
        {
            echo "$whole_content";
        }
    }
   


enjoy! :)

//proponuje przenieść do server-side
^
Odpowiedz z cytatem
hinok




Od: 2007.05.26
Posty: 113

PostWysłany: 2010.06.13 10:49    Temat postu:

Szczerze mówiąc nie przebijałem się przez kod, który podałeś, ale to co chcesz można osiągnąć w bardzo prosty sposób.

W loopie wrzucassz:
Kod:
$hej = get_the_content();
<p class="superklasa" id="joł"><?php echo $hej; ?></p>


Jeżeli chcesz skrócić sobie wpis do iluś wyrazów czy znaków to w functions.php najlepiej wrzucić prostą funkcję ucinającą.[/code]



hinok.net
^
Odpowiedz z cytatem
huh
weteran



Od: 2006.07.04
Posty: 2324
Skąd: Krakoff

PostWysłany: 2010.06.13 12:22    Temat postu:

nappy napisał(a):

Plusy wiadome, możemy osobno wywoływać/formatować wstęp/tekst, działać na nim z jQuery, nie ma żadnych tagów-śmieci z WP.



jquery to taka sama zajebistość jak wp..



^
Odpowiedz z cytatem
nappy




Od: 2006.08.27
Posty: 483

PostWysłany: 2010.06.13 12:34    Temat postu:

hinok napisał(a):
Szczerze mówiąc nie przebijałem się przez kod, który podałeś, ale to co chcesz można osiągnąć w bardzo prosty sposób.

W loopie wrzucassz:
Kod:
$hej = get_the_content();
<p class="superklasa" id="joł"><?php echo $hej; ?></p>


Jeżeli chcesz skrócić sobie wpis do iluś wyrazów czy znaków to w functions.php najlepiej wrzucić prostą funkcję ucinającą.


No i właśnie tak to działa :) Tylko 'ficzers' taki, że przycina po konkretnym znaku interpunkcyjnym + ilości znaków ogółem.


huh napisał(a):
nappy napisał(a):

Plusy wiadome, możemy osobno wywoływać/formatować wstęp/tekst, działać na nim z jQuery, nie ma żadnych tagów-śmieci z WP.



jquery to taka sama zajebistość jak wp..


nie nie, jquery jesli stosuje sie je tam gdzie trzeba(mozna), czyli wydajnosc jest podobna przy 'czystym js' i js z jQuery - to jest to ok. I tak to sprawdzam firebugiem. A jesli mozna cos szybciej / prosciej napisac, to czemu nie? WP ma ten problem, ze jest bajzlem samym w sobie. jQuery jest dosc klarowne i proste do ogarniecia.
^
Odpowiedz z cytatem
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum webesteem Strona Główna | server side i bazy danych Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

FAQ


serwery wirtualne, tanie domeny

Powered by phpBB © 2001, 2005 phpBB Group

90238086

Page generation time: 0.0374s (PHP: 88% - SQL: 12%) - SQL queries: 14 - GZIP enabled - Debug off