Ich habe in Drupal 7 eine mehrsprachige Site eingerichtet. In einer Vorlage muss ich einen Link zu einem bestimmten Inhaltsknoten hinzufügen. Dieser Knoten verfügt über folgende Übersetzungen und Pfad-Aliase:
node/42 = pathalias_de (german version)
node/43 = pathalias_en (english version)
In der Vorlage möchte ich aufrufen url()
, um den Link zur Alias-Version des Inhaltsknotens in der aktuellen Sprache zu erhalten.
Auf der deutschen Seite sollte es /de/pathalias_de
auf der englischen Seite auf verlinken/en/pathalias_en
Ich habe verschiedene Varianten ausprobiert, z. B. das Aufrufen der NID, das Aufrufen des Alias und das Übergeben des aktuellen Sprachobjekts an url()
.
Sollte das etwas url()
können oder brauche ich eine andere Funktion? Vielen Dank!
quelle
$translations = translation_path_get_translations(drupal_get_normal_path("pathalias_de","de"));
, um nach dem Alias anstelle der Knoten-ID zu suchen, es ist flexibler. Sie müssen jedoch die richtige Sprache übergeben.quelle
Schauen Sie sich die Funktion drupal_get_path_alias an
Wie Sie erkennen können, ist ein path_language-Parameter erforderlich. So können Sie die aktuelle Sprache herausfinden und dann an diese Funktion weitergeben.
Oder verwenden Sie einfach das Multilink-Modul
quelle
drupal_get_path_alias()
sucht nicht nach Übersetzungen eines bestimmten Knotens, sondern nur nach Aliasen, die bereits in der angegebenen Sprache vorhanden sind. Ich habe eine andere Problemumgehung gefunden, siehe meine Antwort unten.Keine der obigen Antworten scheint i18n_path korrekt zu verwenden. Wenn Sie eine Verknüpfung zum übersetzten Knoten herstellen möchten, aktivieren Sie einfach das Modul i18n_path und formatieren Sie den Pfad folgendermaßen:
quelle
Sie sollten wahrscheinlich die Link-Funktion verwenden . Sie können die Sprache als Parameter übergeben und die entsprechende Funktion zum Erstellen einer Verknüpfung mit Drupal verwenden.
quelle
l()
wirdurl()
intern verwendet, daher spielt es in diesem Fall keine Rolle.Mit Translation Redirect können Sie Verknüpfungen zu Knoten mit Sprachpräfix herstellen.
Das steht darin:
Wenn nid 22 beispielsweise für die englische Version ist und französische und deutsche Versionen enthält, können Sie einfach als fr / node / 22 und de / node / 22 auf diese verlinken. Diese 22 kann auch eine beliebige ID der übersetzten Version sein.
Wenn eine bestimmte Übersetzung nicht gefunden wird, wenn Sie beispielsweise kein Japanisch hinzugefügt haben, gibt ja / node / 22 für anonyme Benutzer 404 aus.
quelle
Um den richtigen Präfixpfad zu erhalten, verwende ich:
Drupal_get_path_alias () gibt nur den Alias zurück, die URL () fügt das Präfix ("en /") hinzu.
quelle