Node attēlu stili atkarībā no lauka vērtības un Node view webform

edgarsv Wed, 12/05/2012 - 23:43

Izstrādāju lapu, kurā būs apskatāmi visādi nieciņi (preces) un tos varēs iegādāties (ne online, tāpēc UC un Commerce neizmantoju). Radās šādas problēmas:

1) Izveidoju jaunu satura tipu, kurā sadefinēju visus parametrus, attēlu lauku un taxonomy term izvēlni ("item_status"): Publicēts, Rezervēts, Pārdots. Atkarībā no tā, kāda ir izvēlēta "item_status" vērtība gribu redzēt uz attēla pāri tekstu "Rezervēts" (kad "item_status" ir rezervēts) un "Pārdots" (kad "item_status" ir pārdots). Bildes ar tekstu var saģenerēt ar attēlu stiliem, bet jautājums ir kā skatā piemērot dažādus attēlu stilus atkarībā no "item_status" vērtības? Ak jā, tam visam vēl jābūt multilingual - izmantoju entity translation.
 
2) Otrs, ne mazāk svarīgs, jautājums ir: kādā veidā parastajā node view (vai Display Suite http://drupal.org/project/ds) pielikt custom web formu (http://drupal.org/project/entityform)? Ideja ir tāda, ka apskatot preci, lietotājs var uzdot par to jautājumus, izmantojot webformu, kurai subject jau ir aizpildīts (preces nosaukums), atliek ierakstīt jautājumu un nosūtīt (tiek nosūtīts e-pasts lapas īpašniekam).
 
Paldies!
P.S. Varbūt vajadzēja taisīt divus topikus?

1) dari to vienkāršāk, ar css uzstilo tos tekstus uz bildēm. Ja nu tie teksti ir ļoti mākslinieciski un ļoti vajag, tad taksonomijai pieliec klāt image lauku, kur būs tā teksta .png bilde. Tad izvadi skatā to lauku un ar css uzliec  virsū produkta bildei.

1) Es pirmo taisītu ar Views block. Izveidotu bloku ar Views palīdzību, izvēlētos laukus - bildi, taxonomijas terminu un plus Global text lauks, lai varētu izvirst, bet īsti šis var būt arī nav vajadzīgs.

 

Katram Views laukam var pārrakstīt rezultātu (Rewrite output). Svarīga ir lauku secība. Piemēram, taxonomijas termins ir kā plain text un noslēts (excluded from display). Bilde - izvēlēta vajadzīgajā izmērā, un ja vēl izmanto kādu Colorbox, vai ko, tad tai automātiski ir iespēja palielināties modālā logā.

 

Tad bildei taisītu Rewrite output, kur definētu papildus savu HTML tagu, kura klase būtu Taxonomijas termina lauciņa saturs. Un tad attiecīgi viss pārējais ar CSS.

 

Lai to visu dabūtu kopā ar Node view, ir nepieciešams arguments (D6 terminoloģijā, Contextual filter D7 terminoloģijā), kurā norādi Get Node ID from URL. Un tad šajā blokā tiks uzrādīta tikai tā bilde un papildus lauku dati, kas attiecas uz konkrēti apskatāmo nodi. Tālāk jau ar templeitiem vai EVA moduli, vai to pašu Display suite, vari to bloku ielikt nodes izklājumā.

 

Cerams, ka saprati būtību.

 

2) Var būt šis var noderēt, ja neesi lasījis: http://drupal.org/node/1540680. Alternatīvu var skatīt šeit: http://drupal.org/project/prepopulate vai arī izmantot Rules, kur aktivizēts ir formu atbalsts, un tad pirms Form construct, ievietot tajā attiecīgo nodes Title vērtību. Mazliet var būt sarežģīti, bet vai tad EntityForm pati nedefinē, pie kura kontent tipa tai ir jāatveras? Title vērtību var iemest arī ar javascript.

Lūk, kā atrisināju augstāk minētās problēmas:

1) Skatā pateicu, lai "item_status" atsevišķi nerāda, bet pie attēla lauka konfigurācijā REWRITE RESULTS -> Rewrite the output of this field ierakstīju:

[field_pictures][field_item_status]
Pēc tam ar CSS "uzbīdīju" tekstu uz bildes un ir OK.
 
2) Uzliku Entity reference moduli (http://drupal.org/project/entityreference). Izveidoju jaunu lauku ar tipu Entity reference un norādīju savu iepriekš izveidoto Entityform type tipa formu. Satura tipa lauku attēlojumā šim laukam ir jāieliek "Rendered entity" attēlojums. Subject lauku aizpildu ar custom JQuery - pēc lapas ielādes tas salasa nepieciešamo info un ieliek nepieciešamajā Entityform laukā.
 
Ja kādam interesē sīkāk, tad prasiet šeit forumā - uzrakstīšu detalizētāk.
 
Paldies gincha, j2b par izsmeļošajām atbildēm.

Prieks, ka izdevās panākt vēlamo. Es varētu piemetināt tikai pāris lietas:

 

1) ja izmantot risinājumu, kur item_status ir kā klase iekš Rewrite output, tad būtu iespējams izmantot grafiksas birgas (png formātā ar transparento backgroud), un tekstu vēl tam visam likt pa virsu. Tad būtu iespēja uzlikt tādu kā grafisku stūri + teksts kas būtu normāli meklējams, un vis ticamāk arī SEO friendly. Ar CSS3 varētu pat izvirst ar teksta sagriešanu, taču pēdējais jau nebūs full proof visiem pārlūkiem.

 

2) Bieži ir tā, ka ja kaut kas strādā, tad labāk neaiztikt :) Taču no vispārējā skatu punkta, es tomēr pameklētu iespējas tās komentāru formas laukus aizpildīt ar PHP, nevis JS. No pieredzes, ja arī JS ir iespējots, tad pie noteiktām sakritībām, js kods var pilnībā neielādēties, kā rezultātā šī forma paliks neaizpildīta. Var būt tā nav no tām, kuras būtu uzskatāmas par vitālām, bet tomēr. Par pārējo - interesanti. Biju pat piemirsis par Entity reference :)

 

Es domāju, ja uzrakstīsi kādu rakstu ar detalizētu step-by-step, tas noteikti nepatraucēs. Tikai vairos šīs lapas vērtību un arī personīgo kompetences informāciju. Lai gan saprotu, ka tas ir neliels darbiņš, un mazliet jāsaņemas :)

Principā šis ir mans otrais projekts uz Drupal - vēl mācos (un priecājos par funkcionalitāti, ko var panāk out of the box). Domāju, ka nav tālu tas brīdis, kad nāksies pielikt roku klāt arī kādai PHP rindas uzrakstīšanai - tad noteikti tas JS variants ar formas subject lauka aizpildi liksies "ne tik elegants". Pagaidām iztikšu tā pat.

 

@j2b, par klases uzlikšanu Rewrite output - tā arī norealizēju, tikai lielos vilcienos par to rakstot, aizmirsās pieminēt.

 

Par aprakstiņa izveidi es domāju, bet tagad priekšā vēl 2 mazi projektiņi (kurus arī plānoju veidot uz Drupal) - pabradāšu vēl nedaudz pa brikšņiem, un tad arī uzrakstīšu savus piedzīvojumus.

 

Ja ir interese, tad realizēto projektu var apskatīt šeit: http://autometropole.lv (dizains nav mans :) )

Prieks, ka cīnies, un ieteikumi noder. Attiecībā uz PHP - domāju, ka šo var panākt arī bez PHP, piemēram ar Rules, vai Prepopulate moduļiem. Taču jāsaka, ka tas nenozīmē, ka tas būs vieglāk, nekā PHP :)