![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 215 Pomógł: 1 Dołączył: 13.04.2003 Skąd: z ławki przed blokiem Ostrzeżenie: (0%) ![]() ![]() |
witam
jak wyswietlic w smarach nieznanej dlugosci drzewo? w tej chwili dla takiej tablicy drzewa: Kod Array ( [0] => Array ( [content_id] => 1 [sub_con_id] => 0 [content_name] => news [content_name_display] => Nowości [content_type] => 0 [content_count] => 0 [subcontent] => Array ( [0] => Array ( [content_id] => 2 [sub_con_id] => 1 [content_name] => show [content_name_display] => Pokaż nowości [content_type] => 0 [content_count] => 0 [subsubcontent] => Array ( ) ) [1] => Array ( [content_id] => 3 [sub_con_id] => 1 [content_name] => add [content_name_display] => dodaj nowość [content_type] => 0 [content_count] => 0 [subsubcontent] => Array ( [0] => Array ( [content_id] => 4 [sub_con_id] => 3 [content_name] => test [content_name_display] => test [content_type] => 0 [content_count] => 0 ) ) ) ) ) ) w smartach leci to tak: Kod {section name=a loop=$main_links} <li><a href="/home/{$main_links[a].content_name}">{$main_links[a].content_name_display}</a></li> {if !empty($main_links[a].subcontent)} <ul> {section name=b loop=$main_links[a].subcontent} <li><a href="/home/{$main_links[a].content_name}/{$main_links[a].subcontent[b].content_name}">{$main_links[a].subcontent[b].content_name_display}</a></li> {if !empty($main_links[a].subcontent[b].subsubcontent)} <ul> {section name=c loop=$main_links[a].subcontent[b].subsubcontent} <li><a href="/home/{$main_links[a].content_name}/{$main_links[a].subcontent[b].content_name}/{$main_links[a].subcontent[b].subsubcontent[c].content_name}">{$main_links[a].subcontent[b].subsubcontent[c].content_name_display}</a></li> {/section} </ul> {/if} {/section} </ul> {/if} {/section} no tylko teraz jak wyswitlic podobnego typu menu, jesli nie znam jego glebokosci? ma ktoś jakiś pomysł |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Za pomocą mechanizmów Smarty'ego: nie da się.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Smarty pozwala na definiowanie własnych metod i pluginów.
W takim przypadku najlepszym rozwiażaniem będzie napisanie metody, która będzie wywływana rekurencyjnie. Na forum smarty jest przykład, jak można to zrobić przy pomocy proponowanej, nowej składni: Kod {fun name='nazwa funckji'}
{defun name='nazwa funckji'} // body {/defun} -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Jakoś nigdy nie lubiłem tej kobylastości Smarty'ego i czasem coś lepiej zrobić w php.
Ja drzewa wyświatlam tak: Kod {php} $arrTree = $this->_tpl_vars[ 'FULL_TREE' ]; if( is_array( $arrTree ) ) { drawNode( $arrTree ); } else { echo 'Brak zawartości.'; } function drawNode( $arrTree ) { echo '<ul>'; foreach( $arrTree as $intKey => $arrValue ) { echo '<li><a href="#" onclick="editSection( \'form\', ' . $arrValue[ 'id' ] . ' );" title="' . $arrValue[ 'name' ] . '">' . $arrValue[ 'name' ] . '</a>'; if( is_array( $arrValue[ 'childs' ] ) ) { drawNode( $arrValue[ 'childs' ] ); } echo '</li>'; if( is_array( $arrValue[ 'articles' ] ) ) { echo '<ul>'; foreach( $arrValue[ 'articles' ] as $intArticleKey => $arrArticle ) { echo '<li class="file"><a href="#" title="' . $arrArticle[ 'title' ] . '">' . $arrArticle[ 'title' ] . '</a></li>'; } echo '</ul>'; } } echo '</ul>'; } {/php} A mam takie drzewo: Kod Array ( [0] => Array ( [id] => 1 [parentId] => 0 [languageId] => 1 [menuId] => 1 [active] => 1 [open] => 0 [position] => 1 [name] => ArtykuĹ�y [articles] => [childs] => Array ( [0] => Array ( [id] => 2 [parentId] => 1 [languageId] => 1 [menuId] => 1 [active] => 1 [open] => 0 [position] => 1 [name] => Kucharskie [articles] => [childs] => ) [1] => Array ( [id] => 3 [parentId] => 1 [languageId] => 1 [menuId] => 1 [active] => 1 [open] => 0 [position] => 2 [name] => Techniczne [articles] => Array ( [0] => Array ( [id] => 3 [parentId] => 3 [languageId] => 1 [active] => 1 [open] => 0 [date] => 2005-12-22 23:51:04 [title] => Ĺ�rubokrÄ�t i kredki, czyli nic ... [lead] => [content] => ) [1] => Array ( [id] => 4 [parentId] => 3 [languageId] => 1 [active] => 1 [open] => 0 [date] => 2005-12-22 23:50:07 [title] => Wytrych i inne sprzÄ�ty. [lead] => [content] => ) ) [childs] => ) [2] => Array ( [id] => 9 [parentId] => 1 [languageId] => 1 [menuId] => 1 [active] => 1 [open] => 0 [position] => 3 [name] => Test vol. 2 [articles] => [childs] => ) ) ) [1] => Array ( [id] => 7 [parentId] => 0 [languageId] => 1 [menuId] => 1 [active] => 1 [open] => 0 [position] => 2 [name] => Okulistyka dla pacjenta [articles] => Array ( [0] => Array ( [id] => 5 [parentId] => 7 [languageId] => 1 [active] => 1 [open] => 0 [date] => 2005-12-22 23:52:47 [title] => DĹ�ubanie w oku bez bĂłlu. Porady dla poczÄ�tkujÄ�cych. [lead] => [content] => ) [1] => Array ( [id] => 6 [parentId] => 7 [languageId] => 1 [active] => 1 [open] => 0 [date] => 2005-12-22 23:52:47 [title] => Kurz w oku. PĹ�ukaÄ� czy ... wyjÄ�Ä� oko? [lead] => [content] => ) ) [childs] => ) ) ...które przesyłam do Smarty'ego
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
-------------------- bigZbig (Zbigniew Heintze) | blog.heintze.pl
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 26.10.2004 Skąd: Rybnik Ostrzeżenie: (0%) ![]() ![]() |
Nie lepiej tego zrobić poprostu przez rekurencje? W Smarty są defakto 2 metody, albo napisać własną funkcję wywoływaną w tpl, albo pętlą jechać po tablicy i includować ten sam plik jeżeli mamy pod drzewo....
-------------------- Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 176 Pomógł: 0 Dołączył: 27.06.2002 Skąd: Stalowa Wola Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Ale po co robic kombinacje z wysietlaniem rekurencji w SMARTy ?!?! Wystarczy w php stworzyc odpowiednia tablice i wysietlic ja w Smary za pomoca foreach. No tylko ja walsnie mam prbolem z napisaniem kodu ktrory ze struktury bazy: CID, PARENT_ID, TITLE stworzy mi taka odpowiednia tablice. -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 14:32 |