mehrere Taxonomy terms als Views Argumente
am 16.12.2007 - 19:49 Uhr in
Hi zusammen,
Da ich auf einer Seite stark mit Taxonomie arbeite will ich einen View bauen, mit dem ich komfortabel nach terms filtern kann.
Prinzipiell soll es genau das hier sein:
taxonomy/term/1,2,3
ABER mit ausgeschriebenen Terms, damit es User nutzen können, wenn sie Links bauen.
quasi so:
taxonomy/term/term1,term2,term3
ich finde diese Lösung hier super:
http://drupal.org/node/54455#comment-239583
aber das scheint bei mir mit mehr als einem Term nicht zu funktionieren.
Ich habe mich an die Anleitung gehalten, aber es funktioniert nur mit einem Term, nicht aber mit 2.
Siehe:
http://volunity.net/tags/Aufbau
http://volunity.net/tags/Aufbau,Europa
Meine Einstellungen:
URL:
tags/$arg
Ansichtstyp:
Liste der Anrisstexte
Argumente:
Taxonomie: Begriff ID :: Alle Werte anzeigen :: Option:3
Argument handling code:
<?php
$new_title = '';
if (!$args[0]) return $args;
$new_arg0 = '';
$new_args = explode(',', $args[0]);
foreach ($new_args as $this_arg) {
if (is_numeric($this_arg)) {
$new_arg0 .= $new_arg0 == '' ? $this_arg : ','.$this_arg;
} else {
$these_terms = taxonomy_get_term_by_name($this_arg);
if (count($these_terms)) {
$new_title .= $new_title == '' ? $this_arg : ' - '.$this_arg;
}
foreach ($these_terms as $this_term) {
$new_arg0 .= $new_arg0 == '' ? '' : ',';
$new_arg0 .= _taxonomy_get_tid_from_term($this_term);
}
}
}
if ($new_title) {
$view->argument[0]['title'] = $new_title;
}
return array($new_arg0);
?>
(natürlich ohne die php auf und zu dinger)
Filter:
Node: Veröffentlicht == Ja
Node: Typ :: ist eines von:Blogeintrag,Wikiseite,Foto
Was mache ich falsch?
- Anmelden oder Registrieren um Kommentare zu schreiben
$arg
am 16.12.2007 - 21:18 Uhr
Meine Einstellungen:
URL:
tags/$arg
Ohne mich da jetzt eingedacht zu haben: aber lass das "$arg" weg (steht auch beim Eingabefeld-Hilfetext) - das wird nur verwendet, wenn Du so Sachen wie "tags/$arg/item" bauen willst.
wenn ich $arg weglasse wird
am 16.12.2007 - 21:52 Uhr
wenn ich $arg weglasse wird gar kein Node mehr ausgegeben :(
__
http://aureli.us
Problem Umzingelt - brauche Hilfe beim Erschießen!
am 30.12.2007 - 00:28 Uhr
So.
nach einem weiteren Abend des Lassowerfens haben ich den Übeltäter gefunden (jedenfalls meine ich das)
und zwar habe ich den Umstand (fehler) gemacht beim anlegen der ganzen seitenstruktur für jede inhaltsform separat ein vokabular(freetagging) anzulegen.
Jetzt gibt es aber terms, die in Vokabular1 UND Vokabular2 vorkommen. (z.B. Wikitags und Blogtags)
Damit kommt die Funktion _taxonomy_get_tid_from_term() vermutlich nicht klar.
Da ich kürzlich an anderer Stelle gemerkt habe, das ein einziges Freetagging-Vokabular viel besser ist wäre dies auch eine Lösung für mein Problem.
Stellt sich nur noch die Frage:
wie kann ich die bestehenden 3 freetagging vokabulare zu einem einzigen vereinen?
__
http://aureli.us
Taxonomy switch
am 30.12.2007 - 13:56 Uhr
könnte helfen, gibt aber Einschränkungen.
umzingelt und zu tode stranguliert
am 31.12.2007 - 18:47 Uhr
in anbetracht der ganzen arbeit, die vokabularien zu vereinen habe ich mein gehirn nocheinmal angeworfen und heraus gefunden, das es sehr einfach ist, den argument handling code einfach so umzuschreiben, das er alle terms ignoriert, die nicht in meinem lieblingsvokabular sind:
bestimmt nicht besonders elegant und sauber, aber ein " if ($this_term->vid == $vid) " tut seine sache ganz gut.
<?php
$vid = 2; // vocab ID hier eintragen
$new_title = '';
if (!$args[0]) return $args;
$new_arg0 = '';
$new_args = explode(',', $args[0]);
foreach ($new_args as $this_arg) {
if (is_numeric($this_arg)) {
$new_arg0 .= $new_arg0 == '' ? $this_arg : ','.$this_arg;
} else {
$these_terms = taxonomy_get_term_by_name($this_arg);
if (count($these_terms)) {
$new_title .= $new_title == '' ? $this_arg : ' - '.$this_arg;
}
foreach ($these_terms as $this_term) {
if ($this_term->vid == $vid) {
$new_arg0 .= $new_arg0 == '' ? '' : ',';
$new_arg0 .= _taxonomy_get_tid_from_term($this_term);
}
}
}
}
if ($new_title) {
$view->argument[0]['title'] = $new_title;
}
return array($new_arg0);
?>
__
http://aureli.us