ďťż
Podstrony
|
telcocafeWitam!Mam pytanie co do Smarty. W jaki sposób wykonujecie podstrony? Ja np. robiłem tak że miałem index.tpl w którym było wszystko ... Chodzi oto, że np. index.php pobiera newsy, przekazuje do smarty zmienną 'newsy' mająca wartośc 'tak', a w index.tpl warunek - jeżeli newsy == tak, to wyswietla petle z newsami... Pozniej np. jesli to jest podstrona z księgą gości, to przekazuje zmienną 'ksiega' == 'tak', a w indeksie jeszeli ksiega == tak, to wyswietla ksiege gosci... Nie wiem czy dobrze wytłumaczyłem, ale jak wygląda u Was tworzenie podstron z uzyciem smarty? zazwyczaj wygląda to tak że istnieje szablon główny zawierający szkielet strony, oraz określone bloki. Komponenty strony wykorzystują szablony poboczne, np. określające wygląd i układ artykułu. Gotowy wynik wypełnienia szablonu pomocniczego przekazywany jest do szablonu głównego i wszystko się wyświetla. Niektóre systemy szablonów obsługują dziedziczenie - zamiast pobierać szablon poboczny, wykonywać i przekazywać do głównego do określonego bloku określa się że szablon poboczny dziedziczy główny, określony blok wypełnia się w nim treścią i wyświetla się bezpośrednio ten szablon ;) Co do strony PHP - robienie IF $cośtam == 'artykuł' itd. jest trochę mało elastyczne i "sprawdzić" może się jedynie na bardzo prostych stronkach. Frameworki i różne rozbudowane skrypty obsługują to automatycznie... oto przykład z mojego punFrameworka ;) IF(isset($_GET['c']) and is_file(PUN_ROOT.'punFramework/controllers/'.$_GET['c'].'.php' ) and ctype_alpha($_GET['c'])) { try { include_once PUN_ROOT.'punFramework/controllers/'.$_GET['c'].'.php'; // If method specified try to use it IF(isset($_GET['m']) and ctype_alpha($_GET['m'])) { $action = new $_GET['c']($pun_user, $db, $pun_config, $pun_url, $lang_common); IF(method_exists($action, $_GET['m'])) { echo $action->$_GET['m'](); } else { throw new Exception('Non existing class method: '.$_GET['m'].' for class: '.$_GET['c']); } } else { //no method specified, use default "index" method $action = new $_GET['c']($pun_user, $db, $pun_config, $pun_url, $lang_common); echo $action->index(); } } catch (Exception $er) { // ... } } To za pomocą zmiennych GET c i m umożliwia wykonanie "dowolnej" metody/klasy (pod warunkiem że nazwy są złożone wyłącznie z liter) - działa to automatycznie. |
|||
Sitedesign by AltusUmbrae. |