Ich arbeite gerade an einer Site auf meinem lokalen Host, die auf Inhalte verlinken muss, die von Drupal getrennt sind.
Ich habe die aktuellen Menüpfade wie folgt eingerichtet : http://mylocalsite/the_folder_for_the_other_content
. Wenn ich es versuche
<front>/the_folder_for_the_other_content
oder /the_folder_for_the_other_content
oder the_folder_for_the_other_content
, erhalte ich die Fehlermeldung "Der Pfad 'Whatever_I_use' ist entweder ungültig oder Sie haben keinen Zugriff darauf."
Wenn ich live gehe, brauche ich natürlich alle Menüpunkte, auf die ich zeigen kann http://myrealsite/the_folder_for_the_other_content
.
Wie kann ich es so einrichten, dass ich nicht alle Menüpfade bearbeiten muss, wenn ich live gehe?
http://example.com/
.Antworten:
kiamlalunos antwort hat bei mir nicht ganz funktioniert. Die Verwendung von% menu_tail führte zu einem Sturm von Fehlern, bei denen die Funktion menu_tail_load Probleme mit fehlenden Argumenten hatte:
Was für mich funktioniert hat war
Dann könnte ich Dateien im Ordner sites / d8 / files (und in Unterordnern) mithilfe von Menüelementen mit Pfaden wie bereitstellen
sites/d8/files/Documents/MyFile.pdf
Das Menüsystem generiert dann einen Link wie
href="/drupal//sites/d8/files/Documents/MyFile.pdf"
Wenn Sie das benutzerdefinierte Menümodul nicht verwenden, lehnt das Menüsystem einen Pfad ab, der wie oben beginnt.
Wenn Sie versuchen, einen Pfad wie zu verwenden
http:sites/d8/files/Documents/MyFile.pdf
, wird ein Link wie erzeugthref="http:sites/d8/files/Documents/MyFile.pdf"
, der funktioniert, wenn Sie sich im Stammverzeichnis der Website befinden. Wenn Sie sich jedoch auf einer Inhaltsseite befinden, interpretiert der Browser die URL relativ zur Inhaltsseite. und es wird nicht funktionieren.Wenn Sie einen Pfad wie verwenden
http:/sites/d8/files/Documents/MyFile.pdf
, akzeptiert das Menüsystem diesen, aber das Menüsystem erzeugt einen Link wiehref="http:/sites/d8/files/Documents/MyFile.pdf"
, den der Browser (zumindest Safari) interpretierthref="http://sites/d8/files/Documents/MyFile.pdf"
, und versucht nicht, den Server mit dem Namen "sites" zu finden.(Bei weiteren Untersuchungen schlägt der Code mit menu_tail fehl, weil Sie die 'Ladeargumente' hinzufügen müssen, wie hier angegeben: http://api.drupal.org/api/drupal/includes--menu.inc/function / menu_tail_load / 7. Wenn Sie
'load arguments' => array('%map', '%index'),
die Definition von $ items im Code von kiamlaluno ergänzen, funktioniert dies. Die Frage, ob menu_tail_load die expliziten Ladeargumente erfordern sollte, wird auch hier erläutert: http://drupal.org/node/298561 )(Vergessen Sie nicht, Ihr neues Modul zu aktivieren, da das Menüsystem die neuen Links sonst nicht akzeptiert.)
quelle
Wenn Sie einen neuen Link hinzufügen, wird die Verknüpfung von validierten menu_edit_item_validate () , die Anrufe drupal_valid_path () zu überprüfen , ob der Pfad gültig ist, oder es kann vom Benutzer zugegriffen werden.
drupal_valid_path()
gibtTRUE
if zurück<front>
(<front>/directory
oder ähnliche Pfade sind ausgeschlossen)TRUE
)Abgesehen von der Verwendung absoluter URLs besteht die einzige Lösung darin, ein benutzerdefiniertes Modul zu haben, das einen Menürückruf definiert, der dem Pfad zugeordnet ist, den Sie verwenden möchten.
Wenn Sie die URL verwenden, die auf eine Datei oder ein Verzeichnis verweist, sollte der Webserver diese Datei oder dieses Verzeichnis anzeigen, ohne Drupal aufzurufen. Dies geschieht mit Apache, da die mit Drupal gelieferte .htaccess-Datei die folgenden Anweisungen enthält:
In Ihrem Fall sollte das benutzerdefinierte Modul Code enthalten, der dem folgenden ähnelt:
Sie können beliebige Werte für den Titel- und Seitenrückruf verwenden , da dieser Menürückruf niemals aufgerufen werden sollte. Der Wert des Zugriffsrückrufs sagt Drupal, dass jeder Benutzer Zugriff auf diesen Menürückruf hat.
Alternativ können Sie einen Menü-Rückruf definieren, der "alias_for_directory /% menu_tail" zugeordnet ist und den Benutzer in das gewünschte Verzeichnis umleitet (mithilfe von drupal_goto () ). Ich würde diese Lösung verwenden, wenn der Server den Inhalt von .htaccess nicht verwendet, und Drupal auch dann aufrufen, wenn die URL auf eine vorhandene Datei oder ein vorhandenes Verzeichnis verweist.
quelle
Für mich hat das Folgende den Trick gemacht (auf Drupal 6).
Ich möchte auf eine andere URL in derselben Domain verweisen. Nehmen wir an, Drupal läuft weiter
http://www.example.com
und ich möchte einen Link zu habenhttp://www.example.com/frontend
Geben Sie im Menüpunkt als Pfad ein:
Das Drupal-Menü verlinkt auf:
http://www.example.com/frontend
Wenn Sie https verwenden, sollten Sie https: / frontend in das Pfadfeld für den Menüpunkt eingeben.
quelle
Ich habe meine Linkprobleme wie folgt gelöst:
http://groups.drupal.org/node/210308 und http://drupal.org/node/372252
Es stellte sich heraus, dass mein Thema das Menü falsch druckte, sodass alle Elemente relativ zu meinem aktuellen Speicherort waren (dh admin / logout anstelle von / logout).
Hoffe das hilft.
quelle
Ich habe SQL verwendet, um den Link in der Menüstruktur zu ersetzen:
Ich bin mir nicht sicher, ob ich das tun musste, aber ich habe dann die Menü-Caches geleert.
quelle