Drupal commerce-ben készítek egy shop-ot és a következő problémába futottam.
Egy termék megjelenítésénél a képre szeretnék tenni egy feliratot, ami jelen esetben a hozzá kapcsolt kifejezéstől függ, egy bizonyos taxoonomia term esetében kell, hogy ez megjelenjen. (láttam már 2 ilyen webshop-ot, amit szintén commerce-ben készítettek)
A termék megjelenítését Display suit-al végzem és abban vettem fel egy mezőt, amiben azt terveztem, hogy megvizsgálja, hogy a term azonosító a keresett vagy sem és ebben az esetben elhelyez egy class-t az oldal html kimenetében, amit a css-ben - már megformálok.
Viszont ebben a code field típusú mezőben a code-nál elvérzek. Nem igazán tudom, hogy hogyan nyerjem ki az infót.
Ha tud valaki segíteni?
Ha arról van
szó hogy van a node (itt termék) teljes nézete, és a node-hoz tartozik taxonomy term-et tartalmazó field is.
Ha pl. ilyen az url: /node/2
akkor kb. így kéred le kódból a node-hoz tartozó taxonomy term-eket:
A code field alatt látod a használható token-eket.
Nem próbáltam a kódot, csak fejből írtam, néhány webes link alapján összerakva, de a logika talán jó.
A fenti kód elméletileg egy div-et rak az image field-ed köré a taxonomy term id-kel a a div class-ába.
Inkább az $entity objectet kéne felhasználni a célra
Inkább az
$entity
objectet kéne felhasználni a célra, ami a Display Suite code fieldjében elérhető, ha a megfelelő DS-almodulok be vannak kapcsolva.Most sajnos nincs időm konkrét példát írni.
sose írj php kódot uin!
php filter, views_php és társai egyértelműen felejtős, és a ds code field sem erre van kitalálva, hanem arra, hogy tetszőleges html-be ide-oda bepakolj egy-egy adatot, nem pedig arra, hogy komplett alkalmazás logikát építs bele. Az ilyen textaraeba hányt php kódoknak egy vége lehet, előbb-utóbb jön egy olyan frissítés, ami rosszabb esetben kinyírja az oldalt, de minimum elcsesz valamit, és iszonyat mennyiségű agysejt árán fogod megtalálni, hogy melyik textfieldben van a hiba.
Ha már php kódot írsz, semmi akadálya nincs, hogy azt a megfelelő hookban tedd meg.
Pl egy preprocess_node a sminkben:
_process nodeban közvetlenül a ds templatebe lehet injektálni akár ds régiót célozva.
----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.
"_process nodeban közvetlenül
"_process nodeban közvetlenül a ds templatebe lehet injektálni akár ds régiót célozva."
Erre tudsz esetleg rövid szemléltető példát mutatni?
Kösz!
Köszi a sok infót, én is arra
Köszi a sok infót, én is arra gyanakodtam, hogy nem a legjobb a ds-ben mindezt megoldani, de nem találtam rá más viszonylag egyszerű megoldást, a hook-okban meg nem igazán vagyok még otthon.
De úgy érzem itt az idő, hogy belevessem magam.
Most jutottam el oda, mivel
Most jutottam el oda, mivel más megoldást nem találtam, hogy komolyabban foglalkozzam ezzel.
Az nem világos, hogy pontosan hová irjam ezt a kódrészletet.
Melyik template file-ba, kell beletennem?
Gyorsan tanulok, de még mindent nem értek a drupal-ban teljesen.
Előre is köszönöm
A sminkedben
van valószínűleg egy
template.php
nevű fájl
Ebben tudsz drupal hook-okat létrehozni
A fenti kódot így rakd be, csak a saját theme-d azonosítóját rakd be a függvénynévbe.
Köszönöm, megpróbáltam, de
Köszönöm, megpróbáltam, de nem törénik semmi látszólag, nem találok a keletkezett html kódban erre vonatkozó bármit is.
A kódban
ez a taxonomy field azonosítója: "field_voc_category"
Nálad is ez az azonosító?
Amúgy logikailag jónak tűnik a fenti kód. Nézz bele az objektumokba is, pl. így:
A devel modult engedélyezd, ha a dpm() függvényt használod.