Страницы, статьи и новости
Инструменты и плагины
Заготовка заголовок


Описание как пример заготовки. Пример текстового контента для дальнейшей кастомизации шаблона "Index36".

Редактировать шаблон вы можете на свое усмотрение и как вам угодно. Если у вас на это нет времени или недостаточно знаний - вы всегда можете заказать адаптацию шаблона сайта написав мне по контактам на GitHub или в личные сообщения на публичной странице сайта маркетплейса цифровых товаров

19.08.2025 01:24

Пример «Тип доставки»

Экстраполя в модуле MultiStore позволяют добавлять пользовательские поля к товарам, расширяя функционал без изменения кода. Это руководство описывает процесс создания экстраполя «Тип доставки» (delivery_type) с вариантами доставки от выдуманных компаний (AstroFreight, QuantumExpress, GalaCourier), его настройку в админ-панели, вывод в шаблонах и использование на страницах создания, редактирования и просмотра карточки товара. Основано на коде модуля MultiStore (Cotonti Siena 0.9.26, PHP 8.4).

1. Создание экстраполя в админ-панели

Экстраполя создаются через админ-панель Cotonti в разделе «Управление сайтом» → «Экстраполя» → «Mstore».

  1. Перейти в админ-панель:
    • URL: admin?m=extrafields&n=cot_mstore.
    • Требуются права администратора (cot_auth('admin', 'extrafields', 'A')).
  2. Добавить новое поле:
    • Нажать «Добавить экстраполе».
    • Заполнить параметры:
      • Имя поля: delivery_type (будет сохранено как msitem_delivery_type в таблице cot_mstore).
      • Заголовок: «Тип доставки» (локализованное название, отображается в формах, берётся из Cot::$L['mstore_delivery_type'] или имени поля).
      • Тип поля: select (выпадающий список).
      • Параметры: Список значений в формате ключ=значение, разделённые запятой:
        • astro=AstroFreight
        • quantum=QuantumExpress
        • gala=GalaCourier
      • Обязательное: Нет (по умолчанию, можно включить).
      • Парсер: none (без обработки, так как это выбор из списка).
      • HTML-атрибуты: class="form-control" (для стилизации).
    • Сохранить. Поле добавляется в Cot::$extrafields[Cot::$db->mstore] и в таблицу cot_mstore (столбец msitem_delivery_type, тип varchar(255)).
  3. Локализация:
    • Для отображения заголовка поля в интерфейсе добавить в mstore.ru.lang.php:

      $L['mstore_delivery_type'] = 'Тип доставки';
                          
    • Поле автоматически регистрируется в mstore.extrafields.php (см. $extra_whitelist[$db_mstore]['tags']).

2. Вывод экстраполя в шаблонах

Экстраполя автоматически поддерживаются в шаблонах благодаря mstore.extrafields.php. Для delivery_type доступны теги в различных шаблонах:

  • Список товаров (mstore.list.tpl):
    • LIST_ROW_DELIVERY_TYPE: Значение поля (например, «AstroFreight»).
    • LIST_ROW_DELIVERY_TYPE_TITLE: Заголовок («Тип доставки»).
    • LIST_TOP_DELIVERY_TYPE: Для заголовков в таблице списков.
  • Карточка товара (mstore.tpl):
    • MSTORE_DELIVERY_TYPE: Значение поля.
    • MSTORE_DELIVERY_TYPE_TITLE: Заголовок.
  • Форма добавления (mstore.add.tpl):
    • MSTOREADD_FORM_DELIVERY_TYPE: Поле ввода (выпадающий список).
    • MSTOREADD_FORM_DELIVERY_TYPE_TITLE: Заголовок.
  • Форма редактирования (mstore.edit.tpl):
    • MSTOREEDIT_FORM_DELIVERY_TYPE: Поле ввода.
    • MSTOREEDIT_FORM_DELIVERY_TYPE_TITLE: Заголовок.
  • Другие шаблоны: news.tpl, recentitems.mstore.tpl используют MSTORE_ROW_DELIVERY_TYPE.

Пример шаблона (mstore.tpl):

<div>
    <label>{MSTORE_DELIVERY_TYPE_TITLE}:</label>
    <p>{MSTORE_DELIVERY_TYPE}</p>
</div>
    

Это отобразит: «Тип доставки: AstroFreight» (или другой выбранный вариант).

3. Использование экстраполя на странице создания товара

Страница создания (mstore.add.php) позволяет добавлять товар с заполнением экстраполя delivery_type.

  1. Доступ:
    • URL: mstore?m=add&c=[cat].
    • Требуются права на запись (cot_auth('mstore', 'any', 'W'), или в категории, если указана).
    • Если категория заблокирована (Cot::$structure['mstore'][$cat]['locked']), доступ только для админов.
  2. Форма:
    • Шаблон: mstore.add.[cat_code].tpl или mstore.add.tpl.
    • Поле delivery_type генерируется через cot_build_extrafields('rmsitemdelivery_type', $exfld, $data), где $data = $ritem['msitem_delivery_type'].
    • Тег: MSTOREADD_FORM_DELIVERY_TYPE — HTML-код выпадающего списка с вариантами (astro=AstroFreight, quantum=QuantumExpress, gala=GalaCourier).
    • Тег: MSTOREADD_FORM_DELIVERY_TYPE_TITLE — «Тип доставки».
    • Пример в mstore.add.tpl:

      <div class="form-group">
          <label>{MSTOREADD_FORM_DELIVERY_TYPE_TITLE}</label>
          {MSTOREADD_FORM_DELIVERY_TYPE}
      </div>
                          
    • Отправка формы на mstore?m=add&a=add&c=[cat].
  3. Обработка:
    • Импорт данных: cot_mstore_import('POST', [], Cot::$usr) обрабатывает rmsitemdelivery_type.
    • Валидация: cot_mstore_validate($ritem) проверяет обязательность поля, если включено.
    • Сохранение: cot_mstore_add($ritem, Cot::$usr) добавляет товар в cot_mstore, включая msitem_delivery_type.
    • Статус: Если Cot::$cfg['mstore']['mstoreautovalidate'] и пользователь — админ, msitem_state=0 (опубликован), иначе msitem_state=1 (на рассмотрении) или msitem_state=2 (черновик).
    • Редирект:
      • Опубликован: На страницу товара (mstore?c=[cat]&id=[id] или mstore?c=[cat]&al=[alias]).
      • На рассмотрении: На message?msg=300.
      • Черновик: На mstore?m=edit&id=[id] с сообщением mstore_savedasdraft.
  4. Клонирование:
    • Если clone=[id], данные загружаются из cot_mstore по ID, включая msitem_delivery_type.
    • Поле отображается с сохранённым значением (например, astro).

4. Использование экстраполя на странице редактирования товара

Страница редактирования (mstore.edit.php, не предоставлен, но предполагается аналогичная логика) позволяет изменять товар.

  1. Доступ:
    • URL: mstore?m=edit&id=[id].
    • Требуются права на запись в категории или владение товаром (Cot::$usr['id'] == $item['msitem_ownerid']).
  2. Форма:
    • Шаблон: mstore.edit.[cat_code].tpl или mstore.edit.tpl.
    • Поле delivery_type генерируется через cot_build_extrafields('rmsitemdelivery_type', $exfld, $item['msitem_delivery_type']).
    • Теги: MSTOREEDIT_FORM_DELIVERY_TYPE и MSTOREEDIT_FORM_DELIVERY_TYPE_TITLE.
    • Пример в mstore.edit.tpl:

      <div class="form-group">
          <label>{MSTOREEDIT_FORM_DELIVERY_TYPE_TITLE}</label>
          {MSTOREEDIT_FORM_DELIVERY_TYPE}
      </div>
                          
  3. Обработка:
    • Импорт данных: Аналогично cot_mstore_import.
    • Обновление: Через cot_mstore_update (предполагается), сохраняет msitem_delivery_type в cot_mstore.
    • Редирект: На страницу товара или редактирования с сообщением об успехе.

5. Использование экстраполя на странице просмотра карточки товара

Страница просмотра (mstore.main.php) отображает товар с экстраполем.

  1. Доступ:
    • URL: mstore?c=[cat]&id=[id] или mstore?c=[cat]&al=[alias].
    • Требуются права чтения (cot_auth('mstore', $item['msitem_cat'], 'R')).
    • Если msitem_state=1 или msitem_state=2, доступ только для админов или владельца.
  2. Отображение:
    • Шаблон: mstore.[cat_code].tpl или mstore.tpl.
    • Теги генерируются через cot_generate_mstoretags:
      • MSTORE_DELIVERY_TYPE: Значение поля, например, «AstroFreight» (cot_build_extrafields_data('mstore', $exfld, $item['msitem_delivery_type'], $item['msitem_parser'])).
      • MSTORE_DELIVERY_TYPE_TITLE: Заголовок («Тип доставки»).
      • MSTORE_DELIVERY_TYPE_VALUE: Сырое значение (astro, quantum, gala).
    • Пример в mstore.tpl:

      <div>
          <strong>{MSTORE_DELIVERY_TYPE_TITLE}:</strong> {MSTORE_DELIVERY_TYPE}
      </div>
                          

Визуализация процесса работы с экстраполем

Схема создания и использования экстраполя:

    ____________________________
    | 1. Создание в админке    |
    |   (extrafields, select)  |
    |__________________________|
               |
               |
               V
    ____________________________
    | 2. Регистрация тегов     |
    |   (mstore.extrafields)   |
    |__________________________|
               |
               |
               V
    ____________________________
    | 3. Форма создания/редакт.|
    |   (mstore.add/edit.tpl)  |
    |__________________________|
               |
               |
               V
    ____________________________
    | 4. Импорт и сохранение   |
    |   (cot_mstore_import)    |
    |__________________________|
               |
               |
               V
    ____________________________
    | 5. Отображение в карточке|
    |   (cot_generate_mstoretags)|
    |__________________________|
    
Отредактировано: webitproff (19.08.2025 03:58, 9 месяцев назад)
Аккаунт