Добрый день!
Нужна помощи по следующему вопросу. На мультиязычном сайте на Друпал 8 сделал материал "Новости" и Представление к нему "Все новости" - в виде страница с анонсами, содержащими поля:
Содержимое: Заголовок;
Содержимое: Image;
Содержимое: Body;
Содержимое: Ссылка на Содержимое.
Поля Содержимое: Заголовок; и Содержимое: Image; настроил в представлении в виде ссылки на Содержимое.
На англоязычной странице данного представления ссылка с заголовка и изображения ведет, как и нужно, на английский вариант страницы с материалом:
sait.ru/en/node/42
А вот поле: Содержимое: Ссылка на Содержимое - не правильно - на русскоязычную страницу: sait.ru/ru/node/42.
Перепробовал все настройки и не могу найти причину не правильной ссылки. На данный момент остается вариант убрать ссылку "Подробнее" (поле Ссылка на Содержимое), но надо бы разобраться, в чем дело.
Комментарии
Попробуйте отсюда решение: https://www.drupal.org/project/drupal/issues/2883450
Воевал с чем-то похожим примерно год назад, не придумал ничего лучше как принудительно проставлять во всех внутренних ссылках на странице (кроме переключателя языков! язык текущей страницы. Получился жуткий хак, но работает исправно:
* Implements hook_link_alter().
*/
function MYMODULE_link_alter(&$variables) {
/**
* The URL of the link.
*
* @var Url
*/
$url = $variables['url'];
// Return early where possible.
if ($url->isExternal()) return;
// Make sure all internal links from a page lead to the correct language versions of any linked page
if ($variables['text'] != 'English' && $variables['text'] != "Русский") {
$language = \Drupal::languageManager()->getCurrentLanguage();
$variables['options']['language'] = $language;
}
}
Попробовал поставить патч #11 с предложенного решения https://www.drupal.org/project/drupal/issues/2883450 , но к сожалению он мне не подходит, так как у меня при выводе представления на странице и в блоках установлена фильтрация по выбранному для страницы языку. В тоже время, для работы патча, при создании материала, в настройке выбора языка нужно выбирать "Не указано". Такие материалы в имеющихся представлениях на русском и английском просто не выводятся.
Попробовал и второе решение. По нему хочу уточнить. Данный хак добавил в файл темы mythemename.theme, соответственно, заменив MYMODULE на название моей темы mythemename. Почистил кэш. Но Ссылка на Содержимое в английской версии по-прежнему ведет на русскую страницу материала. Может что-то нужно сделать еще?
Я не уверен, что данный хук будет работать в теме - многие работают только в модуле. У меня сделано в модуле и работает. Возможно в этом дело.
Подскажите пожалуйста подробнее, в какой модуль и какой файл модуля добавить хак. (или нужно создать модуль?). И что прописать вместо MYMODULE
http://xandeadx.ru/blog/drupal/256
По ссылке описание создания модуля для семерки, в восьмерке всё немножко не так, начиная с папки. Найдите где-нибудь описание того, как создать свой модуль для восьмерки - там ничего военного нет, я тоже долго боялся, а оказалось ничего страшного. Рано или поздно это всё равно придётся сделать при разработке мало-мальски приличного сайта. Да, и на всякий случай предупрежу - название модуля должно отличаться от названия темы!
Спасибо за помощь! Создам модуль, а также есть еще одна идея, которую попробую реализовать.
Попробуйте вместо ссылки на содержимое использовать "ссылка на сущность". Т.к сам плагин ссылки на содержимое немного глючный и с версии 8.5 вроде бы должен стать deprecated.
К сожалению, пытаюсь перевести сайт на трех языках с друпал 6 на друпал 8, но даже в последней версии 8.6 так и остались проблемы при переходе на английский язык сайт так и не переходит нормально на свою языковую версию, включая и соответствующее меню на этом языке, языки site.com, site.com/ru, site.com/fr, site.com/de. В друпал 6 отлично решалась модулем i18n. Поиск в интернете не дал удачных вариантов, неужели придется переходить на Вордпресс? В Вордпрессе, там другая проблема возникает -страницы с одинаковыми адресами с префиксами языка он не дает сохранить а добавляет цифра 1 или 2 и т.д. Что делать, ждать 9 -ю версию?
Если бы Вы смогли чуть более внятно сформулировать свой вопрос , то появилась бы возможность получить внятный ответ. У меня без проблем работает двухязычный сайт на восьмёрке, начиная с версии 8.2.6 кажется.
Создал четыре языка,
site.com соответственно версия en, создаю четыре страницы одинакового содержания, но на разных языках. Не получается с меню и адресами, когда добавляю /en, то site.com/en только в такой конфигурации нормально переключаются языки с добавлением языка, по умолчанию нет, адрес сайта подскажите для примера.Что такое "страница"? Каким образом создаёте? В восьмом друпале не создаются новые ноды для разных языков, а переводится исходная нода, nid для всех языковых версий один и тот же.
Увы, я не в состоянии понять написанное
http://art.nouveau.world/moscow
PS Мой сайт пока на 8.5.3. Нельзя исключать что в 8.6 что-то поломали, хоть это и крайне маловероятно.
Последовательность должна быть такая:
1. Создаете сайт на основном языке (в т.ч. меню, блоки, информационные и другие страницы)
2. Включаете модули для мультиязычности
3. Загружаете в админке в языковых настройках необходимые языки
4. Далее для дополнительных языков не нужно создавать новые материалы, меню, блоки и т.д. Для каждого такого элемента переходим в соответствующих настройках по ссылке "Добавить перевод" и добавляем перевод существующего элемента.
Более подробно можно посмотреть, например, здесь:
https://tlito.ru/drupal-8-mnogoyazychnyy-sayt-iz-korobki
Проблема может быть в том, что на странице админпанели:
/admin/config/regional/content-language
нужно отметить те сущности которые нужно переводить, в том числе меню. Возможно не отмечен пункт "Пользовательская ссылка меню".
Спасибо marassa и primary попробую воспользоваться вашими советами, результат сообщу.
Господа получилось, большое спасибо- страницы со своим меню и переводом отображаются нормально, не нашел причины почему не могу переключить с языка на другой язык, на странице нет блока с переключением языков.
На настоящий момент выбор языка и переход на языковую страницу осуществляю, меняя в адресной строке en на de и прочее.
А Вы этот блок (Language switcher) добавляли через /admin/structure/block ?
Сам он и не может появиться на странице, если его туда не добавить.
Модули включены
Configuration Translation
Content Translation
Interface Translation
Language
на странице /admin/structure/block блока переключения языка нет
версия 8.6.2
Я его не добавлял на странице admin/structure/block не нашел как его добавить
Все нашел как добавить, все получилось, помогла страница ссылка https://www.ostraining.com/blog/drupal/d8-multi-lingual/
Осталось одно решить, как сделать, чтоб не переведенные страницы, не показывались в меню. Получается к примеру, если две страницы переведены, а одна не переведена, то все равно показывается переход на не переведенную на данный язык страница, по-моему эта проблема 8-го друпал мультиязычного сайта.
О каком конкретно меню идёт речь, и как оно формируется?
Речь идет о блоке переключения языков, в котором отражаются переход на страницу материала на английском, немецком и .. и если страница не переведена на немецкий то в меню его не должно быть, а только те языки на который она имеет перевод. В друпале 6 это было без вопросов.
Let me Google that for you: https://www.drupal.org/forum/support/translations/2016-08-28/language-sw...
[quote=marassa]
[/quot] Посмотрел, почитал, не уверен, что это надежное решение, так нет статистики, плохо что допиливать, пока думаю и ищу решение в инете, но пока больше не попалось, а так большое спасибо.