Eljött az újabb idők szele, és vele együtt végre a Drupal 4.7, ami jelenleg a 4.7.2-nél tart. Ezzel együtt bekerült a smink motorok közé a PHP Template is, de külön elérhető korábbi verziókra is a http://drupal.org/project/phptemplate oldalon. Telepítéséhez a be kell másolni a kibontott fájlokat a themes/engines/phptemplate mappába. Segítségével teljes egészében le lehet váltani a PHP alapú sminkeket is, erre mutatok most pár megoldást.
A PHP Template tpl.php kiterjesztésű fájlokon (továbbiakban smink fájl) keresztül végzi el a sminkelést. A fájl neve a módosítandó theme függvénnyel kell hogy egyezzen, ami például node esetén node.tpl.php. A motor alapértelmezetten csak pár sminkelhető részhez kínál felületet, azaz csak pár smink fájlt fog alapértelmezetten keresni és feldolgozni.
A sminkelhető részek a következők:
- page.tpl.php: a teljes oldal sminkelése
- block.tpl.php: blokk sminkelése
- box.tpl.php: általános befoglaló doboz sminkelése
- comment.tpl.php: hozzászólás sminkelése
- node.tpl.php: tartalom (node) sminkelése
Alapértelmezett részek sminkelése
Hogy lássuk hogyan is kell kinéznie egy ilyen smink fájlnak, tekintsük át ezek alapértelmezettjeit. Ezeket a fájlokat a drupal themes/engines/phptemplate könyvtárában találjuk tpl.php kitejesztéssel. Új smink készítése esetén kezdjük azzal, hogy ezeket a fájlokat bemásoljuk saját sminkünk (themes/[sajátsmink]) könyvtárába. A Drupal, ahogy más sminkek esetén, itt is a smink mappánkban levő style.css fájlt fogja használni a HTML elemek stílusának meghatározására, ezért ennek megfelelően járjunk el a CSS fájl létrehozásakor. Ha ezzel megvagyunk, tekintsük át hogy is működik a dolog.
A smink fájlok működése eléggé egyszerű. Amikor a motor megtalálja a fájlunkat átad neki pár megfelelő változót. Ezeket megtaláljuk a smink fájlunkban, vagy ha valamit mégis hiányolnánk, akkor hagyatkozzunk a PHP Template dokumentációjára, hogy melyek is az elérhető változók. Például a teljes oldal (page) sminkelése esetében elérhető változók listáját megtaláljuk a http://drupal.org/node/11812 oldalon.
Ezek a fájlok alapjában véve HTML fájlok, amikben csak pár PHP kódrészletet találunk csupán a változók kiírására. Nézzük meg erre a legegyszerűbb példát, ami a befogaló doboz sminkelését módosítja (ez pedig a box.tpl.php).
A teljes kód (a box.tpl.php tartalma) a következőképpen néz ki:
<?php
print $title
?><?php
endif;
?><?php
print $content
?>]"> [codefilter_php





http://www.qpm.hu
Nagyom rendi lennél ha részleteznéd www.qpm.hu -n lévő megoldásod.
Más: ha itt a "hosszú cikk" végén a hozzászólás linkre kattintok,
ide printeli a hozzászólás ablakot... csak hogy a lap tetejéről kel legörgetnem hogy beleirjak. Nem lehet valahogy a müvelet után ide horgonyozni? mert pl. ha anyám nézné biztos azt hinné hogy nem működik a posztoló (nem görgetne le és váltaná meg a világot hozzászólásával...)
egyébként ez a hiba az én sminkemnél is meg van
A megoldásról meg legyen kedves cikket írni!
Ádi
Mire gondolsz?
Melyik részére gondolsz, nem minden része publikus a dolognak, legfeljebb ötleteket adhatok, ha konkrét kérdés van.
--
Poetro
xml flash menu részére
Zseniális,
XML generálás
Az XML-t a menüből nem olyan egyszerű legenerálni, mivel Drupal alatt a menü megjelenítése/generálása nem egy egyszerű megfejtés. Az XML legenerálása valahogy a következőképpen néz ki:
function qpmx_theme_menu_tree($pid = 1) { if ($tree = qpmx_menu_tree($pid)) { return $tree; } } function qpmx_menu_tree($pid = 1) { $menu = menu_get_menu(); $output = ''; if (isset($menu['visible'][$pid]) && $menu['visible'][$pid]['children']) { foreach ($menu['visible'][$pid]['children'] as $mid) { $output .= qpmx_theme_menu_item($mid, menu_in_active_trail($mid) || ($menu['visible'][$mid]['type']) ? qpmx_theme_menu_tree($mid) : '', count($menu['visible'][$mid]['children']) == 0); } } return $output; } function qpmx_theme_menu_item($mid, $children = '', $leaf = TRUE) { return '' . $children ."\n"; } function qpmx_menu_item_link($mid) { $menu = menu_get_menu(); $link_mid = $mid; while ($menu['items'][$link_mid]['type'] & MENU_LINKS_TO_PARENT) { $link_mid = $menu['items'][$link_mid]['pid']; } return 'title="'. $menu['items'][$mid]['title'] .'" link="'. url($menu['items'][$link_mid]['path']).'"'; } $xml = qpmx_menu_tree($block->delta);Ekkor a megfelelő blokkhoz tartozó menü XML-jét generálja le az Adatbevitel XML segítségéve Flash MX mozikba-ban látott formában, persze a
tagok nélkül.A kód eléggé bonyolultnak látszik, és igazából az is, majdnem pont olyan mint a theme_menu_tree által generált, és működés tekintetében is nagyon hasonló ahhoz.
--
Poetro
a flash-be melyik php file-t töltöd be?
megvan az xml-t generáló fv-nyed, de azt hogyan hivod meg flash-ből?
Mentés / URL hívás
Két megoldás létezhet:
--
Poetro
nem találok változót
kezdem érteni, de egy ilyen egyszerű példát hogy lehet meoldani javascript nélkül tpl-ben?
footerben: legyen egy link a lap tetejére:
pl:(itt code kéne hogy megjelenjen, lehet hogy kifiltereli a drupal)
A gond az hogy a kedőlap tetejre visz, nem az épp aktuális lap elejére. Tehát közé kéne printelini az aktualis oldal címét, amire
nem találok default változót PHP Template súgóban.
pl:
Van ennek megoldása szkript nélkül?
Ádi
Path
A
$_GET['q']-ban mindig megtalálható az aktuális elérési út.--
Poetro
Köszönöm!
Köszönöm!
Nem nyugszik
A
$_GET['q'sokat segített,
De ha azt szeretném hogy mondjuk a f?oldal vagy valamely
kategória
valamelyik cikkének közepére horgonyozzak ami a [codefilter_code_][/codefilter_code]
után van..?
..tehát ha pldául megnyitom http://www.poetro.hu/blog oldalad
és mondjuk a "Hogyan
használjunk natív UTF-8 kódolást Drupal alatt"
cikket választom, az teljesen relativ a http://www.poetro.hu/blog
oldalhoz képest. Még is egy generalt link úgy irányítana az oldal
közepére
hogy a cikk valódi oldalára ugrik (a horgonyhoz).
Erre ez apélda nem meg felel?: [codefilter_code_vissza][/codefilter_code]
mert ugye most nem a current oldal elérésére , hanem a generált node
egyik tartalmának az elérésére van szükség.
tehát a
#kozepe megoldás nem jó.
Ötlet?
Köszönöm a segítséged!
Üdv,
Ádi
Nem értem
Nem teljesen értem, mit is szeretnél.
Egy másik oldal bizonyos horgonyára ugrató linket?
Mert ha mondjuk az előző oldal horgonyára mutatót, akkor
<?phpl("vissza", $_SERVER['HTTP_REFERER'], array(), NULL, "#header");
?>
lesz számodra a megoldás. Ha persze nem az előzőre, hanem egy konkrét oldalra akarsz ugrani, akkor ennek megfelelően cseréld le a
$_SERVER['HTTP_REFERER']részt.--
Poetro
header változó
az alapértelmezett bluemarine theme is php template -et használ, van a page.tpl.php -ban egy rész ahol a $header -t irat ki egy div -es részen.
na itt még soha nem láttam tartalmat.
ez mire van tulajdonképpen?
header változó
az alapértelmezett bluemarine theme is php template -et használ, van a page.tpl.php -ban egy rész ahol a $header -t irat ki egy div -es részen.
na itt még soha nem láttam tartalmat.
ez mire van tulajdonképpen?
Hozzászólás