Opgelost: Block met gerelateerde items (Taxonomy + Views)

Forums: 
Drupalversie: 

Ik zoek een manier om gerelateerde nodes weer te geven in een detailpagina.

Views & Taxonomy leken me het meest aangewezen om dit te bereiken, maar blijkbaar is het niet zo eenvoudig. De termen zijn reeds aangemaakt, evenals de View, maar het doet niet echt wat ik ervan verwacht.

Dit is hetgeen ik wil bereiken:

Hiervoor heb ik vooraf een vocabulary gemaakt met daarin verschillende termen, waaronder "PHP" en "radiospot".

Nieuwsbericht 2 heeft de term "PHP" en Nieuwsbericht 4 heeft de term "radiospot". Toch verschijnen béide op een pagina met de term "PHP". Er moet dus iets foutlopen bij de instellingen van mijn View.

Dit zijn mijn View-instellingen:

De Filters.

De relationships:

Heeft iemand een idee hoe ik dit best aanpak? Liefst zonder het gebruik van extra modules, zodat ik het idee achter Views en Taxonomy beter kan begrijpen.

Op deze pagina staat hoe je iets dergelijk kan bereiken zonder het gebruik van Views (ik krijg het echter niet aan de praat). Is dit wel een goed idee, of is het beter om alsnog Views te gebruiken omwille van de meer toegankelijke aanpasbaarheid?

P.S.: Is het gebruik van Taxonomy wel de juiste/beste manier om gerelateerde items weer te geven?

Het snippet dat je hebt in je link is voor Drupal 5 dus dat zal niet werken op Drupal 6.
Je kunt best views gebruiken ivm aanpasbaarheid, ik heb wel ergens een snippet liggen dat werkt voor gerelateerde content; moet het eens opzoeken.
Je kunt ook gerelateerde content verkrijgen via een module http://drupal.org/project/relatedcontent (heb ik echter ooit slechts eenmaal gebruikt in d5 dus weet niet meer precies hoe het werkt) of via een blok dat je kunt instellen als je de Apache Solr search module gebruikt http://drupal.org/project/apachesolr, bij de Solr oplossing krijg je ook gerelateerde content op basis van zoektermen.

Hans
KOBA

In je view denk ik dat je misschien beter met argument: taxonomy en dan provide default argument werkt, en dan kun je uit de de url de taxonomy termen verkrijgen van het huidige item. Relationship en filter lijken mij niet nodig.

Hans
KOBA

Wel, de beste manier om dit te doen werken... Is de module gebruiken die daarvoor gemaakt is: http://drupal.org/project/relevant_content

De relationship heb je idd niet nodig in dit geval. En check ook eens in het algemeen het gebruik van arguments, da 's heel krachtig.

Maar in jouw geval zou ik gewoon die module nemen, die zorgt er trouwens ook voor dat je per relationele een ander aantal related nodes kan oplijsten.

Interessant die relevant content module en ook de vergelijking van gelijkaardige modules op http://drupal.org/node/323329

Hans
KOBA

Bedankt Hans & Wim!

Ik heb deze voormiddag de relatedcontent geprobeerd, maar heb me wat vastgereden. Ik vermoed dat dit komt omdat mijn menu zelf geen Taxonomy gebruikt, en de termen in de url dus niet altijd overeenkomen met de termen in de vocabulary. Apachesolr was net geïnstalleerd en ik was reeds de documentatie aan het doornemen (vrij technisch) tot ik de relevant content zag in deze thread.

Die doet inderdaad perfect hetgeen ik wil. Het neemt veel uit handen zodat er in Views niks meer hoeft te gebeuren. Om Views steeds meer onder de knie te krijgen is het the easy way out, maar waarom moeilijk maken als het perfect makkelijk kan precies.

De module Relevant_content laat geen "meer"-link toe. Ondertussen heb ik een tutorial gevonden die toont hoe je het uitwerkt in Views: Using Views 2 and Drupal 6 to Create a Related Pages Block

Nog een gelijkaardige module: Similar By Terms

Je link werkt niet meer, kan ik de tutorial ergens anders volgen? Ik denk dat ik goed bezig ben, ik heb een attachment gemaakt, dat alle items weergeeft (niet enkel gerelateerde), ik wil nu via mijn pagina een argument doorsturen naar mijn attachment, dat hij weet waar hij moet zoeken. Hoe kun je dit doen?

Vreemd, bij mij werkt ie nog steeds. Misschien was hij even down.

De code die hij gebruikt voor zijn Taxonomy-argument staat in feite in een screenshot. Hier kan je't kopiëren (zonder de php-tags):

<?php
$node = node_load(arg(1));
if($node) {
foreach($node->taxonomy as $term) { $terms[] = $term->tid; }
return implode('+', $terms);
} else { return; }
?>

Mocht de link alsnog niet werken, hier is een screenshot:

Als je een foutmelding krijgt, dan is dit de fix:

Brad wrote 35 weeks 2 days ago
had a problem using gost_ "What if you want to show only" comment below for my site. The code worked great expect that the block I was using it for was isolated to a single Content Type.

Here is his original code:

<?php
$node = node_load(arg(1));
if ($node) {
$terms = taxonomy_node_get_terms_by_vocabulary($node, 6);
foreach ($terms as $tid => $term) {
$tids[] = $tid;
}
return implode ("+", $tids);
}
return false;
?>

Now if I needed this on every page then I wouldn't have had any problem. But I needed it on only a single Content Type page. Now I already had the region isolated to that Content Type, but still it was producing an error. The problem I was having was it was producing this error on every other page that did not have a term.

"warning: implode() [function.implode]: Invalid arguments passed in /home/hpelive/public_html/sites/all/modules/views/plugins/views_plugin_argument_default_php.inc(48) : eval()'d code on line 6."

Now it was discussed below about fixing that by adding a term to each node but that is not really logical if you have many node as some describe.

So my fix was to isolate that in the Views Argument based on Content Type. So I replaced Line 2:

if ($node) {

with this:

if ($node->type == 'episode')

where "episode" is my Content Type. So my entire code looked as follows:

<?php
$node = node_load(arg(1));
if ($node->type == 'episode') {
$terms = taxonomy_node_get_terms_by_vocabulary($node, 3);
foreach ($terms as $tid => $term) {
$tids[] = $tid;
}
return implode ("+", $tids);
}
return false;
?>

Not the most complicated of fixes but hopefully it will be able to help someone else.

Actuele inhoud

09 feb 2012

08 feb 2012

07 feb 2012

06 feb 2012

05 feb 2012

04 feb 2012