mmjmm: Блог

Главные вкладки

Views bulk operations - не применяется к группе товаров

15 января в 7:50

Здравствуйте.
Создал кастомный модуль, наследующийся от VBO. В нем в src/Plugin/Action создал файл ViewsBulkOperationManufacturerProductAction.php
В этом файле происходит описание метода смены производителя товара (смена значения поля field_brand)

<?php
/**
 * @file
 * Contains \Drupal\my_action\Plugin\Action\ViewsBulkOperationProductAction.
 */

VBO создание своих кастомных действий

10 января в 7:37

Здравствуйте. Установил модуль Views Bulk Operations.
Создал кастомный модуль, наследующийся от VBO. В нем в src/Plugin/Action создал файл ViewsBulkOperationManufacturerProductAction.php
В этом файле происходит описание метода смены производителя товара (смена значения поля field_brand)

При выборе в списке товаров вручную(одного или несколько) данное действие работает.
А при использовании чекбокса VBO "Выбрать все страницы" по сути товары не выбираются и действие ни к чему не применяется.

Написать функционал помощи "help" для кастомной drush-команды

15 ноября 2023 в 6:33

Здравствуйте. Я написал кастомную drush-команду через src->Commands->MyCommand.php-> MyCommand extends DrushCommands
Подскажите, пожалуйста, каким образом можно добавить функционал помощи (help) для команд этого файла.

html-разметка в поле ноды отображается как тест

13 сентября 2023 в 5:56

На сайте у меня есть множество нод, у которых есть поле типа "Текст (форматированный, длинный, с резюме)". В это поле вставлена с помощью источника html-разметка таблицы. И в карточке товара отображаются прямо все теги. А если нажать на пересохранение, они исчезают и разметка начинает работать как надо.
Мне необходимо пересохранить там все ноды. Если использовать $node->save(), то это не срабатывает.
Если перезаписывать значение этого поля, тоже не срабатывает. Разметка остается в виде текста.

Использовал модуль resave all nodes, тоже не помогло.

Drupal 7 - Metatags шаблон не выводится

8 сентября 2023 в 11:59

Есть сайт на Drupal 7. Стоит модуль metatags. В нем для терминов/содержимого настроены шаблоны.
Если зайти в термин, как пример, в его поле метатегов ввести свое предложение в metatag description, то на странице этого термина появится в header тег meta name ="description" content="мое предложение"

Но если поле метатегов этого термина очистить, то настроенный ранее шаблон не подтянется и тега meta name ="description" content не будет.

Подскажите, пожалуйста, в чем проблема может заключаться?

Drupal 8 Docker - установить версию php 7.4.28

5 сентября 2023 в 8:12

Здравствуйте.
Произвожу развертывание своего сайта на docker.
На сайте: Drupal 8, php:7.4.28

В .env нет такой версии php. Есть только:
# Linux (uid 1000 gid 1000)

#PHP_TAG=8.2-dev-4.47.1
#PHP_TAG=8.1-dev-4.47.1
PHP_TAG=8.0-dev-4.47.1

При использовании 8.0-dev-4.47.1 во время composer install/update появляются ошибки версий.

Если устанавливаю в docker-compose.yml:
php:
image: php:7.4.28, то контейнер не хочет запускаться. Статус - exited.

Точка с запятой MYSQl-запросе

31 августа 2023 в 7:03

Здравствуйте.
Делаю mysql-запрос средствами Друпал:
$query = $database->query("
SELECT id
FROM my_table
WHERE value_1 = 'srt' AND value_2 = '{$value_2}'
");
$result = $query->fetchAll();

где $value_2 содержит набор цифр, букв и точку с запятой.
Из-за точки с запятой выходит ошибка: " ; is not supported in SQL strings. Use only one statement at a time."

Контент поля материала не выводится в инкогнито

14 августа 2023 в 12:41

Здравствуйте.
У меня создан некоторый тип материала (через административную панель Друпал 8).
Одно из полей является ссылкой на этот же тип материала. При выводе этого поля в шаблоне node--<мой_материал>.html.twig через {{ content.my_field }} будет выводиться контент определенного поля материала, к которому данная единица привязана.

Можно ли сделать так, что бы в авторизованном режиме контент этого поля выводится, а в инкогнито - нет?

Form API, вывести изображения в форме

9 августа 2023 в 5:52

Здравствуйте. У меня есть форма, созданная через FormBase. В ней описаны различные поля в виде рендер массива. Необходимо в этой форме вывести определенное изображение.
Нашел для рендер массива индекс "html_tag":
$form['html_tag'] = [
'#type' => 'html_tag',
'#tag' => 'img',
];

Сначала попробовал указать "#value" => 'ссылка_на_изображение'. Не сработало.
Потом попробовал "#href" => 'ссылка_на_изображение'. Тоже не то.

Сделать недоступной кастомную страницу для неавторизованных пользователей

24 июля 2023 в 7:10

Здравствуйте. Есть кастомный модуль, предоставляющий некоторую страницу. Необходимо сделать так, что бы неавторизованные пользователи ее не видели (запретить доступ). Думал, может в роутинге в require _acces прописать какое-то право (и надо ли его создавать или в друпал есть готовое для такого случая).

Получить title и description метатега

12 июля 2023 в 6:39

Здравствуйте. У меня Drupal 8.
Загружаю объект ноды и пытаюсь получить данные метатега.
[field_metatags] => Array
(
[x-default] => Array
(
[0] => Array
(
[value] => a:2:{s:5:"title";s:144:"Наименование метатега";s:11:"description";s:264:"Описание метатега ";}
)

)

)

Drupal 7 - токен текущей страницы

19 июня 2023 в 7:18

Здравствуйте. Мне необходимо при отправке формы сохранять url страницы, с которой была отправлена эта форма.
Не вижу подходящего токена для заполнения значения поля, которое будет хранить эту ссылку.

Занесение в БД значения 0 и NULL

26 мая 2023 в 9:50

Здравствуйте. Вопрос больше не по друпал, а по mysql. Я через некоторую кастомную форму делаю запрос (update) к БД на перезапись одного поля (тип integer(10)). Я ввожу "0", в таком случае в БД в поле сохраняется значение "NULL". А мне важно отличие между 0 и NULL в моем случае.
Подскажите, как в это поле можно сохранить именно значение "0".

Плагин QueueWorker

14 апреля 2023 в 8:50

Здравствуйте.
В скрипте создается очередь с некоторым количеством задач.
В задачах может отличаться параметр "operation" , который в себе будет содержать название функции для обработки этой задачи.
Создаю плагин QueueWorker, в котором находится лишь одна функция - processItem($item) (обработка элемента очереди).

Подскажите, а как инициализировать выполнение этого обработчика?

В crontab как-то его прописать?
Нашел команду drush queue:run. Подходит ли?

Вывести ссылку в рендер-таблице

5 апреля 2023 в 13:12

Здравствуйте.
Создаю таблицу посредством рендера:
$header = [
'col1' => '1',
'col1' => '2',
'col1' => '3',
];

$rows = [
'col1',
'col2',
'ссылка'
];

$return my_table = [
'#type' => 'table',
'#header' => $header,
'#rows' => $rows,
];

Как можно поместить разметку вида "Link" в третий столбец?

Смена значения поля "date" с помощью ajax

30 марта 2023 в 8:20

Здравствуйте. У меня есть поле:
$form['date'] = [
'#type' => 'date',
'#title' => $this->t('Дата'),
];

Необходимо ниже этого поля сделать ссылку/кнопку (что угодно) под названием "Текущая дата", что бы при нажатии на это в поле "date" значение менялось на текущую дату (date("Y-m-d"))

Форма в модальном окне

22 марта 2023 в 9:32

Создал кастомную форму FormBase + ссылку на нее. Необходимо вывести ее в модальном окне при нажатии на некоторую свою ссылку.
Создал ссылку вида:
a class="use-ajax" href="{{ ссылка на форму }}" data-dialog-type="modal"

Теперь при нажатии на эту ссылку появляется форма в модальном окне, но при нажатии на submit формы происходит переход по ссылки на эту же самую форму.

Создать несколько sitemaps на сайте

20 марта 2023 в 12:06

Добрый день. Мне необходимо создать несколько карт сайта. Одна стандартно уже есть site/sitemap.xml.
А теперь дополнительно надо создать ссылку site/sitemap2.xml

На странице sitemap/admin/config/search/xmlsitemap нажимаю на кнопку "Добавить XML-карту сайта", ввожу label и выдается ошибка "Существует другая карта сайта, сохраненная в том же контексте".

Написать drush-команду

28 февраля 2023 в 13:29

Здравствуйте. У меня есть кастомный модуль на Drupal 8. В нем прописан hook_cron().
Необходимо написать некоторую drush- команду, которую пропишу в crontab на выполнение каждые 10 минут. При выполнении этой команда необходимо вызывать скрипт в hook_cron() моего модуля.
Как такое можно сделать?

Web form - дублирование e-mail письма

2 февраля 2023 в 9:25

Здравствуйте. У меня есть 6 форм на сайте. При отправке любой из них на указанную в ней почту приходит 2 идентичных письма (дубликаты). По какой причине такое может происходить и в какую сторону думать?

Views - добавить раскрывающийся список со всеми вариациями значений поля

17 января 2023 в 12:18

Здравствуйте. У меня есть материал типа product. Создал фильтр с помощью представления. В критериях фильтрации добавил свое поле Производитель - "field_brand".

Моя задача - фильтрацию по производителю сделать в виде раскрывающегося списка, который будет строиться из всех вариантов, которые заполнены в этом поле у всех имеющихся товаров. (например: у некоторых товаров производитель_1, у других производитель_2 и тд. В списке должны указываться эти варианты: производитель_1, производитель_2 и тд).

Открыто доступ к пунктам toolbar menu

11 января 2023 в 12:02

Здравствуйте. С помощью своего модуля я добавляю пункты меню в toolbar menu с использованием файла links.menu.yml.
Мне необходимо открыть доступ к этим пунктам аутентифицированным пользователям, не обладающим ролью администратора. При этом доступ к остальным пунктам (конфигурации, содержимое и тд) запретить. Подскажите, пожалуйста, как такое можно сделать?

Вкладка, ведущая на представление, на ноде

23 декабря 2022 в 8:43

Есть некоторое представление с ссылкой /node/%/stocks
Задача: вывести вкладку "Склады" на ноде /node/%

Название роутинга представления: view.stocks.page_1

Я в файл links.task.yml прописал:
ap_stocks.stocks_tab:
route_name: view.stocks.page_1
base_route: entity.node.canonical
weight: 10

При переходе на любую ноду или представление выдается ошибка : Some mandatory parameters are missing ("arg_0") to generate a URL for route "view.stocks.page_1". in Drupal\Core\Routing\UrlGenerator->doGenerate()

Программное добавление контента в кастомную сущность

22 декабря 2022 в 14:52

Здравствуйте. Я создал кастомную сущность "cutom_entity". Теперь мне программно надо добавить контент типа "cutom_entity".
Как ноду добавлять, я знаю:
$new_content = Node::create([
'type' => 'bundle',
'title' => $product_name,
'field_stock_id' => $stock_id,
'field_offer_id' => $id,
'field_available' => $available,

Генерация нескольких сущностей

15 декабря 2022 в 13:13

Здравствуйте. У меня стоит задача сгенерировать в одном модуле несколько сущностей.
Я использую команду vendor/bin/drush generate content-entity
После создания первой сущности, начинаю создание второй и все .yml файлы уже существуют. Мне предлагают их перезаписать. А мне необходимо добавить.
Как в такой ситуации можно поступить?