![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 13.10.2003 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
[php:1:0428340793]<?php
function wyswietl_menu($posx) { $sql = "select * FROM $_SESSION[db_prefix]menu WHERE posx='$posx' AND status=1 ORDER BY posy"; $dane = $db -> Execute($sql); while (!$dane->EOF) { $dane->fields[2] = '?>'.$dane->fields[2].'<?'; /* dane znajdujące się pomiędzy <? a ?> */ $dane->fields[2] = eval(''.$dane->fields[2].''); // są wykonywane jako kod php $dane->MoveNext(); } // while return $dane; } // function wyswietl_menu $smarty -> assign("left_menu", wyswietl_menu('left')); $smarty -> assign("right_menu", wyswietl_menu('right')) ?>[/php:1:0428340793] Mam taki problem ze funkcja się wykonuje przed wygenerowaniem strony przez smarty. Jak mam przekazać do smarty wynik funkcji zeby smarty to wyswietlilo w miejscu gdzie mam w pliku .tpl taki kod: [php:1:0428340793]<?php {section name=i loop=$left_menu} {$left_menu[i].text} {/section} ?>[/php:1:0428340793] On opowiada za wyswietlenie bloku menu. Pewnie to jest lamerskie pytanie ale to mój 3 dzień ze smarty i adodb. A niestety nie mogłem nic znaleźć na forum na ten temat ![]() Bardzo prosze o pomoc co mam z tym zrobić. Albo jakiś inny lepszy sposób na umieszczenie dynamicznych bloków menu. -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
[php:1:dd0930db3c]<?php
/* ** Wyciagamy dane */ $res=$db->execute("zapytanie"); $i=0; while(!$res->EOF) { $ret[$i]["jakiespole1"]=$res->fields["pole1"]; $ret[$i]["jakiespole2"]=$res->fields["pole2"]; $i++; $res->movenext(); } /* ** Do smarty */ $tpl->assign("blok",$ret); ?>[/php:1:dd0930db3c] A szablon moze wyglądać tak: Kod {section name="blok" loop=$blok}
<a href="{$blok[blok].jakiespole1}">{$blok[blok].jakiespole2}</a><br> {/section} -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 13.10.2003 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
mhmm jeszcze nie testowałem tego kodu ale wydaje mi się, że w ten sposób nie uda mi się tego osiągnąć co chce.
Moje menu to nie tylko lista linków ale też inny kod php. Chciałem zrobić coś takiego jak np. jest w jportalu, Że można umieszczać kod php w bloku menu wystarczyło dać Kod <? kod php ?>
Tekst który jest poza tymi znacznikami jest wyświetlany normalnie. Takie coś można zobaczyć np. w jportalu ale on korzysta z innego systemu szablonów tam się umieszcza blok menu jako funkcje. Mój problem polega na tym że nie umiem przekazać do smaty wyniku z funkcji eval($cos) -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 152 Pomógł: 0 Dołączył: 15.05.2002 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
a moze
[php:1:e0d4c52054]<?php $str = '$smarty -> assign("costam",$wartosc);'; eval($str); ?>[/php:1:e0d4c52054] -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 13.10.2003 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
to napewno nie
![]() Kod <? ?> to mi wtedy ten skrypt wykona co jest pomiędzy znacznikami tylko problem jest taki jak już wygenerowany kod przekazać do smarty. jeśli nie dam tego kodu to mi go nie przetwarza.
Takie coś jak pisalem jest w jportalu ja chce podobne rozwiązanie ale w połączeniu ze smarty -------------------- |
|
|
![]()
Post
#6
|
|
![]() Administrator planeta/IRC Grupa: Przyjaciele php.pl Postów: 385 Pomógł: 0 Dołączył: 19.04.2003 Skąd: Zabrze Ostrzeżenie: (0%) ![]() ![]() |
A może coś takiego:
[php:1:809cb0c4ef]<?php eval('$dane->fields[2] = '.$dane->fields[2].';'); ?>[/php:1:809cb0c4ef] Tylko że to pod warunkiem że pozbędziesz sie <? i ?>. Istnieje także druga możliwość, nie wiem jak wygląda kod, czy uzywasz w nim echo, czy return, ale jeśli to pierwsze to możesz zastosować buforowanie wyjścia: [php:1:809cb0c4ef]<?php ob_start(); eval(''.$dane->fields[2].''); $dane->fields[2] = ob_get_contents(); ob_end_flush(); ?>[/php:1:809cb0c4ef] -------------------- "Programmers are in a race with the Universe to create bigger and better idiot-proof programs, while the Universe is trying to create bigger and better idiots. So far the Universe is winning."
Cudi's devBlog |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 13.10.2003 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
mhmm w blokach menu chcę mieć możliwośc wstawianie dowolnego kodu php ważne żeby tylko ten kod był pomiędzy znacznikami
Kod <? ?>
Jeśli nie ma tych znaczników to nie będzie wykonywany. Ma to wygladać dokładnie tak jak w jportal są zorganiozowane bloki menu. W smarty też chce żeby kod był maksymalnie prosty. Da sie coś takiego zrobić ? -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Hmm to sie mija z celem szablonów - szablony są po to, żeby oddzilić jak najbardziej warstwe wizualną od skryptu.
-------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 13.10.2003 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
Cytat Hmm to sie mija z celem szablonów - szablony są po to, żeby oddzilić jak najbardziej warstwe wizualną od skryptu.
Warstwa wizualna jest odzielona od skryptu, ja chce mieć poprostu możliwość zarządzania blokami menu z poziomu panelu administracyjnego. Mhmm, to w jaki sposób mogę tworzyć dynamiczne menu, jeśli nie będe mógł umieścić kodu php w blokach. Chodzi mi o coś takiego jak jest np. w jportal. Da się to zrobić w smarty ? Jak Wy to robicie ? -------------------- |
|
|
![]()
Post
#10
|
|
![]() Administrator planeta/IRC Grupa: Przyjaciele php.pl Postów: 385 Pomógł: 0 Dołączył: 19.04.2003 Skąd: Zabrze Ostrzeżenie: (0%) ![]() ![]() |
Ja pokazałem jak to robie, sposób z buforowaniem wyjścia powinien Cie satysfakcjonować. Jest jeszcze inne wyjście, moim zdaniem lepsze. Dajemy uzytkownikowi dwie mozliwości, albo wstukuje sobie normalnie zawartość menu, ale podaje ścieżke do pliku który będzie odpowiadał za jego wygenerowanie. Pliczek ten może nawet korzystać z parsera szablonów, my musimy tylko ten plik zaincludować. O ile dobrze pamiętam takie rozwiązanie było wykorzystane w php-nuke.
-------------------- "Programmers are in a race with the Universe to create bigger and better idiot-proof programs, while the Universe is trying to create bigger and better idiots. So far the Universe is winning."
Cudi's devBlog |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 15:41 |