Ne félj , szükség van az ilyen technikai jellegű dolgokra, örülök, hogy foglalkozol vele itt. :-)
Szakítsd át a sablon korlátait (II.)!
a java még hátravan…
Az előző részben sikeresen eltüntettük az oldasávot az új sablonunkról - sőt egy teszt-oldalt is elkészítettünk, amihez az új sablont hozzárendeltük, de egy apró szépséghiba akadt. Az oldal fő tartalma nem tölti ki a felszabadult helyet - az eltüntetett oldalsáv puccos helye még ott tátong üresen.
Épp itt az ideje azt a részt is rendbetenni.
Ha megnézzük a page.php forrását, akkor láthatjuk, hogy a headert egy main azonosítóval ellátott doboz követi (div id=“main”). Ebben a dobozban helyezkedik el a content azonosítóval ellátott doboz (div id=“content”), és az oldalsáv (include (TEMPLATEPATH . ‘/page-sidebar.php’);).
Lehet, hogy a te sablonodban az oldalsáv egyszerűen sidebat.php nevet kapott, keresd azt, ha nincs page-sidebar.php.
Nem akartam ide is betenni a kódot, de fontos hogy lásd - majdnem ugyanaz, mint az előző leckében, csak néhány megjegyzést tettem hozzá, hogy lásd - mi minek a része:
- page.php
<?php get_header(); ?><div id=“main”><div id=“content”><?php if (have_posts()) : while (have_posts()) : the_post(); ?><div class=“post” id=“post-<?php the_ID(); ?>”><div class=“entry”>... nem fontos ...... nem fontos ...</div><!—az ENTRY doboz (6. sor) lezárása—></div><!—a POST doboz (5. sor) lezárása—><?php endwhile; endif; ?><?php edit_post_link(‘Edit this entry.’, ‘<p>’, ‘</p>’); ?></div><!—a CONTENT doboz (3. sor) lezárása—><?php include (TEMPLATEPATH . ‘/page-sidebar.php’); ?></div><!—a MAIN doboz (2. sor) lezárása—><?php get_footer(); ?>
A lényeg - vizuálisan:

Miért erőltetem ezt a struktúra-dolgot annyira? Ha ezt megérted, akkor bármire képes vagy az oldal arculatának kialakításakor.
Az ábrán már nagyon látványos: a rendelkezésre álló szélességet alapvetően a main doboz szélessége határozza meg. Ezen nem fogunk módosítani. Módosítanunk kell azonban a contet doboz szélességén - méghozzá pont a sidebar szélességével kell növelni (ha a dobozok közötti távolságot most nem vesszük figyelembe).
Igen ám, de ha most fixáljuk a content szélességét, az olyan széles marad azokon az oldalakon is, ahol egyébként van oldalsáv. Ennek következtében az oldalsáv lecsusszan a tartalom alá, mivel mellette már nincs szegénynek hely.
A megoldás: az osztályok alkalmazása. A content dobozhoz készítünk két osztályt. Az egyiket akkor rendeljük hozzá, amikor kell oldalsáv a tartalom mellé, a másikat pedig akkor, amikor nem. Hogy ezt hogyan tehetjük meg? Érdemes mindenképpen szétnézni a stílusok között.
És hogy mit keressünk? A #main, a #content és a #sidebar azonosítókat - illetve ha van, akkor még a #wrapper-t is. Lássuk, milyen stílus, egészen pontosan milyen szélesség van hozzájuk rendelve.
- style.css
#wrapper {width: 746px;margin: 0 auto;padding: 50px 0;text-align: left;font-size: 1.1em;}#main {padding: 50px 0 0;}#content {float:left;width: 500px;padding: 1px 0 60px;border: 1px solid #fff;}#sidebar {float: right;width: 210px;padding: 1px 0 60px;border: 1px solid #fff;}
A #main doboznak nincs szélessége - az addig nyúlhat, ameddig a takarója ér. Mi lesz a takaró? Hát a #wrapper, ami tulajdonképpen a weblap vászna. Mint a festőnek. Ez az a terület, ami felett rendelkezünk az arculat kialakításakor. Természetesen ennek a szélességét is mi szabhatnánk meg, de inkább ne játszunk itt vele.
Azért nem találkoztunk vele, mert még valahol a header.php-ben van megnyitva és a footer.php-ben van bezárva, ez ugyanis mindent magába foglal. Most ne foglalkozzunk vele, elég ha tudjuk, hogy az én sablonom szerint most 746px hely van a tartalomnak. Azt nyomozd ki, hogy nálad mekkora ez az érték.
A teljes szélességből a content nálam 500px, a sidebar pedig 210px. Ez összesen 710px, a 746px-ből fennmaradó rész pedig a tartalom és az oldalsáv közötti üres terület.
Ez sablononként szintén változó. Mivel most jelentős távolság van a tartalom és az oldalsáv között, nem elegendő az oldalsáv szélességével növelni a ratalom szélességét, én adok neki 730px-t.
Ezt a 730px-t egy osztályban deklaráljuk, amit aztán hozzárendelünk az oldalsablonon lévő content dobozunkhoz. A style.css-t tehát egészítsük ki ezzel:
- style.css
....wide{width: 730px;}...
Szükségünk lesz még egy osztályra, amihez az eredeti szélességet rendeljük hozzá:
- style.css
....normal{width: 500px;}...
Ha ezek megvannak, akkor a #content-hez rendelt szélességérték törölhető (én csak áthúztam, de te töröld ki!):
- style.css
#content {float:left;width: 500px;padding: 1px 0 60px;border: 1px solid #fff;}
Kész is lenne? Dehogy!
A stíluslap rendben van - de az új osztályokat hozzá kell rendeljük a tartalomhoz. Mely állományok érintettek a változásban? Mindegyik, amelyikben szerepel a <div id=”#content”> sor!
Nálam ezeket kellett szerkeszteni: archive.php, index.php, page.php, search.php és a single.php.
Lehet hogy neked van még néhány, vagy éppen ezek közül hiányzik állomány. A sablonod mappájában lévő valamennyi PHP kiterjesztésű fájlt nézd meg. annyiban könnyű a dolgod, hogy ez a sor valahol elöl kell hogy legyen, mindenképpen látnod kell a képernyődön miután megnyitottad a php forrást.
Minden egyes ilyen forrásban módosítanunk kell a fenti sort a következőre: <div id=”#content” class=“normal”>
Na és persze ott van nekünk a page-nosidebar.php, ahol pedig így módosítunk: <div id=”#content” class=“wide”>
Na most van kész - és arra kérlek, segíts újra!
Félek, hogy ez már túlságosan méylen technikai jellegű ismertető volt, és a többség a 14. sor olvasása után feladta. Szerinted? Szabad ilyen tartalommal itt foglalkozni, vagy inkább soft-osabb, könnyebb problémák megoldásai legyenek csak? A hozzászólásoknál várom a válaszod!
Iratkozz fel a blog hírlevélre vagy az RSS értesítőre!
Címkék: wordpress, wordpress sablon, csináld magad, sablonszerkesztés
Attila, szuper.
Gyorsabb elolvasni itt 2 perc alatt, mint fél napig kisérletezni.
Pluginfejlesztésről nem akarsz írni?
Egyébként nem értettem az elején, hogy mit lehet csinálni Wordpressben Java-val (“a java még hátravan”) :D
Törökné Ildikó
2009.07.17. 23:13
Egyetértek Nórával.
Én is nagyon örülök a részletes leírásnak. Nem mindig akad hozzáértő, meg ugye tekintettel vagyunk mások idejére is.
Köszönöm, érdekel csak még alig értek belőle valamit, én nem merek nagyon változtatni az oldalon mert félek hogy elrontom még azt is amit eddig megcsináltam.
Pletnik László
2009.07.19. 22:37
Sziasztok!
Nekem, mint kezdőnek túl “kemény” az anyag, de látom, hogy a többség szereti!
Nagyon örülök ennek, Attila, köszönöm a részletes leírást.
Szia Attila!
Nagyon hasznos minden írásod és kezdek vele megbarátkozni. Jó, hogy nem magamnak kell kitalálni a buherálást.
Én most állok át egy másik CMS-ről Wordpress-re. Elég jól haladok, de szükségem lenne egy kis segítségre. Pontosabban egy pluginra.
Szeretném, hogy az oldalam blog része más témát használjon, ne azt amit fő-ként kijelöltem.
Létezik ilyen?
A másikban volt erre lehetőség. Itt egyenlőre nem találom.
Köszönöm.
Úgy érzem meg kell ‘lessem közelebbről a WP-t! :)
Szia László!
Találkoztam hasonló megoldással - nyilván megoldható ez is (utána kell nézzek), bár a logikáját nem nagyon értem: miért kell hogy teljesen másképpen nézzen ki a blogod, mint a hozzá tartozó aloldal?
Mennyit foglal egy WP-motor alapjáraton már feltelepítve a tárhelyre ?
A 2.8.2-es 7.7 MB - a fájlok legalábbis. Ehhez add még hozzá az adatbázist, alapjáraton ez 400-500KB. DE - a postok, hozzászólások, cikkekhez felhasznált képek megnövelik a méretet abban a pillanatban, ahogy elkezd “élni” a blog.
OK, köszönöm a gyors választ! Az adatbázis az külön van, csak a forrás érdekelt.
Kovács Péter
2009.11.19. 14:00
Nagyon köszi sokat segítettél most ismerkedem a Wordpess-el.



Balogh Attila
Attila blogger, trainer és WordPress fanatikus.