Kategorienliste aus einer Taxonomie mit Views erstellen (soll in einer Seitenleiste bei best. Inhaltstyp erscheinen,
am 11.11.2010 - 11:12 Uhr in
Hallo zusammen,
ich habe mit Ubercart einen Shop erstellt. Nun möchte ich, dass die Kategorien des Shops in der Seitenleiste immer dann erscheinen, wenn man die Produktseiten oder die Katalogseite einer bestimmten Kategorie (also catalog/1 z.B.) ansieht - und sonst nicht.
Leider funktioniert es schon nicht, die Kategorien für alle Inhaltstypen außer dem Shopprodukt auszublenden, obwohl ich als Filter Node=Inhaltstyp Produkt ausgewählt habe.
Bei meiner anderen View hat es genau so gut funktioniert.
Außerdem gelingt es mir nicht, die doppelten Einträge rauszufiltern. Das heißt:
Meine Kategorienliste sieht grade so aus:
Küche
Häuser
Garten
Garten
Garten
Gartenhaus
Häuser
Bad
Leuchten
Anbau
Warum? Wähle ich als Ausgabeart das Pulldown-Menü, wird alles hübsch angezeigt (Leider funktioniert das Umschreiben der Links mit rewrite Url nicht :-((()
Hier die
Abfrage - Daten:
SELECT node.nid AS nid,
term_data.name AS term_data_name,
term_data.vid AS term_data_vid,
term_data.tid AS term_data_tid
FROM node node
LEFT JOIN term_node term_node ON node.vid = term_node.vid
LEFT JOIN term_data term_data ON term_node.tid = term_data.tid
WHERE node.type in ('product')
Und im Anhang der Screenshot der View.
Vielen Dank für die Hilfe.
Anhang | Größe |
---|---|
Bild 2.png | 63.83 KB |
Bild 1.png | 67.28 KB |
- Anmelden oder Registrieren um Kommentare zu schreiben
relevante Taxonomie-Module?
am 11.11.2010 - 12:15 Uhr
Ich würde mich erst mal bei den zahlreichen relevanten Modulen umschauen, ob da nicht was Passendes dabei ist, http://drupalmodules.com/module/vocabulary-index klingt für mich ganz vielversprechend.
(Dort lohnt auch immer ein Blick auf die "Related Modules".)
Gruß
Frank
Bitte Erledigtes im Betreff des ersten Postings als [gelöst] markieren. Danke!
Danke. Das genannte Modul
am 11.11.2010 - 16:17 Uhr
Danke. Das genannte Modul produziert zwar eine tolle Liste mit den Kategorien.
Aber ich möchte ja, dass diese Liste nur dann in der Seitenleiste auftaucht, wenn ein Node vom Inhaltstyp Produkt geladen wurde.
Wenn Nodes anderer Inhaltstypen angezeigt werden, will ich die Kategorien nicht sehen.
In der Block-Konfiguration kann ich das Erscheinen nicht ausschließen, weil sich die URL der Nodes nicht unterscheidet (außer der Node ID). Das funktioniert ja nur bei Seiten wie catalog/* , etc.
Sonst wäre das die einfachste Lösung und ich würde einfach den Kategorie-Block von Ubercart benutzen.
Grüße
Michael
Anzeige gezielt ausschließen
am 11.11.2010 - 16:19 Uhr
Wenn ich als Argument "Node: Beitrags-ID" hinzufüge, kann ich zwar das Erscheinen des View-Blocks steuern.
Leider werden dann nur noch die Kategorien angezeigt, die auf das nebenstehende Produkt zutreffen.
Gibt es einen Weg, die restlichen Einträge des Taxonomie-Vokabulars auch noch anzuzeigen?
(Hübsche Lösung für eine passende Tagliste - später einmal)
Kategorienliste aus einer Taxonomie mit Views erstellen...
am 19.11.2010 - 19:36 Uhr
Ich weiß nicht ob ich es richtig verstehe aber...
In Views unter "Basiseinstellungen" änder doch mal die "Darstellung" und wähle dann bei Gruppierung das Taxonomievokabular aus
Da bin ich gerade drüber
am 20.11.2010 - 00:34 Uhr
Da bin ich gerade drüber gestolpert, vielleicht ist das was für dich:
http://drupal.org/project/taxonomy_menu_path_ubercart
-----------
Luca Curella
Kooperative Netze - Berlin
Andere Lösung
am 20.11.2010 - 08:22 Uhr
Hi,
danke für die Ratschläge.
Ich habe nun einfach den Ubercart-Kategorien-Block mit folgendem php-Schnipsel versehen:
<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
if ($node->type != 'product' ) {
return FALSE;
}
} else if (arg(0) != 'http://www.domain.com/drupal/catalog') {
return FALSE;
}
return TRUE;
?>
So erscheinen die Kategorien nur dann, wenn Produkt-Nodes angezeigt werden, aber nicht bei all denn anderen.
Nun will ich nur noch, dass die Kategorien auf den catalog/* - Seiten auftauchen, aber nicht auf der catalog-Seite selbst.
Hat dafür vielleicht noch jemand eine Lösung? Mit dem Pfad, den ich oben nach "else if" eingetragen habe, funktioniert das nämlich nicht.
In dem Bsp ist arg(0) =
am 20.11.2010 - 12:16 Uhr
In dem Bsp ist
arg(0) = drupal und arg(1) = catalog
Eine bessere Möglichkeit ist eigentlich drupal_get_destination()
-----------
Luca Curella
Kooperative Netze - Berlin
Get_destination: Wie anwenden?
am 22.11.2010 - 10:50 Uhr
Danke für den Tipp. Allerdings gehöre ich eher in die Fraktion der "php-Schnipsel-Kopierer" und beginne gerade mühsam zu verstehen, was die einzelnen Befehle bedeuten.
Wie müsste ich get_destination denn einsetzen?
Und die englische Seite zu diesem Befehl bringt mich auf die Frage, ob ich damit das leidige "Zugriff verweigert" - Problem lösen kann.
Denn: Wenn ich in einen Link auf meiner Seite aufrufen will, der nur angemeldeten Nutzern erlaubt ist, erscheint die Fehlermeldung "Zugriff verweigert".
Ich überlege nun, diese Fehlerseite durch eine andere Seite zu ersetzen, die das Login-Feld enthält. Toll wäre es nun, wenn man den Link, der ursprünglich aufgerufen wurde auslesen könnte und mit dem Login-Link verbinden könnte.
Und zwar nach folgendem Muster (das gilt z.B. um nach dem Anmelden direkt auf das Kommentarfeld zu kommen):
/user/login?destination=comment%2Freply%2F61%23comment-form
(ich habe dieses Thema mal in einen neuen Beitrag gepostet: http://www.drupalcenter.de/node/31933)
Herlichen Dank im voraus :)
Ungenau
am 22.11.2010 - 14:12 Uhr
Sorry die Antwort war etwas gepfuscht. Hab jetzt nochmal genau gelesen, was du erreichen willst:
Die Sichtbarkeit eines Blocks kannst du auch ohne PHP einstellen unter
admin/build/block >> Konfigurieren >> Diesen Block nur auf den aufgelisteten Seiten anzeigen
Der PHP-Schnipsel müsste aussehen wie folgt:
<?php
$current = request_uri(); // gibt in deinem Fall drupal/catalog aus
if (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(arg(1));
if ($node->type != 'product' ) {
return FALSE;
}
} else if ($current != 'drupal/catalog') {
return FALSE;
}
return TRUE;
?>
Den Rest schreibe ich gleich noch im anderen Post
-----------
Luca Curella
Kooperative Netze - Berlin
Danke. War ja gut, dass Du
am 22.11.2010 - 15:08 Uhr
Danke.
War ja gut, dass Du ungenau geantwortet hattest. So kam ich auf die Lösung des anderen Problems. Manchmal fehlen ja nur die richtigen Suchworte :)
Da ich meinen Kategorien-Block ja nur auf Produkt- und Kategorieseiten anzeigen will, hilft mir die Sichtbarkeitsteinstellung im Block nichts. Ich müsste jede einzelne Produktseite von Hand eintragen, da ja noch andere node-Seiten außer den Produkten existieren.
Der erste Teil funktioniert auch reibungslos.
Der zweite aber nicht. mit "drupal/catalog" werden die Kategorien bzw. der Block trotzdem nicht auf den Unterseiten der Kategorien angezeigt.
Benutzt du eigentlich nicht
am 22.11.2010 - 17:14 Uhr
Benutzt du eigentlich nicht Pathauto?
Damit könntest du deinen Produkt-Nodes entsprechende Pfade verpassen und das ganze dann doch ohne PHP lösen.
-----------
Luca Curella
Kooperative Netze - Berlin
achja - das steht auf meiner
am 22.11.2010 - 17:27 Uhr
achja - das steht auf meiner liste auch noch drauf, hab es aber noch nicht installiert. stimmt, dann wäre es plötzlich ganz einfach :)
Grüße
Michael