Drupal mezők használata helyettesítési mintaként Views 3-ban

Az alábbi videóban megmutatom miként lehet Views 3-ban egy Drupal mező értékét módosítani, kiegészíteni az „eredmények átírása” lehetőség és a helyettesítési minták segítségével. Két változtatást végzünk.

Először a node cím mezőjét módosítjuk úgy, hogy ne a node-ra, hanem külső URL-re mutasson. (Az egyes URL-eket a tartalomtípushoz hozzáadott hivatkozás mezőben tároljuk.)

Továbbá felveszünk egy hivatkozás mezőt, ami a nézet oldalról az egyes node-okra mutat. Viszont ezt csak akkor jelenítjük meg, ha az adott node törzs mezője nem üres. (Köszönet Szántó Gábornak a tippért, hogy ehhez is használjam a helyettesítési minták lehetőségét!)

Szeretnék még egy gyors példát adni, ami nem szerepel a videóban. Az Integral Vision Workshop címoldalán a fő banner alatt egy “Tanfolyamok” blokk látható, az egyes tanfolyamokra vonatkozó rövid szöveggel. A szövegek címe az oldalon belüli hivatkozás a kurzusok részletesebb leírásához. Itt szintén a helyettesítési mintákat használtuk.

ivws-home

Maga a címlap egy views oldal, ami nem mezőket, hanem teljes tartalmakat listáz. Így a node-id is elérhető a generált kódban. A banner alatti reklámszövegeket egy blokk nézettel hozzuk létre. Ebbe felvettük a „Tartalom: Tartalom azonosító” mezőt, amit nem jelenítünk meg, hanem helyettesítési mintaként használunk. A „Tartalom: Cím” mezőnél a „mező kimenetének felülírása” lehetőséget választottuk és az alábbi kis kódot írtuk be: <a href="#node-[nid]">[title]</a>. A megjelenítéskor a [nid] helyére kerül a tartalom azonosító, a [title] helyére pedig a tartalom címe. Kész. :o)

2012. január 10.Permalink

8 thoughts on “Drupal mezők használata helyettesítési mintaként Views 3-ban

  1. Kedves Tamás!
    Kezdő drupálos (7-es verzió) vagyok.
    Csináltam egy “linkes” nevű tartalomtípust, amibe felvettem az URL mezőt.
    Készítettem vele egy tartalmat, amit a kezdőlapra rakott view mutat is. ( A view már tartalmazott más tartalomtípusokat.).
    A fenti videó alapján megcsináltam a helyettesítést, rendben működik is.
    Csak éppen amik eddig voltak tartalmak, azok címein megszűntek a hivatkozások, sima
    nem kattintható szövegek lettek.
    Többször végigcsináltam a videó alapján és valami miatt nem mégsem jók a régi hivatkozások.
    Van-e ötleted, mit szúrtam el vagy mit kellene beállítanom, hogy az új tartalom címén működő új kattintható külső hivatkozás is menjen, meg a régi tartalmak hivatkozásai is maradjanak meg.
    Valahogy ki kellene szűrni, hogy csak az új tartalom típus címeit alakítsa át, a régieket ne….
    Előre is köszönöm a segítséget!

  2. Kedves Gyula,

    az a probléma, hogy a nézetedben több tartalomtípus van.

    A beállítások a nézet által listázott valamennyi tartalomra vonatkoznak. Így az összesnél megszűnik az hogy linkeljen a cím a node oldalra. Viszont URL meződ (vélhetően) csak a “linkes” tartalomtípusban van, így csak ott lesz olyan érték, amit linkként lehet használni.

    Neked arra lenne szükséged, hogy meg tudj adni egy feltételt, hogy ez az átírás csak akkor történjen meg, ha a tartalom típusa “linkes”. Ilyen feltételt azonban – emlékeim szerint – nem lehet a views admin felületén keresztül beállítani Drupal 7-ben.

    A legegyszerűbb megoldás az, ha egy külön nézetet készítesz a “linkes” tartalmaknak. Ennek annyi a hátránya (ha amúgy ez lenne a célod), hogy nem tudod őket a többi tartalommal egy listában megjeleníteni.

    Esetleg megnézheted ezt a modult (én még sose használtam): https://www.drupal.org/project/views_conditional

    Egyéb lehetőség a cím kimenetének átírása a sminkben, de ehhez már kódírási tapasztalat szükséges.

  3. Kedves Tamás!

    Az helyzet, hogy ha egy tartalomtípus van, akkor sem működnek azok tartalomcím-linkek, amiknél nincs megadva az URL mező.
    Kipróbáltam, hogy csak egy adott tartalomtípust tartalmazzon a view.
    Hozzáadtam ezt az URL mezőt a típushoz.
    Megcsináltam a view-t és ahol nem adok meg értéket az URL mezőben felvitelkor, akkor
    azoknál nem is működik a link.
    KIpróbáltam a views-conditional modult. Elég jónak és használhatónak tűnik de a problémámat nem oldja meg.
    Megadom mit csináljon, ha van az URL mezőnek értéke és azt is, ha nincs.
    Ha van értéke akkor [field-url] tokent, ha nincs, akkor az eredeti link [view_node] == Tartalom: Hivatkozás tokent adtam meg.
    Szerintem ez utóbbi a fő probléma. Mármint hogy ez nem egy link.
    Kipróbáltam azt is, hogy a Tartalom:Cím-nél a Rewrite result alatt a Link path-hoz beírtam ezt a [view node] tokent, hogy ez ugye akkor az eredeti linket jelentené, de nem.
    Kérdésem, akkor hogy melyik az a field, amit ha hozzáadnék a viewhoz, az eredeti tartalomcím (node) linkjét jelentené?
    Ha ez meglenne, akkor már egyszerűen a feltételhez be tudnám írni.
    Ha nincs, akkor tényleg maradnak az egyéb lehetőségek,mint kódírás.
    Még egy ötletem van, hogy valahogy a tartalom felvitele után az URL mező kapja meg a node-url címét, ha nem írtam bele semmit, de ez is gondolom már kód írást igényel.

  4. Kedves Gyula,

    persze, hogy nem működnek, hiszen át lettek írva. A videóban is elhangzik, hogy éppen ez a cél: ha van url, arra mutassona cím, ha nincs, akkor ne legyen link.

    Ha azt szeretnéd, hogy ha nincs kifele mutató link, akkor a tartalomra linkeljen a cím, arra a legegyszerűbb megoldás az, hogy tartalomszerksztéskor az url mezőben a node saját útvonalát adod meg.

    Mint írtam, a views conditionalt én még nem próbáltam, így nem tudok a használatában tanácsot adni. Egyébiránt szerintem érdemes lehet ennek a bejegyzésnek az utolsó bekezdését még egyszer elolvasnod, hátha az segít (nem biztos).

    Ha nem boldogulsz, javaslom, hogy írj a Drupal.hu fórumára, sok segítőkész ember olvassa (többen, mint az én blogomat ;)), biztos lesz, aki hasznos tanácsot ad.

    • Kedves Tamás!

      Nagyon köszönöm az eddigi segítségedet!
      Igen, azt próbáltam, hogy az url mezőbe beírom a node útvonalat. Csak gondoltam hátha van a drupálnak erre megoldása.
      A fórumot próbáltam először, regisztráltam is de napokig nem kaptam semmi választ a regisztráció sikerességéről. így ide írtam, hátha előbb jutok előrébb.
      Lehet újra próbálom a regisztrációt, hátha valami balul sült el.
      Még egyszer köszi!

  5. Megtaláltam a megoldást.
    Tényleg segített az utolsó bekezdés…:-)
    Felvettem a mezők közé a Tartalom:Nid mezőt.
    Felvettem ugye az URL mezőt.
    Felvettem még egyszer a Tartalom:Title mezőt. (mert ha átrendezem, nem látja mintaként a views-conditional.)
    A mezők sorrendje:
    Nid
    URL
    Cím
    Views-conditional mező
    CÍm
    +….egyéb mezők

    A views-conditional-nál azt adtam meg, hogy ha a üres az URL, akkor
    node/[nid] az érték,
    ha nem üres, akkor meg az URL mező értéke.
    Aztán már csak a második Tartalom:cím mezőbe megadtam, hogy linkként mutasson a View-conditional értéke.
    és lőn, működik!!!!!!
    Köszi!!!!!

    • Nagyon örülök, hogy sikerült! :)
      Szívesen!

      (A d.hu adminok sokszor csak napok múlva reagálnak – beleértve engem is –, vagy akkor sem. :( Érdemes lehet egy–két pingető emailt küldeni az eredetileg kapott értesítésre…)

Comments are closed.