Делаем выгрузку xml для яндекс маркет

Ключевая особенность в том, что данные выгружаются из Drupal Commerce.

Первое, что понадобится — это настроить какой то route, а потом мы напишем для него контроллер.

Маршрут можно добавить в какой то кастомный модуль, выглядеть он может следующим образом:

Далее в /src/Controller/YandexExport.php размещаем генерацию xml файла.

Я буду использовать класс XMLWriter, встроенный в PHP. Для вывода файла используем стандартный Response класс, предоставляемый Symfony.

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

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

Август 2, 2023 г.

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

Читать

Как добавить поле "количество" для кнопки add to cart в Drupal Commerce

Июль 13, 2023 г.

Кнопка выводится как элемент product.variations, а вот настройки полей, которые выводятся в этой сущности довольно глубоко зарыты. [crayon-6883a9ef1373f564016632/] Поле "кол-во товара в корзине" не является частью сущности product variation, ...

Читать

Загрузить данные параграфов для связанного с ними entity

Июль 8, 2023 г.

Пример кода для загрузки параграфов. В данном примере будем загружать параграфы, связанные с entity commerce_product_variation (это сущность модуля Commerce). Я привязал информацию по остаткам складов к вариациям в виде параграфов (тип - stocks). ...

Читать

Drupal Commerce - расчет доставки для выбранного района

Август 26, 2021 г.

Есть список районов города, доставка в которые имеет фиксированную ставку. Пользователь выбирает район - программа должна подставить цену доставки для ...

Читать
 

Комментарии к «Делаем выгрузку xml для яндекс маркет»

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



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

Много комментариев в “Делаем выгрузку xml для яндекс маркет”

  1. Виталий:

    Спасибо большое за гайд.
    Не совсем понятно ,что делает в листинге $x->endDtd();
    Нигде не смог найти $->startDtd(…..);
    Еще вопрос — как задать место выгрузки. Сейчас по умолчанию она происходит в папку загрузок. можно ли как-нибудь задавать путь к файлу (выгружать в корень сайта, например)?

    • Да, endDtd там лишний, спасибо, что увидели, убрал.

      Так можно конечно и в корень выгрузить — что то вроде:

      file_put_contents($_SERVER[‘DOCUMENT_ROOT’] . ‘/my-file.xml’, $content);

      • Виталий:

        Спасибо!
        Сделал так — добавил (предварительно интегрировав через DI FileSystemInterface $fileSystem) перед return $response;

        $this->fileSystem->saveData($response, DRUPAL_ROOT . ‘/my-file.xml’, FileExists::Replace);

        PS Мне надо было и в корень сайта и в папку закачек (для проверки)