Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Views ›

Expertenfrage: Link aus Link-Contenttype in Taxonomy-View referenzieren

Eingetragen von miweb (201)
am 24.07.2008 - 23:13 Uhr in
  • Views
  • Drupal 5.x

Ich habe eine (zumindest für mich kniffelige) Frage, zu der ich allenfalls einen Ansatz, aber keine echte Lösung habe. Vielleicht ist ja jemand so freundlich, mir zu helfen. Ich selbst komme mit der etwas tiefer gehenden Materie der Argumente nicht besonders gut zurecht :-(

Ich habe einen Contenttype "Rezension". Dieser benutzt u. a. Taxonomy-Felder zur Erfassung des Herstellers des rezensierten Produktes.

Ich habe ebenfalls einen Contynttype "Links". Dieser umfasst u. a. auch Die Beschreibungen und Links zu den o. g. Herstellern.

Ich habe folgende Taxonomystruktur:
Vocabulary Link/Hersteller mit den Terms Hersteller A, B usw. sowie
Vocabulary Hersteller mit den Terms A, C usw.
Der Unterschied ist, dass eimal der gesamte Contenttype Link zum Vocabulary Link/Hersteller hinzugefügt wird, zum anderen ein in der Rezension gesetzter Term zum Vocabulary Hersteller.
Was ich nicht wollte, da ich viele und umfangreiche Vocabularies habe, die in der Rezension genutzt werden (Erfinder, Gattung, Mechanismen usw.), diese Vocabularies im Contenttype Link alle abzufragen. Denn analog gibt es auch Links zu Webseiten anderer Vocabularien.

Idee 1
Jetzt möchte ich entweder gerne, dass bei einem Klick auf den Herstellernamen in der Rezension nicht nur der Taxonomy-View mit der Liste der Rezension geöffnet wird, denen der Hersteller zugeordnet ist. Ich möchte, dass zumindest der Link zur Webseite des Herstellers über der Rezensionsliste angezeigt wird. Das könnte mit Views evtl. klappen, aber welche Argumente muss ich wo übergeben, dass der Link auf alle Fälle ganz oben steht und danach erst die Rezensionen kommen. Und wie bekomme ich diesen Link aus dem Typen Link überhaupt in den ja bereits mit einem Argument versehenen Standard-Taxonomy-View referenziert?

Idee 2
Oder ich möchte gerne, dass ich den Link zur Herstellerseite direkt in der Rezension als CKK-Feld referenziere. Natürlich möglichst automatisch. Das würde bedeuten, ich würde - so meine Idee - einen View erzeugen, der die Herstellerlinks enthält und in der Rezension diesen View als viewfield referenzieren. Welche Argument muss ich dann wo setzen, damit exakt nur dieser eine Link erscheint, der zum Taxonomyterm eines anderen Vocabulary passt?

Ich wäre äußerst dankbar, wenn mir hierbei jemand helfen könnte.

‹ $view->page_header als PHP auswerten lassen in der template.php Views Ausgabe abhängig von Node ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

3. Idee

Eingetragen von miweb (201)
am 25.07.2008 - 18:52 Uhr

Noch eine Idee dazu. Könnte man per Datenbankabfrage mit php-Code am Seitenkopf des Standardtaxonomy-Views den Term (in dem Fall Titel des Link-Contenttypes, da identisch mit Term aus dem anderen Vocabulary) auslesen? Wenn ja, wie bekommt man das hin?

Oder ist die ganze Idee nicht praktikabel oder ist die Taxonomystrukltur nicht geeignet und sollte überarbeitet werden?

Eine Hilfe wäre wirklich sehr, sehr schön (und dringend nötig).

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ein Lösungsansatz wäre

Eingetragen von derhasi (221)
am 25.07.2008 - 19:02 Uhr

Ein Lösungsansatz wäre Views und Conten mit Panels (drupal.org/project/panels) zu bündeln. Normalerweise sollte ein Panel-Kontext für Kategorien bereitstehen.

Zum anderen kannst Du natürlich per Views deine Taxonomy-Ansicht überschreiben und per Sortierung nach Nodetyp die Links zuerst anzeigen lassen.

Andererseits könntest Du statt mit einer taxonomy auch einfach mit NodeReference Arbeiten. Solange keine hierarchische Ordnung der Hersteller besteht, wäre dies auch insoweit ein Vorteil, dass Du quasi mit einem Node "Hersteller" ein Herstellerprofil hättest. Somit wäre vielleicht sogar der Nodetyp Link überflüssig.

Zum Zusammenführen von Informationen bietet sich neben Views aber auf jedenfall auch Panels an, daher werf da mal einen Blick rein ;)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke, damit werde ich mal

Eingetragen von miweb (201)
am 25.07.2008 - 22:10 Uhr

Danke, damit werde ich mal etwas experimentieren.

derhasi schrieb

Zum anderen kannst Du natürlich per Views deine Taxonomy-Ansicht überschreiben und per Sortierung nach Nodetyp die Links zuerst anzeigen lassen.

Das würde aber erfordern, dass ich dem Type Link die Taxonomyrutsche hinzufüge. Da ich auch für die Links eine Menge relevanter Taxonomy-Vocabularies habe, wird das bei der Eingabe dann doch etwas mühsam und unübersichtlich. Ich hatte eher gehofft, dass man aus dem Link-Inhaltstypen den Titel in die Taxonomy-Ansicht reinprogrammieren kann, denn dieser entspricht dann exakt dem Taxonomyterm aus den Rezensionen un dwäre für alle anderen Vokabulyries gleich korrekt.

derhasi schrieb

Andererseits könntest Du statt mit einer taxonomy auch einfach mit NodeReference Arbeiten. Solange keine hierarchische Ordnung der Hersteller besteht, wäre dies auch insoweit ein Vorteil, dass Du quasi mit einem Node "Hersteller" ein Herstellerprofil hättest. Somit wäre vielleicht sogar der Nodetyp Link überflüssig.

Das würde bedeuten, ich müsste bei jedem neuen Term ein Profilnode anlegen. OK, wäre bei den Links ja so ähnlich. Darüber muss ich, gaube ich, nachdenken, um die Möglichkeiten im Verhältnis zur jetztigen Logik meiner Seitenstruktur abzuschätzen. Taxonomy scheint mir grundsätzlich etwas eleganter zu sein.

Ich werde mir das mal ansehen. Für weitere Ideen bin ich sehr zu haben. Vor allem für welche, die mich nicht mit Argumenten und Codeschnippseln den Glauben an meine eh so gut wie nicht vorhandene Fähigkeiten verlieren lassen. ;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zum Verständnis nochmal:

Eingetragen von derhasi (221)
am 25.07.2008 - 22:24 Uhr

Zum Verständnis nochmal:

1) Du hast ein Vokabular für die Hersteller?
2) Du hast einen Nodetyp Link, der dem Hersteller über den Titel zugeordnet wird? (nicht über das bereits vorhandene Vokabular?
3) Du hast einen Nodetyp Rezension, der dem hersteller per Vokabular diese zuordnet?

Bei Deinen Überlegungen könnten vielleicht auch noch die Module NAT (http://drupal.org/project/nat) und Automatic Nodetitle (http://drupal.org/project/auto_nodetitle).
Letzteres um zum Beispiel für den Link nur Kategorie "Hersteller" und Linkaddresse eingeben zu müssen. Der Nodetitle könnte automatisch über AutoNodetitle erstellt werden.
Ersteres erzeugt mit einem Node eines betimmten Typs einen begriff in einer bestimmten Kategorie. Dadurch wird die Struktur jedoch sehr komplex, lohnt sich eigentlich nur, wenn man Nodes eines Typs hierarchsich strukturieren will - zum Beispiel Galerien.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja und anderes

Eingetragen von miweb (201)
am 26.07.2008 - 01:16 Uhr
derhasi schrieb

1) Du hast ein Vokabular für die Hersteller?

Ja.

derhasi schrieb

2) Du hast einen Nodetyp Link, der dem Hersteller über den Titel zugeordnet wird? (nicht über das bereits vorhandene Vokabular?

Jein. Ich habe einen Inhaltstypen Link, der aus Titel, Kommentar und URL besteht, aber keine Taxonomybegriffe nutzt. Der Titel dieser Nodes wäre also eigentlich unabhängig von Taxonomy, aber eben durch den Herstellernamen tatsächlich identisch mit dem Term des Vocabulary.
Es gibt außerdem viele andere Links in anderen Unterkategorien, weshalb es hier am sinnvollsten wäre, für die Lösung anzusetzen, da ich diesen Inhaltstypen eh anlegen müsste. Bisher habe ich aber keine harten Daten eingegeben.

derhasi schrieb

3) Du hast einen Nodetyp Rezension, der dem hersteller per Vokabular diese zuordnet?

Ja.

Im Grunde benötige ich so etwas wie einen überschriebenen Taxonomy-View, der zusätzlich aus dem Linkverzeichnis den passenden Node auswählt und in Vollansicht über die Taxonomy-Liste setzt.

Vielleicht wäe auch ein Computedfield die Lösung. Mein Problem ist, dass es aufgrund meiner Kenntnisse bei dieser Überlegung stockt, weil ich schon Argumente nicht so gut verstehe, dass ich sie mal eben einfach nutzen kann.

Noderefferer und Node-Reference sind in der Tat ein Ansatz, aber passen nicht zur bisherigen Seitenstruktur (Taxonomy gestützt).

NAT schau ich mir mal an. Automatic Nodetitle ist evtl. ein netter Helfer, bringt aber für mein Problem meiner Meinung nach eher keinen Fortschritt.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ohne in das View-Template

Eingetragen von derhasi (221)
am 26.07.2008 - 09:06 Uhr

Ohne in das View-Template gehen zu müssen, könntest Du für den Seitenkopf im View ein PHP-Format nutzen.
Etwas in der Art:

<?php
$term
= arg(2); //taxonomy=0/term=1/*var*=2
$linknode = node_load(array('title'=>$term,'type'=>'link));
print $linknode->link; //bzw die Formatierung dazu als Link
?>

Des weiteren könnte man per Panels wahrscheinlich die Taxonomie-Ansicht überschreiben und dann entsprechende Views kombinieren.
Einen Rundumeinstieg zu Views kann ich Dir mit meinem Workshop empfehlen: http://work.derhasi.de/views-workshop

  • Anmelden oder Registrieren um Kommentare zu schreiben

Der richtige Weg

Eingetragen von miweb (201)
am 26.07.2008 - 12:11 Uhr

Danke schon einmal für die klasse Hilfe.

Der Code scheint mir der richtige Weg zu sein für das, was ich möchte. Ich habe aber noch ein Problem, ihn richtig anzupassen.

Ich habe ihn in den Standard-Taxonomy-View eingefügt (und bei Eingabeformat auf php gestellt). Wenn ich bei Argumente "alle Werte anzeigen" einstelle und dann auf die bereit gestellte Seite klicke (Pfad: taxonomy/term), dann erscheint der erste angelegte Link ("Hersteller 1") über der Liste mit allen Texten, denen irgendein Term zugeordnet ist. Soweit wohl korrekt.

Wenn ich aber auf den Termnamen/Tag "Hersteller 1" auf irgendeiner Seite klicke, dann kommt nur die Liste mit Texten zu diesem Term, ohne den Link-Node.

Zur Info: Ich habe es mit dem Originalschnippsel probiert und mit der Anpassung link = rdslink (ist der maschinenlesbare Contentype) eingefügt. Mein Inhaltstyp heißt Link (rdslink) und wird per Taxonomy in dem Fall zugeordnet dem Vocabulary "Links/Hersteller". Mein Vocabulary heißt Hersteller und ist auf der gleichen Ebene wie "Links". Gehört in der dritten Code-.zeile hinter dem hinteren Wort link nicht noch ein " ' " (was aber nichts ändert)?

Muss ich im php-Code noch etwas anpassen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

bekomme es nicht hin

Eingetragen von miweb (201)
am 12.08.2008 - 22:29 Uhr

Leider schaffe ich es nicht, das zum Funktionieren zu bringen. Kannst du oder jemand anders bitte noch einmal einen Tipp geben?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe noch ein wenig am

Eingetragen von derhasi (221)
am 13.08.2008 - 19:57 Uhr

Ich habe noch ein wenig am Code geändert:
* wenn du als Linkfeld ein cck-Feld genommen hast, dann beginnen die Feldnamen immer mit field_
* deinen typehab ich angpasst
* falls du dir über die struktur deines Linkfeldes nicht im klaren bist, entferne einfach die Kommentarstriche bei L1, falls danach nichts angezeigt wird, ist wohl die Feldbezeichnung nicht korrekt
* wenn du dir den kompletten Node in seiner Datenform ansehen willst kannst du L2 auskommentieren

<?php
$term
= arg(2); //taxonomy=0/term=1/*var*=2
$linknode = node_load(array('title'=>$term,'type'=>'rdslink'));
print
$linknode->field_link[0]['value']; //bzw die Formatierung dazu als Link
//print_r($linknode->field_link); //L1
//print_r($linknode);//L2
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Verzweifel ...

Eingetragen von miweb (201)
am 13.08.2008 - 23:47 Uhr

Argh. Ich bekomme es nicht hin. Langsam glaube ich, ich bin zu doof :-(
Hier mal meine Daten.

Mein View:

$view = new stdClass();
  $view->name = 'taxonomy_term';
  $view->description = 'Die Taxonomieansicht in einer Tiefe von 0.';
  $view->access = array (
);
  $view->view_args_php = '';
  $view->page = TRUE;
  $view->page_title = 'Taxonomie';
  $view->page_header = '<?php
$term
= arg(2); //taxonomy=0/term=1/*var*=2
$linknode = node_load(array(\'title\'=>$term,\'type\'=>\'rdslink\'));
print $linknode->field_rds_link[0][\'value\']; //bzw die Formatierung dazu als Link
//print_r($linknode->field_rds_link); //L1
//print_r($linknode);//L2
?>
';
  $view->page_header_format = '2';
  $view->page_footer = '';
  $view->page_footer_format = '3';
  $view->page_empty = '';
  $view->page_empty_format = '3';
  $view->page_type = 'teaser';
  $view->url = 'taxonomy/term';
  $view->use_pager = TRUE;
  $view->nodes_per_page = '10';
  $view->sort = array (
    array (
      'tablename' => 'node',
      'field' => 'sticky',
      'sortorder' => 'DESC',
      'options' => '',
    ),
    array (
      'tablename' => 'node',
      'field' => 'created',
      'sortorder' => 'DESC',
      'options' => 'normal',
    ),
  );
  $view->argument = array (
    array (
      'type' => 'taxid',
      'argdefault' => '1',
      'title' => '%1',
      'options' => '0',
      'wildcard' => '',
      'wildcard_substitution' => '',
    ),
    array (
      'type' => 'node_feed',
      'argdefault' => '2',
      'title' => '',
      'options' => '',
      'wildcard' => '',
      'wildcard_substitution' => '',
    ),
  );
  $view->field = array (
  );
  $view->filter = array (
    array (
      'tablename' => 'node',
      'field' => 'status',
      'operator' => '=',
      'options' => '',
      'value' => '1',
    ),
  );
  $view->exposed_filter = array (
  );
  $view->requires = array(node);
  $views[$view->name] = $view;

#####################

Meine Tax-Struktur:
Vokabular 1: Verlag mit Terms A bis Z (Herstellername)
Vokabular 2: Links, in dem (für Navigationsmenü) neben cva 5 anderen Linkkatgorien u. a. der Term Verlage steckt.

Der normale Node erhält ein Tag aus bzw. ins Vokabular 1
Der Link-Node erhält eine Zuordnung (Taxonomy Select) zu Terms des Vokabulars 2

#####################

Mein Link-Typ:

$content[type]  = array (
  'name' => 'Link',
  'type' => 'rdslink',
  'description' => 'Ein kommentierter Link',
  'title_label' => 'Name der Webseite',
  'body_label' => 'Kurzbeschreibung',
  'min_word_count' => '0',
  'help' => '',
  'node_options' =>
  array (
    'revision' => true,
    'status' => false,
    'promote' => false,
    'sticky' => false,
  ),
  'comment' => '0',
  'forward_display' => 1,
  'image_attach' => '0',
  'image_attach_size_teaser' => 'thumbnail',
  'image_attach_weight_teaser' => '0',
  'image_attach_size_body' => 'thumbnail',
  'image_attach_weight_body' => '0',
  'print_display' => 1,
  'upload' => '0',
  'nodewords' => 0,
  'old_type' => 'rdslink',
  'orig_type' => '',
  'module' => 'node',
  'custom' => '1',
  'modified' => '1',
  'locked' => '0',
  'fivestar' => 1,
  'fivestar_stars' => '5',
  'fivestar_labels_enable' => 1,
  'fivestar_label_0' => 'Cancel rating',
  'fivestar_label_1' => 'mieserabel',
  'fivestar_label_2' => 'schwach',
  'fivestar_label_3' => 'durchschnittlich',
  'fivestar_label_4' => 'gut',
  'fivestar_label_5' => 'hervorragend',
  'fivestar_label_6' => 'Give it @star/@count',
  'fivestar_label_7' => 'Give it @star/@count',
  'fivestar_label_8' => 'Give it @star/@count',
  'fivestar_label_9' => 'Give it @star/@count',
  'fivestar_label_10' => 'Give it @star/@count',
  'fivestar_style' => 'dual',
  'fivestar_text' => 'dual',
  'fivestar_title' => 1,
  'fivestar_unvote' => 1,
  'fivestar_position_teaser' => 'hidden',
  'fivestar_position' => 'below',
  'fivestar_comment' => '0',
  'nodewords_nodetype_keywords' => '[title]',
  'nodewords_nodetype_description' => 'Ein Link zur Webseite [title]',
);
$content[fields]  = array (
  0 =>
  array (
    'widget_type' => 'content_taxonomy_select',
    'label' => 'Linkrubrik',
    'weight' => '-7',
    'group_tid' => '0',
    'description' => '',
    'default_value_widget' =>
    array (
      'field_rds_link_rubrik' =>
      array (
        'tids' =>
        array (
          0 => 77,
        ),
      ),
    ),
    'default_value_php' => '',
    'group' => false,
    'required' => '1',
    'multiple' => '0',
    'save' => 'both',
    'vid' => '13',
    'tid' => '0',
    'depth' => '1',
    'field_name' => 'field_rds_link_rubrik',
    'field_type' => 'content_taxonomy',
    'module' => 'content_taxonomy, content_taxonomy_options',
    'default_value' =>
    array (
    ),
  ),
  1 =>
  array (
    'widget_type' => 'link',
    'label' => 'Link',
    'weight' => '-4',
    'description' => 'Beim Link bitte das "http://" stehen lassen und mit dem Rest der Linkadresse ergänzen.',
    'default_value_widget' =>
    array (
      'field_rds_link' =>
      array (
        0 =>
        array (
          'url' => 'http://',
        ),
      ),
    ),
    'default_value_php' => '',
    'group' => false,
    'required' => '1',
    'multiple' => '0',
    'title' => 'value',
    'title_value' => '[title]',
    'enable_tokens' => 0,
    'display' =>
    array (
      'url_cutoff' => '80',
    ),
    'attributes' =>
    array (
      'target' => 'default',
      'rel' => '',
      'class' => '',
    ),
    'field_name' => 'field_rds_link',
    'field_type' => 'link',
    'module' => 'link',
  ),
);

Es kommt ... --> nix :-(
Ichhabe sogar einen Link angelegt, der den Namen der Termnummer eines Herstellers hat, aber das hilft auch nicht.

Was um Himmels Willen mache ich verkehrt?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zwischenlösung

Eingetragen von miweb (201)
am 18.08.2008 - 22:33 Uhr

Ich habe mir vorübergehend so geholfen, dass ich die Links sticky mache und ihnen die relevanten Taxonomy-Vokabularien per CKK zuordne. Das its zwar aufwändiger und wenig flexibel (sticky darf nur der Link sein), aber funktioniert.

Dennoch wäre ich weiterhin an einer passenden Lösung über Argumente interessiert. Was vermutlich Probleme macht, ist in diesem Fall die Ausgabe der Taxnomyterms als Zahl, nicht als Wort. Wahrscheinlich will der View deshalb nicht so recht.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • wmtbpo361x
  • Rolle erstellen nicht zu finden
  • 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
Weiter

Neue Kommentare

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

Statistik

Beiträge im Forum: 250238
Registrierte User: 20467

Neue User:

  • LorisBen
  • StevenEness
  • ocvk2810

» 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 65 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