To jest tylko wersja do druku, aby zobaczyć pełną wersję tematu, kliknij TUTAJ
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo

Portal - [b??d] z?e przetwarzanie tagów w portalu

Krakers - 10-05-2004, 17:42
Temat postu: [błąd] złe przetwarzanie tagów w portalu
Cóż - dzisiaj to zauważyłem - jesli w portalu news będzie przekracza? długość kwalifikując? do skórcenia i pojawia się opcja [czytaj dalej] to wtedy tagi url się nie tłumacz?i linki nie działają .
mopek - 12-05-2004, 12:58

wybieraj lepiej dział - przenoszę do portalu

[ Dodano: 16-05-2004, 21:30 ]
Cytat:
kwalifikując? do skórcenia i pojawia się opcja [czytaj dalej] to wtedy tagi url się nie tłumacz?i linki nie działają .


racja :/

Ignis - 21-06-2004, 19:09

no to i ja się podczepi? do tego tematu, w?a?nie włączyćam u siebie portal, jestem w fazie testów... i okazuje się, że znaczniki bbcode nawalaj?.

problem pojawia się, przy długim "newsie". przy wersji "skróconej" znaczniki bbcode krzacz? się, przy wersji "czytaj więcej" wszystko jest (chyba) ok.

widz?, że problem został już poruszony, ale nie widz? rozwiązania problemu :P
jeśli takowego nie ma, po prostu zrezygnuj? z portalu (jednak?e ułatwi?by mi on życie, dlatego Wam ... głow?... zawracam :P )

formalności:
mam zainstalowane forum przema 1.8 poprawka 9
adres forum http://elementum.strona.de/forum
adres check files: http://elementum.strona.de/forum/check_files.php
adres portalu: http://elementum.strona.de/forum/portal.php
koniec formalności

(P.S. więcej playboyów nie dało rady wcisn??? :twisted: )

Crack - 28-06-2004, 21:04

Macie tu rozwiązanie tymczasowe:

Znajdź w fetchposts.php
Kod:
if ( ($text_length == 0) or (strlen($posts[$i]['post_text']) <= $text_length) )
{               
 $posts[$i]['post_text'] = bbencode_second_pass($posts[$i]['post_text'], $posts[$i]['bbcode_uid'], $userdata['username']);
 $posts[$i]['striped'] = 0;
}
else
{
 // strip text for news
 $posts[$i]['post_text'] = bbencode_strip($posts[$i]['post_text'], $posts[$i]['bbcode_uid']);
 $posts[$i]['post_text'] = substr($posts[$i]['post_text'], 0, $text_length) . '...';
 $posts[$i]['striped'] = 1;
}

Zamieć na
Kod:
$posts[$i]['post_text'] = bbencode_second_pass($posts[$i]['post_text'], $posts[$i]['bbcode_uid'], $userdata['username']);
$posts[$i]['striped'] = 0;


W najbli?szym czasie dorobić funkcj? przycijaj?c? newsa do zadanej długości.

[ Dodano: 01-07-2004, 18:47 ]
A tu solidne rozwiązanie.

[ OTWÓRZ ]
fetchposts.php

[ ZNAJD? ]
Kod:
$posts[$i]['post_text'] = bbencode_strip($posts[$i]['post_text'], $posts[$i]['bbcode_uid']);
$posts[$i]['post_text'] = substr($posts[$i]['post_text'], 0, $text_length) . '...';


[ ZAMIE? NA ]
Kod:
$posts[$i]['post_text'] = bbsubstr($posts[$i]['post_text'], $text_length) . '...';
$posts[$i]['post_text'] = bbencode_second_pass($posts[$i]['post_text'], $posts[$i]['bbcode_uid'], $userdata['username']);


[ DO PLIKU DOPISZ ]
Kod:
function bbsubstr($string, $length)
{
    $tags_opened = 0;
    $copy_len = 0;
    for($i = 0; $i < strlen($string); $i++)
    {
        $s = $string[$i];
        if( $s.$string[$i+1].$string[$i+2] == '[*]' )
        {
            $i += 3;
        }
        elseif( $s.$string[$i+1].$string[$i+2].$string[$i+3].$string[$i+4] == '[you]' )
        {
            $i += 5;
        }
        elseif( $s.$string[$i+1] == '[/' )
        {
            $i++;
        }
        elseif( $s == ']' )
        {
            $tags_opened--;
        }
        elseif( $s == '[' && strpos($string, ']', $i) )
        {
            $tags_opened++;
            $i = strpos($string, ']', $i);
        }
        $copy_len = $i;
        if( $i >= $length && $tags_opened == 0 )
        {
            break;
        }
    }
    return substr($string, 0, $copy_len + 1);
}


Funkcja ta kontroluje tagi bbCode i jeśli np. kałemy jej wyci?? pierwsze 50 znaków tekstu i na 50-tej pozycji jest jeszcze otwart jaki? bbCode to funkcja poszuka zakończenia tagu i dopiero wtedy tnie tekst.



Powered by phpBB modified by Przemo © 2003 phpBB Group