Разработать плагин для Webasyst для генерации PDF и DOCX

3 000 руб. за проект • безналичный расчёт
24 января 2019, 12:29 • 1 отклик • 35 просмотров
1. Создать плагин магазина Shopscript на базе CMS Webasyst (https://developers.webasyst.ru/docs/cookbook/pl...).
суть плагина заключается в генерации html с описанием товаров в pdf и docx. Можно сгенерировать скелет плагина через консоль (https://developers.webasyst.ru/docs/features/co...).

2. Необходимо генерировать оглавление, содержащее перечень товаров с номерами страниц и собственно страницы с описанием товаров. Т.к. до раздела с товарами в каталоге имеется другая статичная информация, нумерация страниц с товарами должна начинаться с 12й, причем если оглавление занимает более 1 страницы, то с 12 + n, где n — количество страниц оглавления - 1. Название подкатегории товара должна находиться на изображении, как показано в примере в прикрепленном файле (ЕСТЕСТВЕННОНАУЧНЫЕ ДИСЦИПЛИНЫ).

3. Генерация каталога будет происходить по крону, поэтому необходимо написать экшен для вызова из сli в соответствии с инстукцией: раздел "Действия по расписанию" (https://developers.webasyst.ru/docs/cookbook/pl...). При вызове экшена через cli происходит сбор данных по товару.

4. Генерируемый файл должен располагаться по пути wa-data/public/shop/catalog/

5. Для генерации docx реомендуетя использовать phpoffice/phpword. Для генерации pdf — dompdf/dompdf

6. Для получения библиотек рекомендуется использовать composer прямо в корне.

7. Для плагина рекомендуется использовать имя procatalog.

8. Вспомогательная информация:
Принцип получения товаров следующий:
1. Инстанцируешь модель категории shopCategoryModel
2. Получаешь дочерние категории.
3. Инстанцируешь shopCategoryProductsModel
4. Получаешь id тоавров
5. Инстанцируешь shopProductModel
6. Получаешь объект товара.


Данные необходимые для страницы товара:
1. Название товара — $product.name,
2. Бренд — $product.params.brand_name (Бренд — тоже самое что и основная категория товара, только в единственном числе, например виртуальнЫЕ лабораторИИ/виртуальнаЯ лабораториЯ). Можно получить (new shopProductParamsModel())->get($productId)['brand_name'];
3. Перечень лабораторных работ. Можно получить следующим образом:
$pagesModel = new shopProductPagesModel();
$pages = $pagesModel->getByField('product_id', $productId, true);
$pageId = array_search('tz', array_column($pages, 'url'));
$result = $pageId !== false ? $pages[$pageId]['content'] : false;
4. Изображения (ничиная со второй картинки). Аналогично через модель shopProductImagesModel

Пример работы phpoffice/phpword можно посмотреть в плагине wa-apps/shop/plugins/prospectech
Пример работы dompdf/dompdf можно посмотреть в плагине wa-apps/shop/plugins/proprintcontrol

9. Порядок работы следующий: я предоставляю доступ к репозиторию, вы делаете pull request, я делаю код-ревью, тестирование, если обнаружатся баги, устраняете их, получаете оплату.
Файлы