Я занят работой над сайтом на моем локальном хосте, который должен ссылаться на какой-то контент, отдельный от Drupal.
У меня есть текущие пути меню , установленные вверх , как это: http://mylocalsite/the_folder_for_the_other_content
. Если я пытаюсь
<front>/the_folder_for_the_other_content
или /the_folder_for_the_other_content
или the_folder_for_the_other_content
, я получаю сообщение об ошибке «Путь« what_I_use »либо недействителен, либо у вас нет к нему доступа».
Когда я начинаю жить, мне, очевидно, нужны все пункты меню, на которые можно указать http://myrealsite/the_folder_for_the_other_content
.
Как я могу настроить его так, чтобы мне не пришлось редактировать все пути меню при запуске?
http://example.com/
.Ответы:
Ответ Киамлалуно не совсем сработал для меня. Использование% menu_tail вызвало массу ошибок, связанных с отсутствием аргументов в функции menu_tail_load:
Что сработало для меня
Затем я мог бы обслуживать файлы в папке sites / d8 / files (и подпапках), используя пункты меню с такими путями, как
sites/d8/files/Documents/MyFile.pdf
Система меню будет генерировать ссылку, как
href="https://drupal.stackexchange.com/sites/d8/files/Documents/MyFile.pdf"
Если вы не используете модуль пользовательского меню, система меню отклонит путь, начиная с описанного выше.
Если вы попытаетесь использовать путь как
http:sites/d8/files/Documents/MyFile.pdf
, он создаст ссылку какhref="http:sites/d8/files/Documents/MyFile.pdf"
, которая будет работать, когда вы находитесь в корне сайта, но когда вы находитесь на странице контента, браузер будет интерпретировать URL относительно страницы контента, и это не сработает.Если вы используете путь, подобный
http:/sites/d8/files/Documents/MyFile.pdf
, система меню примет его, но система меню создаст ссылку, подобнуюhref="http:/sites/d8/files/Documents/MyFile.pdf"
которой браузер (по крайней мере, Safari) будет интерпретировать какhref="http://sites/d8/files/Documents/MyFile.pdf"
, и не сможет найти сервер с именем «sites».(При дальнейшем изучении причина, по которой код, использующий menu_tail, не работает, заключается в том, что вам нужно добавить «аргументы загрузки», как указано здесь: http://api.drupal.org/api/drupal/includes--menu.inc/function / menu_tail_load / 7. Если вы добавите
'load arguments' => array('%map', '%index'),
определение $ items в коде kiamlaluno, оно будет работать. Вопрос о том, должна ли menu_tail_load требовать явных аргументов загрузки, также обсуждается здесь: http://drupal.org/node/298561 )(Не забудьте включить новый модуль, иначе система меню не примет новые ссылки)
источник
Когда вы добавляете новую ссылку, ссылка проверяется из menu_edit_item_validate () , которая вызывает drupal_valid_path (), чтобы проверить, является ли путь действительным, или к нему можно получить доступ от пользователя.
drupal_valid_path()
возвращается,TRUE
если<front>
(<front>/directory
или аналогичные пути исключены)TRUE
)Помимо использования абсолютных URL-адресов, единственным решением является наличие пользовательского модуля, который определяет обратный вызов меню, связанный с путем, который вы хотите использовать.
Когда вы используете URL-адрес, указывающий на файл или каталог, веб-сервер должен показывать этот файл или каталог, не вызывая Drupal. Вот что происходит с Apache, поскольку файл .htaccess, поставляемый с Drupal, содержит следующие директивы:
В вашем случае пользовательский модуль должен содержать код, подобный следующему:
Вы можете использовать любые значения для обратного вызова заголовка и страницы , так как этот обратный вызов меню никогда не должен вызываться. Значение обратного вызова доступа говорит Drupal, что каждый пользователь имеет доступ к этому обратному вызову меню.
В качестве альтернативы вы можете определить обратный вызов меню, связанный с «alias_for_directory /% menu_tail», который перенаправляет пользователя в каталог, который вы хотите видеть (используя drupal_goto () ). Я бы использовал это решение, когда сервер не использует содержимое .htaccess, и оно будет вызывать Drupal, даже если URL-адрес указывает на существующий файл или каталог.
источник
Для меня следующее помогло (на drupal 6).
Я хочу перенаправить на другой URL в том же домене, скажем, Drupal работает,
http://www.example.com
и я хочу иметь ссылку наhttp://www.example.com/frontend
В пункте меню введите как путь:
Меню Drupal будет ссылаться на:
http://www.example.com/frontend
Когда вы используете https, вы должны ввести https: / frontend в поле пути для пункта меню.
источник
Я решил свои проблемы со ссылками следующим образом:
http://groups.drupal.org/node/210308 и http://drupal.org/node/372252
Оказывается, моя тема печатала меню неправильно, так что все элементы были относительно моего текущего местоположения (то есть admin / logout, а не / logout).
Надеюсь это поможет.
источник
Я использовал sql, чтобы заменить ссылку в структуре меню:
Не уверен, что мне нужно было сделать это, но затем я сбросил кеши меню.
источник