msPriceList

Управление прайс-листами minishop2
Автор дополнения
Alexey Naumov
Пакетов
8
Закачек
6 053
Обычно отвечает в течение суток
Автор дополнения
Пакетов
8
Закачек
6 053
Обычно отвечает в течение суток
Версия 1.0.2-beta
Дата выпуска 08.11.2022
Загрузки 23
Просмотры 5 329
Внимание, этот компонент требует версию PHP 5.4 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.3 !
Экспорт прайс-листов в XLSX с неограниченным количеством категорий и товаров.
Компонент умеет создавать прайс-листы в формате XLSX с категориями и товарами с поддержкой многоуровневого древовидной навигацией по файлу. Можно создавать сколько угодно прайс-листов и давать их скачивать пользователями.



Пример выгрузка всех категорий

Каталог.xlsx

Пример выгрузка нескольких категорий

Электронные товары и Телефония.xlsx

Возможности


  • Создание неограниченное количество прайс-листов
  • Многоуровневая навигация в файле XLSX
  • Добавление своего логотипа в файле XLSX
  • Добавление контактной информации в файле XLSX
  • Добавление даты формирования прайс-листа в файле XLSX
  • Управление колонками в xlsx файле. Возможно передвигать, задавать названия, создание свободных колонок
  • Вывод сниппета на сайте для скачивания для пользователе.
  • Возможность задать имя для файла в чанке для вывода прайс-листов
  • Поддержка огромных каталогов, так как выгрузка происходит пакетно, можно выгрузить до 100 000 категорий и товаров
  • Плагины и события для управления стилями и данными для выгрузки
  • Возможно задать отступы от верхней части, возможность отключить или включить: логотип, текст в шапке, дату формирования прайс-листа, наименование колонок
  • Установка крон заданий
  • Быстрый старт, вам нужно будет установить только id родительской категории для выгрузки


Быстрый старт


По умолчанию будет создан прайс-лист с нужными настройками. Вам необходимо указать только id категори или категорий через запятую.

Для начала работы необходимо зайти в раздел компонента



Выбрать редактирование и указать id родительской категории


Выбрать Экспортировать прайс-лист и дождаться пока консоль не вернет ссылку на ваш прайс-лист.
После этого скачиваем прайс-лист.


Сниппет msPriceList


Для вывода прайс-листов на фронтенд необходимо в любом месте на сайте разместить сниппет msPriceList
{$modx->runSnippet('msPriceList')}



Настройка колонок


Можно добавлять новые колонки как со значениями из полей с товаров так и свободных колонок (например колонка заказ, для того чтобы заказчик мог указать количество заказываемых товаров).

Возможности:
  • Наименование колонки
  • Системное имя для колонки
  • Поля со значением — ключ поля из msProduct (например price, old_price)
  • Задать ширину колонки
  • Задать расположения текста: Выравнивание по горизонтали, Выравнивание по вертикали
  • Установка ключа для словарей, так можно добавить дополнительное значение в ячейку:
    $_lang['mspricelist_price_currency'] = '[[+value]] руб.';
    вернет 54 руб.
  • Выделить текст жирным


Настройки


Возможность задавать настройки на странице с компонентом.
  • Можно добавить свой логотип и задать ему размер и расположения логотипа в файле
  • добавлять текст — при добавлении учитывается перенос. Каждый перенос это следующая строка. Можно задать колонку куда будет помещаться текст или вообще можно отключить вывод
  • добавлять дату формирования прайс-листа — назначение ячейки куда запишется дата
  • Цвета для категорий — можно задать свой цвет для уровней категорий


События для плагинов


Добавлены события для добавления своих данных и управления стилями прайс-листов.

Событие msPriceListAfterSetStyle
Добавление стилей для колонки или только для одной ячейки

<?php
/* @var PHPExcel_Style $style */
/* @var array $resource */
/* @var string $column_key */
if ($resource['class_key'] == 'msProduct' and $column_key == 'price') {
    if ($object = $modx->getObject('msProductData', $resource['id'])) {
        if ($object->get('new')) {
            $style->getFont()->setBold(true);
        }
    }
}


Событие msPriceListBeforeSetLogo
Установка координат или других параметров для логотипа в прайс-листе

<?php
/* @var PHPExcel_Worksheet_Drawing $objDrawing */

    $objDrawing->setName('Торговые технологии'); // Имя сайта
    $objDrawing->setDescription('Текст'); // Описание для логотипа
    $objDrawing->setPath('/home/s10000/www/inc/images/logo.png'); // Полный путь на сайте к логотипу
    $objDrawing->setCoordinates('A1'); // в какую ячейку вставить

    //setOffsetX works properly
    $objDrawing->setOffsetX(15); // отступ с верху
    $objDrawing->setOffsetY(15); // отступ с боку

    //set width, height
    $objDrawing->setWidth(400); // ширина логотипа
    $objDrawing->setHeight(83); // Высота логотипа


Событие msPriceListBeforeSetText
Установка стилей для текста

<?php
/* @var PHPExcel_Style $style */
 $style->getFont()->setBold(true);


Событие msPriceListBeforeSetTextPrice
Установка стилей для даты формирования прайс-листа

<?php
/* @var PHPExcel_Style $style */

 $style->getFont()->setBold(true);


Событие msPriceListBeforeSetColumn
Форматирование значений для прайс листа
// Запись значений колонок
    $response = $this->invokeEvent('msPriceListBeforeSetColumn', array(
            'column' => $column,
            'resource' => $resource,
        ));
        if (!$response['success']) {
            return $response['message'];
        }
        $column = $response['data']['column'];

        // Запись значений колонок
        $column_key = $column['column_key'];
        $column_field = $column['column_field'];
        $column_value = $column['column_value'];
        $column_horizontal = $column['column_horizontal'];
        $column_vertical = $column['column_vertical'];
        $column_bold = $column['column_bold'];
        $column_lexicon = $column['column_lexicon'];
создаем плагин с событием
/** @var modX $modx */
switch ($modx->event->name) {
    case 'msPriceListBeforeSetColumn':
        /** @var array $scriptProperties */
        /* @var array $column */
        $resource = $scriptProperties['resource'];
        $colump = $scriptProperties['column'];

        if ($colump['column_field'] == 'color') {
            $column['column_field'] = '';
            $column['column_value'] = !empty($resource['color']) ? implode(',',$resource['color']) : '';
            $modx->event->returnedValues['column'] = $column;
        }

    break;
}

1.0.2-beta

  • Исправлен баг с родительской категорией

Последние обсуждения в сообществе MODX.pro