Frage

Ich habe ein Problem mit Drupal-Pfaden in einer Ansicht, die ich erstelle.Im Moment hat meine Ansicht folgende Form:Inhalt/2/6.

Wo 2 und 6 die IDs von zwei Knoten sind, würde ich diese IDs gerne manipulieren, um sie zu übersetzen, sagen wir den Titel dieser Knoten.

Ich kann dies nicht aus der Ansicht heraus tun, da ich diese Werte an ein Panel sende und das Panel die IDs der Knoten erhalten MUSS.

Zusammenfassend möchte ich diese IDs einfach in „title“ umschreiben (wie es Pathauto tut). Kann ich das tun?Gibt es dafür ein spezielles Modul?

Danke!

War es hilfreich?

Lösung

Wenn ich Sie richtig verstehe, möchten Sie die ursprünglichen Pfade „content/[nid_x]/[nid_y]“ beibehalten, aber zusätzliche URL-Aliase für diejenigen mit mehr „sprechenden“ Pfadelementen aus den Knoten hinzufügen (z. B.Titel).Wenn das stimmt, haben Sie zwei Möglichkeiten:

Erstens können Sie dies manuell tun, indem Sie URL-Aliase für „content/[nid_x]/[nid_y]“ unter „admin/build/path/add“ definieren.Das ist einfach, aber wahrscheinlich nicht das, wonach Sie suchen, wenn Sie viele dieser Aliase benötigen.

Zweitens können Sie dies programmgesteuert mithilfe von tun path_set_alias() Funktion.Die Verwendung der Funktion ist ziemlich einfach – das einzige Problem besteht möglicherweise darin, wo sie ausgelöst werden soll.Aus Ihrer Beschreibung geht für mich nicht hervor, wo/wann diese Ansichten erstellt werden, daher ist es schwierig, einen Vorschlag zu machen. Vielleicht können Sie Ihre Frage etwas genauer formulieren.

Wenn Sie diese Ansichts-URL-Aliase für bestimmte Knotenkombinationen erstellen möchten, können Sie versuchen, die Vorgänge „Einfügen“, „Aktualisieren“ und „Löschen“ von zu verwenden hook_nodeapi() um die Alias-Erstellung auszulösen.Dies würde natürlich nur funktionieren, wenn es eine kohärente Regel gibt, die es Ihnen ermöglicht, anhand des Codes zu entscheiden, für welche Knoten ein Alias ​​erstellt werden soll oder nicht.

Sobald Sie für einen bestimmten Pfad einen URL-Alias ​​eingerichtet haben, wird dieser anstelle des Originals verwendet, wenn ein Link zu diesem Pfad über erstellt wird l() Funktion.Also z.B.Wenn Sie einen Menüeintrag erstellen, der auf „content/2/6“ verweist, ist die verwendete URL automatisch der Alias, den Sie für diesen Pfad erstellt haben.


Bearbeiten:Nur für den Fall, dass Sie am Ende Aliase programmgesteuert erstellen: Wenn Sie pathauto sowieso verwenden, könnten/sollten Sie es verwenden pathauto_cleanstring()Funktion (von „pathauto.inc“), um sicherzustellen, dass Ihre generierten URLs ordnungsgemäß maskiert/in zulässige Zeichen umgeschrieben werden.

Andere Tipps

Es gibt einen Weg, um die benutzerdefinierte URL-Funktion zu verwenden, um spezielle benutzerdefinierte URLs zu erstellen. Wenn Sie mit Platten obwohl ich nicht sicher bin, ob Sie wollen, dass es auf diese Weise zu tun, weil es sehr statisch ist.

function custom_url_rewrite($op, $result, $path) {

  if ($op == 'alias') {
    if (preg_match('|^[node_id#_here](/{0,1}.*)|', $path, $matches)) {
      return '[desired_alias]'. $matches[1];
    }
  }

  if ($op == 'source') {
    if (preg_match('|^[node_id#](/{0,1}.*)|', $path, $matches)) {
      return '[desired_source]'. $matches[1];
    }
  }

  return $result;

}

Sie wollen die Knoten-ID # s mit Ihrer eigenen sowie Ihrem eigenen gewünschten Alias-Namen und Quellen zu ersetzen. Hoffe, das hilft.

Vielleicht nützlich als gut:

, um die Einleitung Links ändern, indem Sie einen Blick über den Link mit Tokenersetzung wie <a href="nodeview/[title]/nid" title="[title]">link tekst</a> zu bauen und der Griff um den Knoten in einer Ansicht mit Pfad EXA NodeView und Argumenten, null, null, NID f.i.

für mehr gewundene Links uns eine Ansicht php Feld die Zeichenfolge zu bauen ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top