(gelöst) Views Block mit Taxonomy Argument filtern?
am 03.11.2010 - 12:06 Uhr in
Hallo, ich habe schon einen Haufen Suchergebnisse ausprobiert und zu dem Thema wurde ja auch schon einiges geschrieben, aber irgendwie finde ich für meinen Fall nicht die passende Lösung. Vielleicht könnt ihr mir ja weiterhelfen:
Ich habe zwei Content Typen ("Angebot" und "Event"). Bei der Erstellung von diesen Nodes können für beide Content Types mehrere Taxonomy Terms aus dem gleichen Vokabular zugewiesen werden (Konkret: Städte).
Ich habe nun einige Page Views gebaut, die die Stadt als Taxonomy Term als Argument nutzen, um so nur Inhalte für die jeweilige Stadt anzuzeigen. Das funktioniert soweit. Der Pfad in einem solchen Fall ist z.B. /neue-angebote/berlin
Nun habe ich aber Views, die als Block ausgegeben werden und hier funktioniert das mit dem Argument überhaupt nicht. Wenn ich z.B. auf /neue-angebote/berlin bin, würde ich erwarten, dass mir in der Block View auch nur Inhalte für Berlin angezeigt werden und nicht für alle vorhandenen Städte.
Das ist erstmal mein größtes Problem. Ich fürchte aber, dass es danach noch ein zweites gibt:
Die Detailansicht der Nodes findet z.B. auf /angebote/ein-tolles-angebot statt. Da hier in der URL die Argumente fehlen, werden in der Sidebar in der Block View wahrscheinlich wieder alle Inhalte für alle Städte angezeigt, weil ja das Argument fehlt. Ich müsste der Block View also sagen, dass zusätzlich zu dem Argument in der URL (siehe Problem 1) auch nach dem zur aktuell angezeigten Node zugeordneten Taxonomy Term gefiltert werden muss. Geht das?
Danke + Gruß
- Anmelden oder Registrieren um Kommentare zu schreiben
Wie folgt gelöst: if (arg(0)
am 03.11.2010 - 18:55 Uhr
Wie folgt gelöst:
if (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
if (count($node->taxonomy) > 0) {
foreach ($node->taxonomy as $term) {
$term = $term->name;
}
}
$term = strtolower($term); // for some reason needed in my case
}
else {
$term = arg(1);
$term = str_replace('-', ' ', $term); // for some reason needed in my case
}
return $term;
Dabei gehst Du implizit davon
am 03.11.2010 - 22:54 Uhr
Dabei gehst Du implizit davon aus, daß der Node nicht mehr als einen Taxonomie-Begriff hat. Es wird immer nur der letzte Term genommen und auf Lowercase konvertiert.
Beste Grüße
Werner
Genau, für meinen Fall reicht
am 03.11.2010 - 22:59 Uhr
Genau, für meinen Fall reicht das. Ginge aber mit Sicherheit noch eleganter ;-)