it-swarm.com.de

Drupal 7 Kontextfilter für URL-Alias

Ich habe eine Ansicht, die eine Liste von Artikeln zeigt, die sich befindet unter:

mypage.com/articles

Jeder Artikel ist wie folgt mit seiner Haupt-Unterseitenansicht verknüpft:

mypage.com/articles/name-of-my-artile-yay

Der URL-Pfad wird mit Autopathen- und URL-Aliasnamen erstellt.

Wie erstelle ich in Ansichten einen Kontextfilter, um nur die ausgewählte Unterseitenansicht anzuzeigen?

Ich habe dies als meinen Weg in Ansichten:

artikel/%

aber ich weiß nicht, wohin ich von hier aus gehen soll. Ich habe versucht, den Titel in Kleinbuchstaben zu schreiben und Leerzeichen durch einen Bindestrich zu ersetzen, aber das funktioniert nicht immer, und die URL-Aliase ändern die URL so, dass Wörter wie:

a, an, as, at, before, aber by

Und wenn ein Seitentitel lautet:

Dies ist mein Seitentitel - damit

Der URL-Alias ​​lautet:

my-page-title

Daher kann es in meinem Kontextfilter nicht mit dem Seitentitel übereinstimmen.

Was vermisse ich?

7
cybercampbell

Ich denke, der einfachste Weg ist, Panels zu verwenden und die Seite Node] zu überschreiben. Fügen Sie eine Variante hinzu, fügen Sie Ihre Ansicht hinzu und senden Sie das nid-Argument des Knotens mit dem Kontextargument node: nid .

  1. (Seitenmanager installieren)
  2. Aktivieren Knotenansicht Seite (Knoten /% Knoten)
  3. Fügen Sie eine Variante hinzu, legen Sie ein Validierungskriterium fest und wählen Sie den betreffenden Knotentyp aus
  4. Verwenden Sie eine einfache einspaltige Anzeige
  5. Fügen Sie Ihre Ansicht in Ihre Spalte ein
  6. Es wird nach einem Argument gefragt: Sende den Knoten: nid, (oder entity_id oder was auch immer)Send your node's nid to your view
  7. Aus Ihrer Sicht verwenden Sie node: nid KontextfilterYour view arg

Alles ist getan.

8

Setzen Sie den Pfadalias für den Inhaltstyp auf articles/[node:title]

Option 1: Verwenden von Ansichten zum Ausführen von Detailseiten

In Ansichten:

  1. Erstellen Sie eine Page -Ansicht mit dem Pfad /articles/%
  2. Fügen Sie Kontextfilter hinzu Inhalt: Nid und setzen Sie ihn auf Folgendes:

    • Wenn der Filterwert NICHT in der URL enthalten ist => Standardwert angeben
    • Typ => Rohwert von URL
    • Pfad => Komponente 1 (Aktivieren Sie "Pfadalias verwenden")

Dies führt eine Pfadsuche für das letzte URL-Segment durch (so etwas wie "Mein-Artikel-Titel-Pfad-Alias") und gibt die richtige Knoten-ID zurück.

Option 2: Ansichten umgehen, um Detailseiten auszuführen

Anstatt den Pfad als /articles/% Festzulegen, setzen Sie ihn einfach als /articles Und lassen Sie alle Knoten mit Pfad-Alias ​​/articles/% Normal auflösen.

3
Kara

Fügen Sie einen Kontextfilter für die Knoten-ID hinzu und geben Sie die Standardeinstellung mit PHP an:

if (isset($this->view['args'][0])) {
  $path = db_query("SELECT source FROM {url_alias} WHERE alias = :alias LIMIT 1", array(':alias' => 'article/' . $this->view['args'][0]))->fetchColumn();
  if ($path) {
    $parts = explode("/", $path);
    if (isset($parts[1]) && is_numeric($parts[1])) {
      return $parts[1];
    }
  }
}

return FALSE;

Dies gibt beispielsweise node/123 Zurück, wenn der Titel von Knoten 123 Meine Seite und Titel war und Sie unter example.com/the_view/my-page-title Auf die Ansicht zugegriffen haben.

1

Ich hatte ein sehr ähnliches Problem und fand nicht nur die Lösung, sondern lernte auch neue Dinge über die Funktionsweise der Ansicht. Lassen Sie mich mitteilen, was ich gelernt habe und auch die Lösung für Ihr Problem.

Wenn Sie eine Ansicht mit einem oder mehreren Kontextfiltern erstellen, muss die Ansicht von irgendwoher Werte dieser Filter erhalten. Dies kann erfolgen durch -

  1. Auswählen der Kontextfilterwerte aus der URL
    • Normalerweise haben Sie für solche Zwecke eine Seitenansicht , die eine URL der Form foo/%/bar oder foo/bar/% für einen einzelnen Kontextfilter OR der Form foo/%/bar/% oder foo/bar/%/% für mehrere Filter
    • Wenn Sie mehrere Filter haben, wird der zuerst angezeigte URL-Wert dem ersten Filter, dem zweiten Filter usw. zugeordnet.
  2. Mit Ansichten können Sie was tun, wenn die Filterwerte sind nicht in der URL verfügbar. Dies wird normalerweise für Blockansichten . Verwendet.
    • Sie können aus verschiedenen Aktionen auswählen und dann auch die Auswahl konfigurieren. You can choose from different actions and then configure the choice too. asdfj kajsdf
  3. Mit einer anderen Ansicht können Sie was zu tun ist ​​die Filterwerte wenn sie in der URL gefunden werden wie in Nr. 1 oben beschrieben angeben. Typische Anwendungsfälle sind: - Erstellen dynamischer Titel basierend auf Filterwerten, Überprüfen von Filterwerten usw.
    • Bei der Validierung von Filterwerten können Sie auch die Werte ändern! (Hier liegt übrigens unsere Lösung). Dies ist sehr ähnlich zu der Art und Weise, wie wir $ form-Werte in den drupal Formularvalidierungsrückrufen ändern können. enter image description here

Lösung für Ihr spezifisches Problem liegt in der Verwendung eines sehr ähnlichen Codes in den Abschnitten, auf die die Pfeile im obigen Bild zeigen.

Hier ist der Link, der sich als große Hilfe für mich erwiesen hat - http://www.drupalfoo.com/drupal-7-views-contextual-filter-argument-node-reference-using-url-alias

0
Sumeet Pareek
**Contextual filters**

1) Global: Null 2) (Artikel) Inhalt/Knoten: nid Wenn der Filterwert NICHT verfügbar ist Standardwert angeben: Rohwert aus URL

0
Somik

Versuchen Sie diesen Ansatz ...

sie greifen zuerst auf den normalen drupal Pfad "node/nid" zu, nehmen dann die nid, um die volle Last zu laden, und verwenden dann den Knotentitel als Kontextfilter.

1) Holen Sie sich den normalen Pfad des aktuellen Knotens, der angezeigt wird ...

<?php
$ogpath = drupal_lookup_path("source",$_GET['q']);

2) Dies kann teuer sein, aber versuchen Sie es ... holen Sie sich die aktuelle NID

$ogarray = explode('/', $ogpath);
$node = node_load($ogarry[1]);
return $node->title;

Sag mir, ob es funktioniert.

Ihr Pathauto entfernt Wörter auf eine Weise, die mir noch nicht begegnet ist. Sind Sie sicher, dass sie richtig konfiguriert sind?

0
Chiko