Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Themes & Theming ›

Begriffe eines Vokabulars auflisten.

Eingetragen von witzel (163)
am 16.09.2009 - 10:56 Uhr in
  • Themes & Theming
  • Drupal 6.x

Hallo zusammen,
bei mir hakt es gerade an zwei Baustellen.

1. Ich habe einen Produkt-node (z.B. Apfelsorten), dem die Benutzer beim Vokabular "Apfelgeschmack" verschiedene Begriffe (z.B. süß, lecker, saftig) zuordnen können (free-tagging). Nun sitze ich an der node-apfel.tpl.php und möchte eine Ausgabe erreichen, bei der der Vokabularname ("Apfelgeschmack:") und dahinter die eingegebenen Begriffe DURCH KOMMATA GETRENNT widergegeben werden.

Ich habe schon eine ganze Weile gesucht und bin auch fündig geworden, die Sache ich jedoch noch nicht ganz rund. Ich benutze folgenden Code:

<?php
if ( arg(0) == 'node' && is_numeric(arg(1)) ) {
   
$node = node_load(arg(1));
   
$vid = 9;
   
$terms = taxonomy_node_get_terms_by_vocabulary($node, $vid);
    if (
$terms) {

                foreach (
$terms as $term) {
                print 
l($term->name, 'taxonomy/term/'.$term->tid);
                print
t(', ');
          }
    }
}
?>

Das mit dem Komma habe ich mir selber ausgedacht und ich weiß, das ist Mist, aber da ich keine Ahnung von php habe, ist es mir nicht gelungen, die begriffe mit implode durch Kommata zu trennen. Könnte mir da jemand helfen?

2. Mein zweites Problem ist, dass wenn ich auf einen ausgegebenen Begriff klicke (z.B. "süß") und mir dann z.B. alle Apfelsorten aufgelistet werden, die mit "süß" getagged wurden, die den unterschiedlichen Apfelsorten zugeordneten Begriffe nicht mehr angezeigt werden (wahrscheinlich weil ja jetzt nicht mehr der spezielle Node, sondern die Taxonomieliste ausgegeben wird?)

Vielen Dank für die Hilfe.

‹ [gelöst] overflow SUPERFISH MENU ONMOUSEOUT ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo witzel, ich kenne dein

Eingetragen von aschiwi (1113)
am 16.09.2009 - 11:43 Uhr

Hallo witzel,

ich kenne dein Problem, mit php hab ich's selber auch nicht so. Ich hätte schwören können, dass ich so einen Fall mal hatte, finde jetzt aber die richtige Stelle nicht.

Ich hab ein bisschen gegoogelt, vielleicht hilft dir dieser Beitrag weiter:
http://www.kobashicomputing.com/creating-a-comma-delimited-taxonomy-list...

Probier's mal aus.

http://www.twitter.com/aschiwi

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hey aschiwi, danke für die

Eingetragen von witzel (163)
am 16.09.2009 - 11:50 Uhr

Hey aschiwi,
danke für die Hilfe.
Dieser Code hier scheint alle meine Probleme zu lösen:

<?php
 
// Statt der hier eingetragenen 5 bei t.vid IN () die Zahl(en) des gewünschten Vokabulars eintragen
 
$result = db_query("SELECT t.tid, t.name FROM {term_data} t, {term_node} r WHERE r.tid = t.tid AND r.nid = %d AND t.vid IN (5) ORDER BY weight, name", $node->nid);
  while (
$term = db_fetch_object($result)) {
   
$ntags[] = l($term->name, 'taxonomy/term/' . $term->tid);
  }
  if (
$ntags) {
    print
t("Apfelfarbe: ") . implode(', ', $ntags);
    unset(
$ntags);
  }
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zu 1: <?php $apfelgeschmack

Eingetragen von traxer (1009)
am 16.09.2009 - 12:50 Uhr

Zu 1:

<?php

$apfelgeschmack
= array();
foreach (
$terms as $term) {
 
$apfelgeschmack[$term->name] = l($term->name, 'taxonomy/term/'.$term->tid);
}
print
join(', ', $apfelgeschmack);
?>

Zu 2:

Wo soll das denn angezeigt werden? Über der Seite wäre das soetwas wie eine Tag Cloud, die alle vergebenen Begriffe des Vokabulars sammelt. Oder soll das bei jedem Node stehen?

witzel schrieb

Dieser Code hier scheint alle meine Probleme zu lösen:

<?php
 
// Statt der hier eingetragenen 5 bei t.vid IN () die Zahl(en) des gewünschten Vokabulars eintragen
 
$result = db_query("SELECT t.tid, t.name FROM {term_data} t, {term_node} r WHERE r.tid = t.tid AND r.nid = %d AND t.vid IN (5) ORDER BY weight, name", $node->nid);
 
// ...
?>

"Scheint" ist hier das Stichwort. Sobald du unterschiedliche Revisionen des selben Nodes hast bekommst du teilweise veraltete und teilweise doppelte Einträge.

Außerdem sollten JOINs (mehrere Tabellen in einer Abfrage) ausgeschrieben werden.

<?php
  $result
= db_query("
    SELECT t.tid, t.name
    FROM {term_data} t
    INNER JOIN {term_node} r ON r.tid = t.tid
    WHERE r.vid = %d AND t.vid IN (5)
    ORDER BY weight, name"
,
   
$node->vid
 
);
?>

Semantisch ist es egal ob du

FROM {term_data} t INNER JOIN {term_node} r

oder
FROM {term_data} t, {term_node} r
schreibst. Durch den expliziten Join hast du aber die Verknüpfungsbedingung (r.tid = t.tid) direkt bei der zu verknüpfenden Tabelle stehen, was insbesondere bei Verknüpfungen von mehr als zwei Tabellen einfacher zu lesen ist.

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ohne jetzt die vorherigen

Eingetragen von stebeg (463)
am 16.09.2009 - 14:32 Uhr

Ohne jetzt die vorherigen Antworten in irgendeiner Form schlecht machen zu wollen, wäre das ganze nicht mit Hilfe von Views einfachen gewesen? Dann hätte man sich das ganze gecode sparen können. Kann natürlich auch sein, dass ich den Sinn bzw das Problem nicht ganz erfasst habe.

  • Anmelden oder Registrieren um Kommentare zu schreiben

stebeg schrieb ... wäre

Eingetragen von traxer (1009)
am 16.09.2009 - 14:51 Uhr
stebeg schrieb

... wäre das ganze nicht mit Hilfe von Views einfachen gewesen?

Könnte sein:

<?php

print ('Apfelgeschmack: ', views_embed_view('apfelgeschmack_taxonomy', 'default', $node->nid);
?>

Es stellen sich die Fragen

  • ob man den Overhead, der durch Views verursacht wird, für eine einfache Auflistung von Begriffen vertreten kann,
  • ob man mit Views Taxonomiebegriffe auflisten kann oder ob man dazu einen eigenen Entity-Typ schreiben muss,
  • ob man die Taxonomiebegriffe anhand der Node-ID filtern kann oder ob man dazu einen eigenen Argument Handler schreiben muss.

--
XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielen Dank für die guten

Eingetragen von witzel (163)
am 27.09.2009 - 11:51 Uhr

Vielen Dank für die guten Tips, ich habe mich jetzt für die Views-Variante entschieden, weil ich - was Datenbankanfragen außerhalb von Views angeht - zwei linke Hände habe. Ihr habt mir sehr geholfen!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
Weiter

Neue Kommentare

  • Inzwischen sind wir bei
    vor 1 Tag 21 Stunden
  • Migrieren von D7 auf D8/ D10/ D11
    vor 2 Tagen 13 Stunden
  • melde mich mal wieder, da ich
    vor 7 Wochen 6 Tagen
  • Hey danke
    vor 8 Wochen 12 Stunden
  • Update: jetzt gibt's ein
    vor 8 Wochen 1 Tag
  • Hallo, im Prinzip habe ich
    vor 8 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 8 Wochen 5 Tagen
  • Kannst doch auch alles direkt
    vor 9 Wochen 3 Tagen
  • In der entsprechenden View
    vor 9 Wochen 3 Tagen
  • Dazu müsstest Du vermutlich
    vor 9 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250235
Registrierte User: 20462

Neue User:

  • marouane.blel
  • capilclinic
  • Quabzibboter

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 14 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association