Sziasztok!
Migrálni kellene egy D5 oldalt D6-ra, és szeretnék pár dolgot javítani :)
Van egy CCK-val és taxonómiával kialakított katalógus oldalam. A „termék” a következő mezőket tartalmazza (többek között):
- Cikkszám (field_product_id, txt): 07-454-9001
- Termék kód (field_category_id, txt): 07-454
- Színkód (field_color_id, txt): 9001
Mint látható, a Cikkszámból származtatható a Termék kód valamint a Színkód. Az adott Cikkszámú termék megjelenítésekor meg kell jelenítenem az ugyan olyan Termék kódú, de különböző Színkódú termékeket (adott taxonómián belül).
D5 alatt ezt egy CCK mezővel (field_same_product_code, txt) és php kóddal lett megoldva, hogy minden egyes terméknél insertview segítségével listázza ki az adott nézet eredményeit (u.azon kategóriába tartozó, azonos termék kódú, de egynél több színű termékeket listázza ki):
if(arg(0)=='node' && is_numeric(arg(1))) { $nid = arg(1); $parent_node = node_load($nid); $category = $parent_node->field_category_id[0]['value']; $collection = $parent_node->field_collection[0]['value']; $terms = taxonomy_node_get_terms($nid); foreach ($terms as $key => $tobj) { $args = array($tobj->tid, $node->nid); $tid = $args[0]; } $darabszam = db_result(db_query("SELECT COUNT(catid.nid) FROM {content_field_category_id} catid, {content_field_collection} collection WHERE catid.field_category_id_value='%s' AND collection.field_collection_value= '%s' AND catid.nid=collection.nid",$category, $collection)); if (isset($category) && $darabszam>1) { print "[view:same_product==$tid,$category]"; } }
Szeretném ezt most úgy megoldani, hogy ne kelljen ezt minden egyes termék node-hoz beírni, hanem egyetlen views blokkal kiváltani.
Példa itt.
Hogyan kellene nekiállni?
argumentumos nézet
Készítesz egy nézetet, ami létrehoz egy blokkot, ami termékeket listáz. Az argumentumnál pedig beállítod a termékkód mezőt, aztán Provide default argument > PHP kód, és azzal átadod a nézetnek a termékkódot – amit, ha jól látom, akár URL-ből ki tudsz halászni, ott van minden termék URL végén.
Vagy valami hasonló. Még igazgatni kell, hogy ne dobáljon warningokat, ha nem a várt URL-t kapja, továbbá validálni (vagy a $product_id elemeit (int)-tel semlegesíteni).
Argumentumokkal van most, félig működik
Arguments
Taxonomy: Term ID (with depth)
Content: Termék kód
Taxonomy: Term ID (with depth)
Defaults: Configure Argument Taxonomy: Term ID (with depth)
Title: %1
[X] Provide default argument
PHP Code:
Validator: Basic validation
Action to take if argument does not validate: Hide view / Page not found (404)
Content: Termék kód
Defaults: Configure Argument Content: Termék kód (field_category_id)
[X] Provide default argument
PHP Code:
Validator: Basic validation
Action to take if argument does not validate: Hide view / Page not found (404)
A
<?php
részt csak a láthatóság miatt tettem bele.Most már csak olyan baja van, hogy a „divat” cikkeknél nem mutatja a content részt.
Valószínűleg ez sem a legszerencsésebb taxonomy szerkezet, de most ez van.
A views exportja: http://drupal.pastebin.com/74gTmLdW
Mit ronthatok el? Olyan, mintha a divat taxonomy szerkezete nem felelne meg valamiért neki...
Köszönöm!
--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan
sajnos nem értem
Nem értem a kérdést. A „divat” cikk az egy node, és eltűnik a content-je, ha kiteszed rá a kapcsolódó termékek Views blokkot?
Pontosan
Két taxonomy szótár van. Az egyik a teljes „divat” fának, a másik a teljes „sport” fának.
A „sport” fában lévő node-ok jók (megjelenik a node tartalma + a blokk), a „divat” fában lévő node-oknál meg eltűnik a node content része, csak a blokk jelenik meg.
Az, hogy a morzsa rossz, egy dolog, mert eddig is node_breadcrumb segítségével raktam rendbe, de ez - hogy nem jelenik meg a node tartalma - jobban idegesít. Lövésem sincs, hogy mitől lehet...
--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan