Hasonló tartalmak megjelenítése

Paal képe

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?

Drupal verzió: 
Fórum: 
Illyés Edit képe

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.

<?php
$product_id = explode('/', $_GET['q']);
$product_id = $product_id[6];
$product_id = explode('-', $product_id);
array_pop($product_id);
return $product_id = implode('-', $product_id);
?>

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).

0
0
Paal képe

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:

if(arg(0)=='node' && is_numeric(arg(1))) {
	$nid = arg(1);
	$parent_node = node_load($nid);
	$tids = array_keys($parent_node->taxonomy);
	dvm($tids[0]);
return $tids[0];
}

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:

if(arg(0)=='node' && is_numeric(arg(1))) {
	$nid = arg(1);
	$parent_node = node_load($nid);
	$category = $parent_node->field_category_id[0]['value'];
	dvm($category);
return $category;
}

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!

0
0

--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan

Illyés Edit képe

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?

0
0
Paal képe

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...

0
0

--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan