Программное создание статьи с переводом в Drupal

Допустим, вы получаете следующие данные — заголовок, текст статьи, и теги. При этом данные поставляются на двух языках — ‘ru’ и ‘en’. Вам требуется программно сохранить статью и её перевод.

Я полагаю, что уже активирован модуль Content Translation, и правильно настроен тип публикации, который вы собираетесь создавать.

Теги

Сначала надо разобраться со всеми дочерними сущностями, которые потребуется сохранить. В нашем случае это набор тегов.

Для определенности пусть это будут два массива, где в одном хранятся теги на русском языке, а в другом — соответствующие первому массиву английские значения.

Нам нужно собрать айди этих тегов в одном списке.

Пусть есть функция, которой мы передадим русское и английское значения, а она вернет нам объект термина таксономии (существующего термина или только что созданного).

Интересно взглянуть на саму функцию. Я её оформил в виде трейта, чтобы удобнее было подключать в разные классы.

Так мы создадим теги в таксономии с переводами и получим их список для создания сущности статьи.

Важно, чтобы в настройках кастомных полей, вроде field_body, было указано, что пользователь может переводить это поле. Это разрешит drupal хранить значения для каждого из включенных в настройках языков.

Мало букафф? Читайте есчо !

Изменить http код ответа для кастомной страницы

Октябрь 30, 2023 г.

Когда вы создаёте свою страницу, используя контроллер, то возможности тут же выбрать какой код ответа она возвращает нет. Контроллер занимается только формированием содержания страницы. Таким образом, страница возвращается с кодом 200. Что делать, ...

Читать

Получить код оригинального языка сущности в Drupal

Октябрь 18, 2023 г.

Сущность возвращает язык в контексте выбранного языка, но иногда нужно получить оригинальный язык node или другой entity. Вот так выглядит запрос в контексте: [crayon-687a951876d0f848073487/] А так можно получить код языка оригинальной версии ...

Читать

Как добавить css классы в attributes (twig, Drupal)

Май 16, 2024 г.

Порою требуется добавить свои классы в переменную attributes на уровне шаблона (в twig). Переменная attributes - это объект Drupal\Core\Template\Attribute. У него есть нужный нам метод - addClass(). Пример использования: [crayon-687a951876f07394211649/]

Читать

Корзина не пуста - изменим стиль пункта меню

Август 2, 2023 г.

Использую Drupal Commerce, и в меню у меня есть пункт "Корзина", со ссылкой на корзину пользователя. Хочется, чтобы стиль пункта меню менялся, если корзина не пуста. Я буду использовать hook_preprocess_menu темы, чтобы изменить нужный пункт меню ...

Читать
 

Комментарии к «Программное создание статьи с переводом в Drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: