Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [smarty] - bloki menu
kamiox
post 28.02.2004, 03:15:28
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 sad.gif

Bardzo prosze o pomoc co mam z tym zrobić.

Albo jakiś inny lepszy sposób na umieszczenie dynamicznych bloków menu.


--------------------
Go to the top of the page
+Quote Post
spenalzo
post 28.02.2004, 04:18:18
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}


--------------------

Go to the top of the page
+Quote Post
kamiox
post 28.02.2004, 18:34:37
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)


--------------------
Go to the top of the page
+Quote Post
HaRy
post 28.02.2004, 20:19:38
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]


--------------------
Go to the top of the page
+Quote Post
kamiox
post 28.02.2004, 20:59:03
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 sad.gif założenie jest takie że jak dam
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


--------------------
Go to the top of the page
+Quote Post
Cudi
post 29.02.2004, 00:10:53
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
Go to the top of the page
+Quote Post
kamiox
post 29.02.2004, 00:30:41
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ć ?


--------------------
Go to the top of the page
+Quote Post
spenalzo
post 29.02.2004, 02:53:25
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.


--------------------

Go to the top of the page
+Quote Post
kamiox
post 29.02.2004, 14:49:20
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 ?


--------------------
Go to the top of the page
+Quote Post
Cudi
post 29.02.2004, 20:05:28
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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 15:41