5. Arguments (deutsch: Argumente)
Argumente sind wie schon in der Einführung angesprochen Teile der URL. Ein Beispiel:
www.deinedomain.de/node/1 (clean URLs)
www.deinedomain.de/?q=node/1 (ohne clean URLs)
Argument 1 ist "node"
Argument 2 ist "1"
Anwendungs-Beispiel: Sagen wir du hast einen Bild Content-Type erstellt, der ein CCK Node Reference Feld enthält und damit auf deine Stories verweist. Dann kannst du einen Blockview erstellen der zu jeder Story die angehängten Bilder anzeigt. Man muss Views nur dazu bringen das in eine Abfrage zu übersetzen:
Zeige nur Bilder in meinem Block an, die über ihr Feld Node Reference auf die gerade angezeigte Story verweisen. Die gerade angezeigte Story ergibt sich aus der URL. Genauer gesagt aus dem Argument 2 (=Node ID).
Also einfach einen View erstellen der alle Bilder anzeigt und bei Arguments folgendes auswählen:
"Node Reference: nameDeinesFeldes (nameDeinesFeldes_field)"
In den Argument Handling Code kommt dann folgendes:
$args[0] = arg(1);
$args[] ist ein Views eigener Array und $args[0] ist das erste Argument das dem View hinzugefügt wurde (über add Argument in der Views bearbeiten Ansicht)
arg() ist eine Drupal Core Funtion die die URL Teile zurückgibt.
arg(0) gibt in unserem Beispiel "node" zurück. arg(1) gibt "1" zurück.
Im Beispiel www.deinedomain.de/sektion/datum/artikel ist
arg(0) sektion
arg(1) datum
arg(2) artikel
Klaro?
- Anmelden oder Registrieren um Kommentare zu schreiben
Hieraus wird leider
am 06.03.2008 - 14:29 Uhr
Hieraus wird leider immernoch nicht ganz klar, wie man nun die Ausgabe filtern kann.
Beispiel:
Man hat einen Inhaltstyp "Bild" der Bild und einen Taxonomy-Begriff enthält.
Nun hat man einen View "album" der als Argument den Taxonomy-Begriff enthält (album/MeineBilder). Eigentlich sollte nun nur alle Bilder angezeigt werden, die dem Begriff "MeineBilder" zugeordnet sind.
Gruß
Roman
So weit so gut... Aber
am 13.07.2008 - 18:02 Uhr
So weit so gut...
Aber welche Bedeutung haben die restlichen Felder, welche man bei den Argumenten angeben kann:
Titel, Option, Platzhalter,Unter-Platzhalter
--------
Active-Media-Production
Individual Web Development and Design
ich verstehe leider diese
am 18.11.2009 - 18:22 Uhr
ich verstehe leider diese anleitung und auch das beispiel nicht. nun beschäftige ich mich seit ca. 2 monaten mit drupal und sorry aber ich versteh nicht was argumente genau machen. vielleicht ein einfaches beispiel? hilfe wäre nett :)
Du musst das auch lesen.
am 18.11.2009 - 21:29 Uhr
Du musst das auch lesen. Dort steht gleich im ersten Satz. Ein Argument ist ein Teil einer URL und sie machen allein nichts.
----------------------------------------
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Klarstellung bezüglich Argumente insbesondere in Views
am 06.05.2011 - 13:24 Uhr
Hallo zusammen,
ich habe auch ein Weile gebraucht, das mit den Argumenten zu verstehen. Argument nur über den URL-Pfad zu erklären ist zurecht verwirrend, weil die Nutzung von Argumenten über URLs nur eine Teil-Möglichkeit darstellt und Argumente für sich genommen nicht erklärt.
Aus der Views-Hilfe:
Arguments are input. While they often come from the URL, they don't always so please don't be shocked when they don't.
Da ich inzwischen schon mehrfach Views per PHP mit Argumenten aufgerufen habe, ohne diese Argumente per URL zu übergeben, habe ich inzwischen ein wenig Erfahrung mit Argumenten-Nutzung OHNE URL.
Ein Argument in Views kann als eine Art Zusatz-Informationen verstanden werden. Eine Aussage, die man Views mit auf den Weg geben möchte. Je nach Einsatz-Konzept bietet Views auch verscheiden Szenarien, wie es mit dem View umgehen soll, wenn kein Argument kommt – z.B. Nichts oder alles Anzeigen (siehe Views-Einstellungen).
So werden Argumente oft gewissermaßen als "Pro-Argument" bzw. Pro-Filter genutzt, während viele Filter in den Views-Filter-Einstellungen oft als "Gegen-Argumente" – das heißt Ausschluß-Kriterien – definiert sind. Es ist an sich ein verwirrendes Thema.
Konkretes Beispiel:
Ein View soll alle Nodes zeigen.
Filter: Nur veröffentlichte Nodes, Nur Typ Artikel, Getaggt aus dem Taxonomie-Vokabular "Menü".
Argument ist: Aktueller Term des Menü-Vokabulars, des aktuellen Nodes.
Man kann so z.B. einen View zum Bilden eines Taxonomie-basiertem Menüs in einem Block aufrufen und dabei eine Term-Id als Argument übergeben. Views kann dann – darauf aufbauend – alle anderen Nodes mit derselben Term-ID ausgeben. Auf dem Prinzip aufbauend habe ich auch ein Modul geschrieben, das ich demnächst auf Drupal.org veröffentlichen werde.
Den Einsatz des Argument-Prinzips über die URL kann man sich ganz gut im Default-View "taxonomy_term" anschauen, bei dem der über die URL übergebene Taxonomy-Term eine Auflistung aller mit diesem Term getaggten Nodes hervor ruft.
Bis dann,
Carsten
(Edit: Konkretesierung meiner Aussage).
Ergänzung:
Die Beschreibung "Dynamische Bedingungen der Abfrage (Kriterien zur Auswahl der Nodes)" für Argumente und "Statische Bedingungen der Abfrage (Kriterien zur Auswahl der Nodes)." für Filter in der Beschreibung des Hauptmoduls (http://www.drupalcenter.de/handbuch/6673) ist auch gelungen verdeutlichend, wie Argumente in Views funktionieren.
Ergänzung Mai 2011:
Die neue Bezeichnung "contextual filter" in Views 3 beschreibt die Funktionalität nun besser.
Ein simples Beispiel
am 28.01.2010 - 02:35 Uhr
Ehrlich gesagt finde ich die Erklärungen hier wenig einleuchtend. Ich habe bis jetzt auch kein gutes Tutorial im Netz gefunden.
Die Beschreibung von Argumenten als dynamischer Filter ist sicher logisch. Was ich allerdings suche, ist eine Liste aller möglichen Eingangsvariablen für Argumente.
Ich habe hier ein simples Besipiel angefügt, um ein Argument zu erklären. Dies ist "Taxonomie: Begriff-ID" mit den Bedingungen "Ermöglicht mehrere Begriffe pro Argument" und "Duplikate reduzieren"
Eingabe ist die ID der Node durch die URL.
Ausgabe ist eine Liste von Taxonomie ID in der Form "3+34+343+23".
Die Form der Ausgabe ist durch die Wahl des Arguments "Taxonomie: Begriff-ID" mit den Bedingungen "Ermöglicht mehrere Begriffe pro Argument" bestimmt.
Der Code gibt einen Block mit Artikeln mit den gleichen Taxonomie-Begriffen wie der Artikel aus.
Ohne php-tag natürlich
<?php
if (arg(0) == 'node' && is_numeric(arg(1))) { // Wenn die URL dem Muster drupalseite.net/node/897 entspricht (also eine Nodeansicht ist)
$node = node_load(arg(1)) // Lade die node in die Variable $node bzw. Lade die node aus dem zweiten Argument
}
if($node && node->taxonomy) { // Wenn die Variable $node exisistiert und eine Taxonomy besitzt
foreach($node->taxonomy as $term) { // Lese alle Taxonomiebegriffe in einer Schleife als $term aus
$terms[] = $term->tid; // Packe diese in den Array (Sammelvariable) $terms
}
return implode('+',$terms); // Schicke diese Variable an das Argument zurück als Text in der Form "tid+tid+tid"
?>
Außerdem
am 28.01.2010 - 02:53 Uhr
dieses Tutorial ist ganz hilfreich. Zeigt das ganze nochmal Schritt für Schritt:
http://drupaleasy.com/blogs/ryanprice/2008/06/using-views-2-drupal-6-cre...
@funcytraffic, kleine
am 28.01.2010 - 03:37 Uhr
@funcytraffic,
kleine Ergaenzung:
<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
// blabla
}
?>
ist auch erfuellt bei URL's nach dem Schema node/x/edit oder node/x/forum oder node/x/print usw. Views beispielsweise (Header/Footer-Code) reagiert auf solche Szenarios mit unschoenen Fehlermeldungen.
Besser/sicherer ist:
<?php
if (arg(0) == 'node' && is_numeric(arg(1)) && arg(2) == '') {
// blabla
}
?>
------------------------
Quiptime Group
Fehler
am 28.01.2010 - 05:25 Uhr
In der fünften Zeile fehlte noch ein $
if($node && $node->taxonomy) { // Wenn die Variable $node exisistiert und eine Taxonomy besitzt
Für Fortgeschrittene
am 29.01.2010 - 17:11 Uhr
habe ich diese Seite gefunden. Damit sind komplexe Variationen des view durch Argumente möglich.
http://groups.drupal.org/node/4203