Ezt a nagyon egyszerűnek tűnő dolgot sajnos nem igazán tudom megoldani; a beépített 'Cikk' és 'Egyszerű oldal' tartalomtípusokra kellene egyedi kinézetet varázsolni.
Doksi alapján teljesen egyértelmű lenne, azonban mégsem működik; egyenlőre mindenképpen a page.tpl.php alapján történik az aloldalak megjelenítése.
Az alap 2 tartalomtípusom van:
- 'Cikk' (machine name: article)
- 'Egyszerű oldal' (machine name: page)
Doksi alapján mondjuk a cikk-re a page--article.tpl.php lenne a megoldás, de mégsem működik.
Amikkel eddig próbálkoztam:
page--article.tpl.php
page-article.tpl.php
node--article.tpl.php
node-article.tpl.php
(Ezek még nem tartalmaznak semmit, csak kiírják magának a php filenak a nevét, elvileg ez nem számít)
Teljes cache ürítést csinálom, a módosítások után, de hiába.
Mit baltázok el? Views-t nem szeretném belekeverni, elvileg nem is kell, de valamiért mégsem működik.
Köszönettel
paneles
Tanuld meg a panels használatát. Tpl-el való barkácsolásnak vége :)
ezt kiprobalnam a helyedben
ezt kiprobalnam a helyedben:
https://drupal.org/node/1124036#comment-4336056
Nekem nem teljesen világos mit is szeretnél pontosan, miben egyedi az egyik a másiktól? A page tpl-ben ugye a title elemig tudsz varázsolni, azon belül már a node tpl kell, vagy template.php ból preprocessben tudsz kódból játszani.
Panels vagy Display Suite is a segítségedre lehet, de tudnunk kellene mit is akarsz megoldnai pontosan. Lehet nem éri meg plusz modult bekapcsolni mert pár sor smink fügvénnyel megoldhatod amit te szeretnél.
Drupal full-stack developer at Wunderman Thompson Budapest
Kipróbáltam
Köszönöm, a válaszokat, kipróbáltam a linken szereplő ötletet, de sajnos nem működik nálam.
Az egész csak annyi lenne, hogy tartalom típusonként külön megjelenése legyen az oldalnak.
- van egy főoldal, ami egyedi, views-al megy majd 6 blokkba a tartalom. (page.tpl.php)
- van egy másik nézet-csoport, ahová címkék szerint (pl page--hirek.tpl.php)
- kellene egy külön megjelenés, ahová konkrétan egy adott cikk megy, több div-be legyártva a tartalom, így-úgy megformázva. Ez lenne elvileg (?) a page--article.tpl.php, de ez nem működik, és valóban, nincs ilyen ajánlás a doksi szerint, node-ra viszont van. De a node--article.tpl.php formában sem működik, hozzá sem ér ehhez, ha az URL domain.hu/megdoglott-sanyi-a-lo, ami egy cikk lenne elvileg.
Így most azt látom (egyébként biztosan helytelen, de valamennyire működő) megoldásnak, hogy a page.tpl.php-ban levizsgálom, hogy létezik-e $variables['node']. Ha nem, akkor mehet a főoldal megjelenítése (a cimkék szerinti listázást intézi a page--xxxx.tpl.php); ha viszont van (és a $variables['node']->type == "article"), akkor ne a főoldal divjeit nyomtassa, hanem a cikk oldal felépítését.
Erre biztosan van erre egyszerű+értelmes megoldás, és rosszul gondolom ezt a dolgot, de pillanatnyilag nem látok más utat.
Minden ötletet szívesen veszek :)
hasznos lehet még a segítéshez
hogy pontosan melyik vagy milyen sminkről van szó. a node--article.tpl.php -nak elvileg mindenképp működnie kell, de persze a template suggestionöket egy rosszul megírt smink teljesen ki is végezheti és akkor nyilván nem működik. page--article.tpl.php suggestion alapból nincsen, de persze adhatsz bármilyen suggestiont a megfelelő preprocessben magad is, amilyet akarsz.
általában egyébként az a jó kérdés, ami a várt végeredményt írja le gyereknyelven és nem egy konkrét technikai megvalósítást erőltet, mert könnyen lehet, hogy amit el szeretnél érni, annak semmi köze a tplekhez. például: azt szeretném, hogy amikor cikket tekintek meg, az oldal címe piros legyen. vagy például azt szeretném, hogy amikor cikket tekintek meg, tűnjön el a fejléc.
-
clear: both;
Akkor gyereknyelven :-)
Egy viszonylag egyszerű oldalról van szó, ami háromféle megjelenésre tipizálható:
- 1. Főoldal, itt 6 blokkba megy tartalom, ez views-al remekül meg is van oldva (címkék szerinti bontásban). Page.tpl.php tartalmazza ezt a főoldalt, menüt, a blokkok helyét, minden ok.A definiált régiók content_1_1, content_1_2 stb, ezek kinyomtatása így történik a page.tpl.php-ban:
if ($page['content_1_1']):
print render($page['content_1_1']);
endif;
- 2. Ha a menüben kattint valaki, akkor egy lista kell szintén címkék szerint szűrve, 2 oszlopos megjelenítéssel (bal oldal a hírek listája, jobb oldal valami banner lesz talán). Például az egyik címke a 'Járműgyartás', webcímnálneve a 'jarmugyartas'. Azt szeretném, hogy a www.x.hu/jarmugyartas elérésen, csak az ezzel a címkével ellátott cikkek listája jelenjen meg.
- 3. Ha akár a főoldalról, akár a lista oldalról valaki egy hírre kattint, akkor egyszerűen csak jelenítse meg azt az 1 cikket a tartalmi részen a szokásos módon (cím, összegzés, dátum, törzs, aljára komment lehetőség), semmi extra. Pl www.x.hu/az-en-cikkem-de-jo
Tehát a cél, ha a címke szerint szűrt lista van, vagy a hír aloldalon van, akkor ne jelenjenek meg a főoldal régiói, kizárólag főoldalon ('/' vagy '/fooldal' URL-eken. Tehát ebben a 3 megjelenésben gondolkodva mindíg csak azok a tartalmi elemek jelenjenek meg, ami értelemszerűen oda tartozik.
Jelenleg a page.tpl.php tartalmazza az alap oldal felépítést, menüket és a fenti blokkokat.
Honnan tudom meg, hogy az aktuális URL épp' egy címke elérése, egy cikké? Egyáltalán szükség van-e ennek a vizsgálatára? Egyetlen page.tpl.php kell, amiben e szerint megjeleníteni a kell div-eket, tartalmakat? Vagy node.tpl-eket kell egyedivé tenni?
Pillanatnyilag így néz ki a page.tpl.php vonatkozó része: http://pastebin.com/gtC33d9k
A $variables['node']->type vizsgálatával próbálom ezt, cikk oldalra működik is (/cikk-url), de címkére (/cimke-neve) nem, a főoldalt, azaz létezik $variables['node'].
Minden ötletet szívesen veszek!
Köszi
(10 év pure PHP programozás után biztosan feleslegesen túl akarom bonyolítani, ez egy egyszerű oldal, mégsem jön össze Drupalban)
igen, valószínű túlbonyolítod
javaslom mindenképpen olvasd el nagy gusztáv drupal könyvét. keress rá úgy, hogy gusztáv jegyzete, biztosan megtalálod, fontos alapfogalmakat tisztáz, utána könnyebben lesz kérdezni is. azért megpróbálok válaszolni az egyes pontokra, de általában az van, hogy nincs olyan, hogy az egy igaz út, minden meg lehet csinálni csomóféle módon.
a page.tpl.php minden oldalgeneráláskor meghívódik és érvényesül. mindent ez ír ki, a fejlécet, a menüket, az összes régiót (sidebar, content, highlighed, vagy akárhány régiód is legyen) a footert, a mindent. mikor a címlapot nézed akkor is, mikor egy címke szűrést nézel akkor is, mikor egyetlen tartalmat nézel akkor is, mikor egy admin képernyőn vagy, akkor is.
1. a címlap
az admin/config/system/site-information útvonalon beállíthatod mi legyen a címlap. itt egy létező drupal útvonalat kell megadnod, alapértelmezésben ez a /node ami a 'címlapra helyezve' nodeokat listázza időrendben, a bevezetőjükkel. ezt te szabadon megváltoztathatod egy view útvonalára vagy akár egyetlen nodera, mondjuk node/42.
gyárilag tartozik hozzá egy template suggestion, a page-front.tpl.php. ha létezik ilyen file a sminkedben, azt fogja használni a drupal a címlap generálásához, bármilyen útvonalat is adtál meg címlapnak.
fontos még, hogy régiókat csak akkor írunk ki, ha van tartalmuk. üres régiókat nem írunk ki. ha bizonyos blokkokat csak a címlapon szeretnél megjeleníteni, akkor adott blokk beállításainál ezt beállíthatod úgy, hogy megadod, hogy 'csak az alábbi útvonalakon' (vagy ilyesmi a neve) és megadod, hogy csak a
<front>
útvonalon. ez a<front>
egy token, ami mindig a címlapot jelenti, bármit is állítasz be címlapnak.ilyen formán tehát ahhoz, hogy a 'címlapos' blokkjaid csak a címlapon legyenek, nincs szükséged külön tplre. a page.tpl.php -ban szabályosan kírod a régióidat és az oda helyezett blokkok beállításainál megadod, hogy csak címlapon akarod őket látni, kész.
2. a címkék szerinti szűrés
ez 'magától' megy. minden címkének van egy útvonala, teszem azt, taxonomy/term/42. ennek persze lehet álneve is, hogy mondjuk cimkek/kossz-a-halakat. mikor egy címkére kattintasz, ezt az oldalt mutatja neked a drupal. hogy ez 'kéthasábos' legyen, az már eleve megy, hiszen itt is ugyanúgy vannak régióid, amiket a page.tpl.php ír ki, ha azokban vannak blokkok, akkor megjelennek és kész. tehát bepakolod a 'bannereket' eabba a régióba ami majd jobb oldalon jelenik meg, ezen blokkok megjelenésénél megadod, hogy cimkek/* útvonalakon jelenjenek csak meg és kész vagy, nincs tplbe vuduzás.
3. egy darab node.
ez is magától megy. ilyenkor a page.tpl.php kírja a régiókat, fejlécet, menüket, kiskutyafüle, és a $content -be pedig bekerül a node, aminek a megjelenését a node.tpl.php szabályozza, de ez gyárilag olyan amilyet szeretnél.
mivel nagyon eltértünk az eredeti tárgytól, az lenne a javaslatom, ha újabb kérdés merülne fel, nyiss neki egy új témát. köszi. kitartás, átérzem a helyzet, eleinte minden olyan feleslegesen bonyolultnak tűnik, naponta hatszor adná fel az ember és legszívesebben sose nyúlna többet drupalhoz, de a kitartás meghozza gyümölcsét, egyszercsak áttöröd a korlátot és utána minden kitisztul, megszerereted a drupalt és legjobb barátok lesztek - egy ideig ;) :)
-
clear: both;
Nagyon köszönöm!
Gusztáv 7-es könyvét elolvastam (na jó, mondjuk 80%-ban, mivel mondjuk a modulok nagy része célirányos megoldás valamire, és nem érint pillanatnyilag), de az általad leírt összefoglalóval SOKKAL tisztább lett a kép.
Követem az ajánlásodat, átalakítom e szerint.
Megy a like :)
(Kis kiegészítés: Drupal 7-ben a front template: page--front.tpl.php, két kötőjellel)