Webboard

Pełna wersja: Zrobienie pętli i wyświetlenie danych
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2
{$theme[\'borderwidth\']} tak jest prawidlowo ale 3 x \\\ tez dziala
Skoro tak uważasz, wklej sobie kod EveryOne do jakiegoś pluginu i zobacz co wychodzi w edytorze szablonów: https://docs.google.com/file/d/0B6pgReiH...p=drivesdk
Po pierwsze ucina się na polskim znaku, po drugie wstrzyka się {$info[\'subject\']} co jest niepoprawne (zobacz sobie na inne szablony jak wygląda np. {$mybb->user['username']} lub {$post['signature']} - nie ma slashów).

Po wklejeniu któregoś z moich kodów:
https://docs.google.com/file/d/0B6pgReiH...p=drivesdk
(18.07.2013, 14:37)Destroy666 napisał(a): [ -> ]Przecież nie masz tak jak napisał Supryk.
Masz to:
Kod PHP:
$template = array(
        
"title"        => "posty_w_temacie_row",
        
"template"    => '<tr>
<td> post o tytule {$info[\\\'subject\\\']} <td> treść: {$info[\\\'message\\\']} </td>
</tr>'
,
        
"sid"        => -1
    
); 
A powinno być:
Kod PHP:
$template = array(
        
"title"        => "posty_w_temacie_row",
        
"template"    => '<tr>
<td> post o tytule {$info[\'subject\']}</td><td> tresc: {$info[\'message\']} </td>
</tr>'
,
        
"sid"        => -1
    
); 
Lub ewentualnie:
Kod PHP:
$template = array(
        
"title"        => "posty_w_temacie_row",
        
"template"    => "<tr>
<td> post o tytule {\$info['subject']}</td><td> tresc: {\$info['message']} </td>
</tr>"
,
        
"sid"        => -1
    
); 

Z innych mniejszych błędów - masz jeszcze niedomknięty <tr>:
Kod PHP:
<tr>
        <
td class="thead" colspan="2">Tytuł</td
Może i tak ale pozostaje jeden problem. Gdy dam tak jak ty mówisz wywala mi błąd podczas aktywacji pluginu (błąd zapytania). Wstawiłem zmienne ręcznie i działa lecz wywala tylko 1 wynik. Dodać do zapytania limit 0 , 5 ?

(18.07.2013, 14:37)Destroy666 napisał(a): [ -> ]Niepotrzebnie wymagasz tego pliku (nie używasz z niego żadnej funkcji):
Kod PHP:
require MYBB_ROOT."/inc/adminfunctions_templates.php"
No i niepotrzbenie używasz rebuild_settings(), nie masz żadnych ustawień.

Potrzebne bo to kawałek pluginu. Jest sporo ustawień :P
Ah, jak to tylko część i używasz funkcji find_replace_templatesets oraz masz ustawienia to faktycznie musisz zostawić rebuild_settings() oraz linijkę z require adminfunctions_templates. Myślałem że to cały plugin dlatego tak napisałem.

A jedna linijka jest dlatego, że nie sklejasz pętli.
Kod PHP:
eval('$posty_w_temacie_row = "'.$templates->get('posty_w_temacie_row').'";'); 
Powinno być:
Kod PHP:
eval('$posty_w_temacie_row .= "'.$templates->get('posty_w_temacie_row').'";'); 

To wyświetli wszystkie posty, więc trzeba dodać limit do zapytania tak jak mówisz.
Okey wszystko działa. Lecz mam pytanie. Jak zrobić, żeby te posty czytały bbcode? Chodzi o znaczniki [ code ], [ b ], [ url ] i tego typu?? bo teraz je normalnie wyświetla a chce żeby je stosowało.
Wyciągnięty tekst musisz przejechać parserem.
Dołączenie parsera
Kod PHP:
require_once MYBB_ROOT."inc/class_parser.php";
$parser = new postParser
Dalej jego ustawienia
Kod PHP:
$parser_options = array(
    
"allow_html" => 0,
    
"allow_mycode" => 1,
    
"allow_smilies" => 0,
    
"allow_imgcode" => 1,
    
"allow_videocode" => 1,
    
"filter_badwords" => 1
); 
I teraz użycie
Kod PHP:
$post $parser->parse_message($wyciągnięty_tekst$parser_options); 
Musisz skorzystać z parsera. Mniej więcej tak:

Kod PHP:
function posty_w_profilu()
{
    global 
$mybb$templates$memprofile$db$parser$posty_w_temacie_row$posty_w_temacie;

    if(!isset(
$parser))
    {
                require_once 
MYBB_ROOT 'inc/class_parser.php';
        
$parser = new postParser;
    }

    
$opcje = array(
        
"allow_html" => 0,
        
"allow_mycode" => 1,
        
"allow_smilies" => 1,
        
"allow_imgcode" => 1,
        
"filter_badwords" => 1
    
);
    
    
$query $db->query("SELECT * FROM ".TABLE_PREFIX."posts WHERE uid='".$memprofile['uid']."' LIMIT 0, 5");

    while(
$info $db->fetch_array($query)){
           
$info['message'] = $parser->parse_message($info['message'], $opcje);
           eval(
'$posty_w_temacie_row .= "'.$templates->get('posty_w_temacie_row').'";');
    }

    eval(
'$posty_w_temacie = "'.$templates->get('posty_w_temacie').'";');


Pisane na szybko, więc mogą być błędy.
EDIT: opcje Matsloma aktualniejsze (z wideo), skorzystaj z nich jeśli chcesz wyłączyć parsowanie filmów.
Dzięki Matslom za kod parsera i dla Ciebie plus za gotowy kod. Wszystko pięknie śmiga. Plugin leci w DL zaraz ^^
Stron: 1 2