WordPress – portál címlap készítése


A tutorial.hu -n a hírek és a linkek bevezetésén már jó ideje filóztunk, de csak nem sikerült dűlőre jutni, hogy milyen rendszeren fusson. A lehetőségek amik felmerültek a következők voltak.

  • Az első ötlet az volt, hogy telepítünk még egy wordpress-t és oda írjuk a híreket, akkor csak pár egyedi widgetet / plugint kell írni ahhoz, hogy a két wordpress között az oldalsó blokkok rendesen frissüljenek. Nem volt túl elegáns megoldás így elvetettük az ötletet.
  • A második ötlet egy Pligg rendszerbe állítása lett volna, ami szintén skinezést és widget gyártást feltételezett volna, viszont akkor sokkal jobban ki tudtuk volna bontani a linkeket illetve hosszabb távon egy rendezett link katalógust lehetett volna csinálni. Időhiány miatt elvetettük az ötletet (de nem végleg).
  • Volt ötlet arra nézve, hogy egy kifejezetten link directory scriptet telepítünk és abba visszük fel a linkeket. Természetesen ide is kellett volna valami plugin ami a wordpress-be átemeli a dolgokat.
  • Írjunk / keressünk wordpress plugint erre a célra, ha van értelme már biztos megcsinálták, max nekünk nem tetszik :)

A végeredmény végül mégsem ezek közül került ki, hanem kategória szűrésekkel lett megoldva a feladat.

A wordpress alapértelmezetten tudja a postokat filterezni, ezáltal tetszőleges, egyedi lap alakítható ki. Ez történt a tutorial.hu esetében is. Nézzük meg, mit-hol-hogy kellett ehhez módosítani.

A hírek egy “hirek” kategóriába mennek, minden más maradt változatlanul.

A template index.php -ja pedig a következőképpen módosult:

1
2
3
4
5
6
7
8
9
10
11
12
## HTML fejléc ##
## HIREK ##
<?php $hirek = new WP_Query('cat=789&showposts=10'); ?>
<?php while ($hirek->have_posts()) : $hirek->the_post(); ?>
## Megjelenites ##
<?php endwhile;?>
## HTML ##
## Rendes postok ##
<?php query_posts('cat=-789'); ?> 
<?php while ( have_posts() ) : the_post() ?>
## Megjelenites ##
<?php endwhile;?>

Figyelem: a fenti kódban a ## jelekkel jelzett részek nem kommentek, hanem oda kell bemásolni a megfelelő php kódrészleteket az index.php egyéb részeiből.

A WP_Query modullal létrehoztunk egy teljes értékű lekérdezést, aminek a paramétereit mi határozzuk meg. A cat megadja, hogy melyik kategóriából szeretnék kérdezni, a showposts pedig azt, hogy hány darabot szeretnénk visszakapni. Ezek után elindítjuk a The_Loop -ot és mintha rendes postok lennének, a szokott függvényekkel tudunk rajtuk dolgozni.

A query_posts pedig a már létező default lekérdezés paramétereit módosítja, ami azonban nem tökéletes hiszen minden default érték elveszik, tehát lapozó pozíció, más kategória szűrések stb.. minden. A cat paraméternek ha egy negatív számot adunk, akkor minden post-ot visszakapunk ami nem szerepel az adott kategóriában. Ez azonban php5 és 2.5.1 -es wordpress alatt nem tökéletes.

Mind a WP_Query mind a query_post fogad még kategória neveket is, azonban mivel így is / úgy is kézzel kell módosítani a template-t, spóroljunk meg a rendszernek egy sql lekérdezést és írjuk be a kategória számát.

A vonatkozó wordpress Codex oldal: The Loop

Kapcsolódó bejegyzések:

A cikket beküldte: TLoF (http://tlof.hu)

4 hozzászólás

  1. C.M says:

    Már éppen írni akartam, hogy nem sikerül, aztán rájöttem, hol rontottam el, és ezt leírom, hátha valaki, aki szintén olyan kezdő, mint én, hasonló problémába ütközik:

    Én egy page-be szerettem volna ezt beépíteni, hogy a page (oldal? – nincs magyar fordítás a wp-en, a “nem dinamikus oldal”) szövege után, jöjjön be egy bizonyos kategória (oktatási segédanyagok, egy oktatásról szóló page-en) összes bejegyzése. A kódot először a page szerkesztőjébe (Wirte page) szerettem volna beletuszkolni, persze html-kód nézetben :):). Így naná, hogy nem ment :)

    Aztán, megnéztem, milyen template tartozik az általalam szerkeszteni kívánt page-hez, ezt copyztam, majd átneveztem, mind a file nevét, mind a forráskódban szereplő címét. Azután megnéztem, hol ér véget a page eredeti szövegére vonatkozó kód (nálam main entry), és beillesztettem a ti kódotokat, persze a kategória szerint átírva. Majd nagy nehezen rájöttem, hogy ##megjelenés## nem egyenlő a -sel, szóval nem magyarázat, hanem hiányzó kódrész :). Úgyhogy oda bemásoltam a bejegyzés megjelenését a főoldalam template-jének a forráskódjából, ami erre vonatkozik (mivel azt szerettem volna, ha úgy néznének ki ezek a postoki). Ezután ezt az új templete-et feltöltöttem a többi közé, a page-hez rendeltem, és kész :)

    Lehet, hogy túlbonyolítottam, de működik :) (Végre!)

  2. C.M says:

    nem egyenlő a :)

  3. C.M says:

    na, sehogy sem írja ki, szóval az a láthatatlan kódrész(ami itt is az), ami csak magyaráz és a kódban való tájékozódásban számít

  4. optikus says:

    en ugy csinaltam az ilyeneket hogy a ketegoriak kozul “lefoglaltam” az elso 5 azonositot. majd ezeket felhasznalva irtam at a kodot. van olyan kategoria ami nem publikus, az peldul nem jelenik meg a kategoria faban, keresoben stb. szintugy van mely csak a faban jelenik meg de az ebbe tett postok a cimlapon nem jonnek csak a kategoriara kattintva. aktualis wp-ben nem tudom van e mar kategoria rendezes a fahoz (sidebar) de en mysqlben felvettem egy sort mezot es arra rendezek (az abc nem volt szimpi). szoval egy kis buheraval sok mindent meg lehet csinalni benne (en eletemben ekkor lattam php-t eloszor de ment es ha utananez az ember meg nezi masok kodjait akkor egesz kultur modon meg lehet valositani).

Szólj hozzá
a WordPress – portál címlap készítése c. bejegyzéshez

- Engedélyezett HTML elemek: <a> <em> <strong> <ul> <ol> <li>
- Forráskód beküldéséhez tedd a kódot ezek közé: <pre lang="php" line="1">Kódrészlet helye itt</pre>