![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 3.04.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Chce stworzyc sredniozaawansowany system typu CMS oparty na bazach mysql i wykorzystujacy szablony. Do tej pory nie robilem stron opartych o szablony i pojawil sie problem. Mianowicie chce miec po lewej stronie zrobione menu podzielone na kategorie, mniej-wiecej tak jak index fora phpbb podzielony jest na kategorie i fora. Zeby uproscic sprawe chodzi o taki uklad:
Kod <!--BEGIN kategoria-->
<b>{kategoria}</b><br> <!--BEGIN linki--> <a href="{url}">{link}</a><br> <!--END linki --> <br><br> <!--END kategoria--> W php przy uzyciu standardowej funkcji echo wyglada to tak: [php:1:4d86280fe0] <?php $query = mysql_query("SELECT * FROM category"); while ($row = mysql_fetch_array($query)) { $links_query = mysql_query("SELECT * FROM links WHERE category = $row[name]"); while ($links_row = mysql_fetch_array($links_query)) { // ... } } ?> [/php:1:4d86280fe0] Problem polega na tym, ze przy zastosowaniu klasy szablow FastTemplate linki nie chca trzymac sie swoich kategorii tzn. kiedy mam 2 kategorie i w kazdej po jednym linku, w 1 kategorii prawidlowo pojawia sie 1 link, ale w kategorii 2 pojawiaja sie oba linki z obu kategorii. Mam to rozwiazane w taki sposob: left.php [php:1:4d86280fe0] <?php $tpl->define( array( left => "left.tpl", category => "category.tpl", menulink => "menulink.tpl" )); // IDZIEMY PO KATEGORIE... $query = mysql_query("SELECT * FROM kategorie WHERE strona = 'lewa' ORDER BY pozycja ASC"); while ($sql = mysql_fetch_array($query)) { // I LINKI $query2 = mysql_query("SELECT * FROM menu WHERE kategoria = '$sql[nazwa]' ORDER BY pozycja ASC"); $n =mysql_num_rows($query2); if ($n > 0) { while ($sql2 = mysql_fetch_array($query2)) { $tpl->assign( array( URL => $sql2[url], NAZWA => $sql2[nazwa] )); $tpl->parse(MENULINK,".menulink"); } } // SCHOWAJ SZABLON JEŻELI NIE MA LINKÓW... else { $tpl->assign(MENULINK,''); } $tpl->assign(TITLE,$sql[nazwa]); $tpl->parse(CATEGORY, ".category"); } $tpl->parse(LEFT,"left"); $tpl->FastPrint(); ?> [/php:1:4d86280fe0] I pliki szablonow: left.tpl Kod <!-- NAME: left.tpl -->
<!---- LEWE MENU ----> <TD vAlign=top width=243> {CATEGORY} </TD> <!---- KONIEC LEWE MENU ----> <!-- END: left.tpl --> category.tpl Kod <!-- NAME: category.tpl -->
<!---- LEWA KATEGORIA ----> <TABLE cellSpacing=0 cellPadding=0 width=243 border=0> <tr> <TD class=subjectcell width=243 background=template_img/IB-II/tlo1.gif height=48> <br><p align="center" style="text-indent: 0; line-height: 100%; word-spacing: 0; margin: 0"> </center> <p align="center" style="text-indent: 0; line-height: 100%; word-spacing: 0; margin: 0"><strong>{TITLE}</strong></TD> </tr> <CENTER> <tr> <TD class=newscell background=template_img/IB-II/menutlo.gif> <p align="center"> {MENULINK} </TD> </tr> <tr> <TD background=template_img/IB-II/dol.gif height=22></TD> </tr> </TABLE> <!---- KONIEC LEWA KATEGORIA ----> <!-- END: category.tpl --> menulink.tpl Kod <!-- NAME: menulink.tpl -->
<a href="{URL}" {NEWWINDOW}><font color="#808080">{NAZWA}</font></a><br> <!-- END: menulink.tpl --> Co jest najciekawsze, chowanie szablonu jezeli w kategorii nie ma linkow dziala zupelnie dobrze. Problemy pojawiaja sie dopiero, kiedy wyswietlane sa juz wlasciwe linki. Nie mam pojecia czemu tak sie dzieje, moze ktos tutaj bedzie mogl mi pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ewewntualnie jezel ktos proponuje jakies inne rozwiazanie, wykorzystanie innej klasy szablonow to jestem otwarty (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) EDYCJA: Poradzilem sobie juz, zamiast FastTemplatow uzylem klasy template z phplib (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 13:05 |