Autor | Zpráva | ||
---|---|---|---|
aladin Profil * |
#1 · Zasláno: 9. 11. 2012, 11:49:27 · Upravil/a: Moderátor (editace znemožněna) 11. 11. 2012, 18:11:04
Moderátor Str4wberry: Vyčleněno z funkce z db vypis
no,tohle jsem už vyřešil,tak tohle už neřešte:) abych nezakládal nový téma,tak to napíšu sem..potřeboval bych pomoct udělal jsem jakoby..rádoby šablonovací system,ale narazil jsem na jeden problém potřebuju udělat panely,ale tak,že když budu chtít vytvořit nějakej panel,tak si zajdu do administrace,a tam si vytvořím vlastně novej panel kterej se mě zapíše do db prostě se vytvoří novej řádek kterej bude obsahovat id panelu,nadpis a text no,popíšu trochu ten system..je to primitivní system..prostě takovej základ kterej fakčí jsou tam 3 funkce,konstruktor,nastavení a výstup konstruktorem si definuju tpl soubor kde bude ta šablona,nastavení(set) nastavím vlastně ty proměnný,např různý texty apod..a pak výstup tý šablony ten set vypadá takhle: function set($key, $value) { $this->values[$key] = $value; } z db je vyčtu v pořádku..teda jen jeden,vždy jen jeden... pokud tam dám cyklovač(while) tak mě to pořád vyčte jen jeden..načte mě všechny pokud ten while dám pro jakoby celou stránku dám příklad $index = new Template('./template/'.$template.'/index.tpl'); //nastavíme tpl šablonu $index->set('css', './template/'.$template.'/css/css.css'); //nastavím si css echo $index->output(); //výstup $index = new Template('./template/'.$template.'/index.tpl'); $index->set('css', './template/'.$template.'/css/css.css'); // Sidebar $SidebarSql = 'SELECT * FROM sidebar ORDER BY id'; $sidebarQuery = mysql_query($SidebarSql, $cn) or die(mysql_error($cn)); while ($sidebar = mysql_fetch_array($sidebarQuery)) { $index->set('sidebarName', $sidebar["name"]); $index->set('sidebarText', $sidebar["text"]); } echo $index->output(); aby to načetlo všechny panely,tak to musím udělat takhle // Sidebar $SidebarSql = 'SELECT * FROM sidebar ORDER BY id'; $sidebarQuery = mysql_query($SidebarSql, $cn) or die(mysql_error($cn)); while ($sidebar = mysql_fetch_array($sidebarQuery)) { $index = new Template('./template/'.$template.'/index.tpl'); $index->set('css', './template/'.$template.'/css/css.css'); $index->set('sidebarName', $sidebar["name"]); $index->set('sidebarText', $sidebar["text"]); echo $index->output(); } Doufám že jste porozuměli o co žádám... nějaký nápady pro vyřešení problému? |
||
Tori Profil |
#2 · Zasláno: 9. 11. 2012, 18:20:42
Naučte šablonu pracovat s opakovanými bloky (opakovaně naplnit proměnné a vykreslit, jako třeba foreach), pak můžete do proměnných přiřazovat i pole.
|
||
aladin Profil * |
#3 · Zasláno: 9. 11. 2012, 19:58:20
zkouším to,ale zatím nic..
můžeš to prosímtě trochu rozvést? foreach když jsem četl v knížce od jakuby vrány tak to jsem prošel tak trochu rychlovkou.. vím že to je něco podobnýho jako while,nebo podobnýho..skoro stejný,akorát to je určený přímo pro cyklování.. zkouším to tam nějak udělat,ale pořád stejný.... to mám udělat přímo funkci s foreachem a pak jen dosazovat nebo to dodělat do zdroje toho systemu šablonovacího? |
||
aladin Profil * |
#4 · Zasláno: 9. 11. 2012, 23:04:50 · Upravil/a: aladin
prostě nevím,strávil jsem na tom celej den,zkoušel jsem různý akce,pročítal jsem net,nikde jsem nic o tom nenašel,a to co jsem zkoušel mě dělá pořád to samý...
zkoušel jsem odseknout cyklování breakem a nebo continue ale bez uspěchu.. poradíte mě někdo prosím? napadlo mě že bych nějak udělal že by něco označovalo začátek sidebaru,a konec sidebaru nebo jak by jste to řešily vy? |
||
Tori Profil |
#5 · Zasláno: 10. 11. 2012, 15:45:25 · Upravil/a: Moderátor (editace znemožněna) 11. 11. 2012, 18:10:54
Já jsem si šablonový stroj nikdy nepsala, takže nemůžu poradit něco, co bych měla vyzkoušené.
Viděla jsem zatím dva způsoby řešení, možností bude ale víc: 1) v šabloně je označený jen začátek a konec bloku, má uvedené nějaké ID. Při zpracování si blok zaregistruju podle jeho ID, a potom v cyklu plním proměnné hodnotami (řetězce) a volám $tpl->parseBlock($blockId) . Opakovaným voláním parseBlock se nový obsah připojuje za starý. Uvnitř šablonového stroje se jednotlivé bloky ukládají do proměnných, při opakovaném volání parseBlock se nový obsah přidá za starý, a do šablony se vloží až při požadavku na zobrazení hotového HTML. (viz např. šablonový stroj od Jokera, odkaz)
2) šablony se překládají na PHP, uvnitř šablony napíšu {foreach $produkty as $item} ..... {/foreach} , do proměnné $produkty můžu přiřadit 2D pole (např. několikařádkový výpis z databáze) a uvnitř šablony se to chová stejně jako v čistém PHP. (viz např. Latte, myslím že i Smarty)
prosím ochotného moderátora, jestli by mohl oddělit příspěvky od [#4] včetně do samostatného vlákna, např. "Jak na cykly v šablonách" anebo "Jak naučit šablonu pracovat s polem" |
||
aladin Profil * |
#6 · Zasláno: 10. 11. 2012, 17:00:28
no,kdybych dělal nějakej svůj projekt,tak bych asi přešel na ten šablonovací system od jokera,
ale tady jde o to,že se učím,a učím se věci co bych chtěl umět,takže mě jde o to abych tomu porozuměl a dokázal napsat i těžší věci jako je například takováhle důležitá věc jako jsou šablony..ulehčí to hodně práci.. proto si to chci udělat.. jak jsem tak koukal,tak tam má řešený bloky <!-- JTPL: START BLOCK: id_bloku --> (...) <!-- JTPL: END BLOCK: id_bloku --> Dynamický blok. Slouží pro části kódu, které opakují, například při generování seznamů nebo tabulek. Blok je třeba nejdříve registrovat metodou register_block. Poté se přiřadí proměnné a blok se zpracuje metodou parse_block(). Po zpracování bloku lze proměnným znovu přiřadit hodnoty a blok opět zpracovat, což výsledný kód připojí k předchozímu. označení začátek a konec bloku kde určím jeho ID a potom se může nadále zpracovávat pro cykly... takže si to skusím stáhnout a pochopit to dění.. :D nebo nějakej váš nápad jak by se to dalo řešit touhle/jinou cestou? |
||
Časová prodleva: 11 let
|
0