Kép változás aktív node-ra

Ramirez_hun képe

Sziasztok! Megrendelő szeretne tőlem egy ilyet: adott egy oldal blokk, amit a views gerenál. Ez egy lista az adott típusú node-okkal, ahol látszódik a node címe és a benne lévő egyik feltöltött kép, ami fekete-fehérben jelenik meg. Tulajdonképpen egy tartalom lista, ami menüként funkcionál.
Eddig ok.
Olyat szeretnék elérni viszont, hogy az éppen olvasott node esetén, a blokkban lévő képek közül a hozzátartozónál ne fekete-fehérben jelenjen meg, hanem színesben.
Tehát minden f-f, kivéve az a sor a listában, amit pont néz a felhasználó.
Ötlet, hogy lehet ezt elérni? Köszi.

Taxonomy upgrade extras: 
Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
aruna képe

ilyet szeretnél:

  Node details                   Block
+------------------------------++---------------+
|                              ||B&W node/19    |
| node/21                      ||               |
|                              ||B&W node/20    |
|                              ||               |
|                              ||Color! node/21 |
|                              ||               |
|                              ||B&W node/22    |
|                              ||               |
|                              ||B&W node/23    |
|                              |+---------------+
|                              |
|                              |
|                              |
+------------------------------+

A fenti ábrában B&W a bélyegkép akar lenni, a node/2x pedig a node címe.

Ha a node/21-et nézi bal oldalt, akkor jobb oldal a blokkban a node/21 címe előtti kép színes a többi cím előtti kép pedig fekete-fehér.

A fenti feladat megoldását így közelíteném meg:

-----
A tartalomtípushoz csatolt image-hez két bélyegkép preset-et készítenék, mindkettőt azonos méretben, pl. 50x50px, vagy amekkora a blokkban kell.

- Az egyik preset csak kicsinyíti a képet.
- A másik preset kicsinyíti a képet és fekete-fehérre is állítja.
Ezzel a modullal tudsz állítólag olyan kép effektet hozzáadni a preset-hez, ami átállítja fekete-fehérre.
http://drupal.org/project/imagecache_actions

-----
A block nézetben kiraknám minden egyes sorban a fekete-fehér kép és a cím elé (amik látszanak) rejtetten a node id-t és a színes képet.

-----
Ezután kell egy kicsit programozni. Vagy jquery-vel vagy egy views hook-ban (ami a views összerakása után, de még a megjelenítés előtt fut le) módosítani kell a blokk nézetben azt a sort, ami az oldal node id-jét tartalmazza. Itt eltünteted a fekete-fehér bélyegképet és kirakod helyette a színes képet.

-----
Optimalizálási lehetőség az előző pontban: csak a fekete-fehér bélyeképet rakod ki a két bélyegkép közül a blokk nézetben, és cseréled a kép url-jét ott, ahol színesnek kell lennie.

1
0
Ramirez_hun képe

Szöveges feladat értelmezés: 5 pont :-)
Na de viccet félre téve, valóban pontosan ezt akartam elérni.

Nagyon jó az ötlet amit adtál. Annyira kézenfekvő a dupla imagecahce, valszeg pont ezért nem jutott eszembe. Köszönet érte.

Én viszont egyszerű CSS alapon mennék tovább.
Ha egy "active-node" vagy valami hasonló osztályt bele tudnék varázsolni az éppen aktív listelembe, akkor már gyerekjáték lenne ezt megformázni.

Ezt tanulmányoztam:
How to create a menu using views and your theme in Drupal
Viszont az itt szereplő kód valamiért "Notice: Undefined variable: activepath include() függvényben" hibaüzit ad.
Nem túl stabil php tudásommal próbálom értelmezni, egyelőre nem sok sikerrel. Küzdök. De ha van ötlet, meghallgatom.
Köszi!

0
0

- ad astra per aspera -

aruna képe

Ramirez_hun képe

Nem rossz, de nem pont arról szól, ami nekem kéne. Nézegettem hosszan, és ötletes a workaround, amit felvet. Viszont ő ezzel konkrét mezőket jelenít meg, míg nekem elég lenne, ha a blokk div-eibe (kb. mint egy lista elemnél) bele lehetne rakni az "active" osztályt.
Ugye az a link esetében megjelenik automatikusan, viszont a fölötte lévő div-ben nincs ilyen. Ezért aztán a linket lehet szépen formázni CSS-sel, de az egész div-et (és mindent, ami benne van) nem.

0
0

- ad astra per aspera -

eager képe

Az milyen, ha jQuery-vel a views-blockon belüli a.active parent divjére is rá-addClass-olsz egy active (vagy akármilyen) classot, és ahhoz a classhoz meg előkészíted a css szabályaidat?

Persze ez csak js-enabled böngészőkben menne...

0
0
aruna képe

át, hogy tényleg elég-e, ha csak egy class-t raksz az aktív sorra?

Ha színesben és fekete fehérben is kell a kép akkor kell a két preset:

Pl. ilyenek lesznek a képek útvonalai a színes képekhez:

/sites/default/files/styles/thumb_COLOR/public/field/image/img20.jpg
/sites/default/files/styles/thumb_COLOR/public/field/image/img21.jpg

és ilyenek a fekete fehérhez:

/sites/default/files/styles/thumb_B_AND_W/public/field/image/img20.jpg
/sites/default/files/styles/thumb_B_AND_W/public/field/image/img21.jpg

Tehát nem elég ráraknod az active class-t a kép köré, hanem a kép url-jében is cserélned kell az útvonalat.

Persze, ha más a megközelítés, akkor elég lehet csak a CSS class önmagában is.

Szerk: Ha mindkét képet kirakod, akkor tényleg elég a CSS class, és attól függően, hogy van-e class, az egyik vagy a másik képet "nyomod el" css-el (display:none;), de a class feltételes hozzáadásához is szerintem egy views hook kell.

0
0
eager képe

Egy napja nézem, és nem bírom ki, hogy ne kommenteljek rá, még ha mínuszos is lesz...

Ámulatbaejt ez az ASCII art!

Csináltam neked érte mémet:

http://cdn.memegenerator.net/instances/400x/28988145.jpg

0
0
aruna képe

http://www.asciiflow.com/

Az egyik kedvencem.

2
0
Ramirez_hun képe

Először is köszönöm mindkettőtöknek a segítő szándékot.
Másodsorban:
@eager
Valahogy stabilabbnak érzem a php+css megoldást. Első körben ebben gondolkodom, aztán majd meglátjuk meddig jutunk.
@aruna
Szerintem a +class megoldaná a kérdést. Az alap ötletet pont te adtad, és valóban igazad van, két imagecache kell.
A koncepcióm az, hogy a blokkban egyszerre jeleníteném meg mindkét képet (ff és színes) egymás mellett a Views-zal. Viszont az egyikre "display: none" lenne beállítva alapból css-sel. Ha megkapnám a parent div-re az "active" osztályt, akkor ott - szintén css-sel - a két kép közül pont a másik lenne megjelenítve, illetve elrejtve. (ez majd a hover-re is nagyon szépen fok működni elképzeléseim szerint, amihez viszont még az active osztály sem kell)
Részemről szeretem css-sel megoldani, amit csak lehet. Számos okból.

0
0

- ad astra per aspera -