Hogyan dolgozzunk a views template-jeivel?

The spam filter installed on this site is currently unavailable. Per site policy, we are unable to accept new submissions until that problem is resolved. Please try resubmitting the form in a couple of minutes.
Kategória: 
Leírás

Nos, mára teljesen mást szántam, de úgy szeretném írni a postokat, hogy tényleg a legérthetőbb legyen bárki számára, ezért kénytelen vagyok egy kis kitérőt tenni, hogy a következő írások is emészthetők legyenek.
Mik azok a views template-ek, és mihez kezdjünk velük?

A views tulajdonképpen egy SQL lekérdezésből HTML kimenetet generál. A HTML kimenetbe tudunk több szinten belenyúlni. Ezek a szintek a következők:

  • A teljes nézet
  • A nézetben alkalmazott stílus
  • Sorok megjelenése (nem minden stílusban..)
  • Mezők megjelenése

Ha a views szerkesztésekor rákattintasz a Theme: Information-ra, megjelennek azok a tpl file-ok, amiket az adott nézet használ.

A Display outputnál (views-view.tpl.php) lévő tpl a nézet alapvető szerkezetéért felelős. Ő írja ki az admin linket, ez teszi helyére a felfedett szűrőket, fejlécet, láblécet, amiket beállítgattunk a views szerkeztésekor.

A Style output (views-view-stílusamithasználunk.tpl.php) tartalmazza a stílusspecifikus beállításokat, tehát ha pl táblázat megjelenést választottunk, ő készíti a táblázat fejlécét, a sorok, oszlopok formázását.

Row style output: (views-view-fields.tpl.php) Ez nincs minden esetben (pl táblázatoknál sem) . Ő már egyesével dolgozik a mezőkon, kiírja a címkét, a tartalmat a nézet beállításai szerint, gyakorlatilag egy mező html szerkezetét készíti el.

Field mezőneve: (views-view-field.tpl.php) Ezek alapesetben már csak kiírják a mező tartalmát, egyes feladatoknál viszont jó velük dolgozni, mint azt később láthatjuk majd.

Ezek bármelyikét szerkeszthetjük, de csak óvatosan! Az ezekben a file-okban végzett módosítások az össze nézetet érintik, amiket használunk.

Amikor bármilyen tpl file-al dolgozunk, sosem az eredetit írjuk felül, hanem másolatot készítünk róla a sminkünk könyvtárában. Így módosítsunk tpl-t:

A felsorolt tpl-ek közül válasszuk ki azt a szintet, amivel dolgozni szeretnénk. A szintre rákattintva betöltődik az a file, amit aktuálisan használ a views.
Egy egyszerű szövegszerkesztőbe másoljuk be a tartalmát. és végezzük el a kívánt módosításokat, majd mentsük el a saját sminkünk könyvtárába. Ezutén tölsük fel, majd kattintsunk a Rescan Templates gombra. Voila, félkövérrel máris a mi most feltöltött tplünk lesz kiemelve. Ilyen egy tpl szerkezete:

[geshifilter-drupal6]<?php // $Id: views-view-field.tpl.php,v 1.1 2008/05/16 22:22:32 merlinofchaos Exp $ /** * This template is used to print a single field in a view. It is not * actually used in default Views, as this is registered as a theme * function which has better performance. For single overrides, the * template is perfectly okay. * * Variables available: * - $view: The view object * - $field: The field handler object that can process the input * - $row: The raw SQL result that can be used * - $output: The processed output that will normally be used. * * When fetching output from the $row, this construct should be used: * $data = $row->{$field->field_alias} * * The above will guarantee that you'll always get the correct data, * regardless of any changes in the aliasing that might happen if * the view is modified. */ ?> <?php print $output; ?>[/geshifilter-drupal6]

És ami itt fontos: Ami a megjegyzésben az első <?php ?> tag között van szvsz ne töröljük ki! Azt nem hiszem, hogy az oldal funkcionalitásába beleszól (ha jól tudom, a drupal.org verziókezeléséhez kapcsolódó információkat (is) tartalmaz), viszont az ott leírt instrukciók még segítségül szolgálhatnak, ha a későbbiekben variálni kell. Én még pluszban igyekszem kitölteni saját megjegyzésekkel is, hogy képben legyek, miért babráltam..

A mentés viszont egy furfangos dolog.. Attól függően, hogy milyen néven mentjük el a tpl-t, meghatározza a hatókörét, vagyis hogy mely nézetekre lesz érvényes, és már egy órája azon agyalok, hogy hogyan lehet ezt normálisan elmagyarázni..

Szóval-szóval.. A tpl elnevezése minden esetben az alapfile-al kezdődik: views-view/ views-view-unformatted/ views-view-fields/ views-view-field Ezzel azt áruljuk el a drupalnak, hogy a fentebb felsorolt szintek közül melyikkel dolgozunk.

A szűkítéshez kettő darab kötőjelet használunk. Összesen négy szűkítési lehetőségünk van:

  • Nézet neve szerint
  • Alnézet típusa (block/page)
  • Nézet létrehozásakor megadott tag (felül a view settingsnél látható érték)
  • Alnézet típusa sorszámozva

Részletesebben:
A views-view--alnezet_tipusa.tpl.php (pl default - ez tuti van mindenkinek, vagy block/page) Ez az összes nézet azonos típusú alnézetére lesz érvényes.

Használhatjuk a Nézet nevét is: views-view--nezet_neve.tpl.php - ez elég egyértelmű.

Szűkíthetünk továbbá tag-re, ha azt a nézet létrehozásakor megadtuk: views-view--comment.tpl.php. Figyelem! Én a tageket meglehetősen szabadon használom, vagyis magyar ékezetekkel, vesszőkkel. Ha tagek szerint akarsz célozni, csak az angol abc kisbetűs karaktereit használd, különben kutyabetyár zöldséget kapsz vissza!

Menjünk tovább: megcélozhatunk alnézeteket sorszám szerint is: views-view--page-1. Itt láthatjuk, hogy a sorszám megadásához mindössze egy kötőjel szükséges.

És most ugrik a majom a vízbe! Ha eddig megértetted amit írtam, akkor talán feltűnt, hogy így biza nem tudunk konkrétan 1 azaz egy darab alnézetet belőni. Hiszen ha még mondjuk block-1-re célzunk, más nézetünkben is lehet ugyanolyan block-1.

Szóval a lényeg, hogy ezeket a paramétereket kombinálhatjuk is, szintén két kötőjellel elválasztva: views-view--nezet_neve--block-1.tpl.php. Így már tényleg az adott nézetünk egy darab alnézetét túrjuk, és semmi másra nem lesz hatással.

És még egy utolsó kitérő: A Field típusú template-ek. A mezőkre ugyanazok vonatkoznak, mint az összes többire, egyetlen kivétellel: Ha az általunk szépen, pontosan, nekünk megfelelően belőtt nézet végére két kötőjel után odabiggyesszük az (ID:) után szereplő értéket, akkor ez csakis és kizárólag arra a mezőre fog vonatkozni.
Tehát ha a kutyak_nezete harmadikként létrehozott page típusú alnézetének "tistutyafile'" nevű mezőjét szeretnénk célozni, akkor az így fog kinézni: views-view-field--kutyak_nezete--page-3--tistutyafile.tpl.php

Bármennyire is hosszúnak, és bonyolultnak tűnik ez a rizsa, igazából nincs nehéz dolgunk a nézet nevének kiválasztásakor, hiszen a Themes: Information alatt rengeteg lehetőséget felsorol ajánlásként a rendszer. Ez az írás arra hivatott, hogy segítsen megkönnyíteni, hogy melyiket is válasszuk a sok közül - remélem érthetően sikerült összeszedni..

Hozzászólások

Konstruktionen af lbesko er

Konstruktionen af lbesko er baseret p hvor foden rammer en overflade. Nr du ved, hvordan din fod ruller vil du have nogle af revisionen Nike Free Run mysterium Nike Free Run Dam lst. Heldigvis er der et par gode Billiga Nike Free Run lbesko Nike Free Run 3 Anmeldelser placeret online og i magasiner. The evolution of the True Colors approach to learning styles has a lengthy history. During the 1950's a woman named Isabel Myers and her daughter Kathryn Briggs developed the first personality sorter which was based on Carl Jung's book about psychological types. The Myers Briggs type indicator was born and is still widely used in studies and research concerning personalities.

@KZolti: Sosem foglalkoztam

@KZolti: Sosem foglalkoztam még multisite-tal, de valahogy nem úgy működik, hogy sites/all/themes-ben lévő sminkeket minden aloldal eléri?
Ha ez így van, akkor az aloldalak sminkjét úgy kell beállítani, hogy a base theme sites/all/themes témád legyen, és akkor egy helyről kezelheted a tpl-eket.
Sőt, ha ez így van, akkor tulajdonképpen semmi mást nem kell csinálni, csak mondjuk egy sites/all/themes/base könyvtárban létrehozni egy base.info file-t ennyi tartalommal:
name = base
description = base theme közös template könyvtárnak
core = 6.x
engine = phptemplate
Az aloldalak sminkneve.infoba pedig be kell rakni ezt a sort:
base theme = base
Innentől a base könyvtárába pakolhatod a tpl-eket.
(Lehet, hogy van jobb megoldás..)

Multisite-os rendszerben

Multisite-os rendszerben azonos wievs nézetekkel de különböző témákkal, hova lehetne berakni a tpl.php fájlokat, hogy mindegyik site-on használja a views ?
Jó lenne csak egy helyen karbantartani ezeket, de nem jövök rá a nyitjára.

Köszi ez nagyon hasznos volt

Köszi ez nagyon hasznos volt számomra.

Hozzászólás

A mező tartalma nem nyilvános.
  • Internal paths in double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or relative path.
  • Engedélyezett HTML elemek: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <del> <img>
  • A webcímek és email címek automatikusan linkekké alakulnak.
  • A sorokat és bekezdéseket a rendszer automatikusan felismeri.
  • Engedélyezett HTML elemek: <a> <blockquote> <br> <cite> <code> <dd> <del> <div> <dl> <dt> <em> <li> <ol> <p> <span> <strong> <ul>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <bash>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <mysql>, <php>, <python>, <ruby>, <sql>. The supported tag styles are: <foo>, [foo].
  • Minden email cím át lesz alakítva ember által olvasható módon, vagy (ha a JavaScript engedélyezett) ki lesz cserélve kattintható, de biztonságos hivatkozásra.