все просто

07 февраля 2022, 11:54

MasterDen

Это было просто скопированная инструкция по созданию…

Дополнительные поля в miniShop2

Для того что бы добавить еще основных полей в miniShop2 и они не пропадали после обновления, необходимо создать плагин для miniShop2.

1. Необходимо создать папку MyPlagin с расположением - assets/components/minishop2/plugins/MyPlagin/

2. Создать файл msproductdata.js с содержимым

	miniShop2.plugin.pluginname = {
		getFields: function(config) {
			return {
				MYFIELD: {xtype: 'minishop2-combo-autocomplete', description: ' '+_('ms2_product_MYFIELD_help')}
			}
		}
		,getColumns: function() {
			return {
				MYFIELD: {width:50, sortable:false, editor: {xtype:'minishop2-combo-autocomplete', name: 'MYFIELD'}}
			}
		}
	};

 Основные типы полей xtype:

    xtype: 'minishop2-combo-autocomplete' - текстовое с авто завершением. 
    xtype: 'textfield' – тесктовое поле 
    xtype: 'numberfield', decimalPrecision: 2, - числовое поле с плавающей запятой
    xtype: 'xcheckbox', inputValue: 1, - галочка установленная по умолчанию

другие варианты типов полей смотрим assets/components/minishop2/js/mgr/product/product.common.js

3. Создаем папку MyPlagin с расположением - core/components/minishop2/plugins/MyPlagin/

4. Создаем файл msproductdata.map.inc.php с содержимым

	<?php
	return array(
	   'fields' => array(
			'MYFIELD' => NULL
		)             
	   ,'fieldMeta' => array(
			'MYFIELD' => array(
				'dbtype' => 'varchar'
				,'precision' => '50'
				,'phptype' => 'string'
				,'null' => true
				,'default' => NULL
			)
		)
		,'indexes' => array(
			'MYFIELD' => array (
				'alias' => 'MYFIELD'
				,'primary' => false
				,'unique' => false
				,'type' => 'BTREE'
				,'columns' => array (
					'action' => array (
						'length' => ''
						,'collation' => 'A'
					   ,'null' => false
					)
				)
		   )
		)
	);

Варианты типов полей и их описания смотрим core/components/minishop2/model/minishop2/mysql/msproductdata.map.inc.php

5. Создаем поля в таблице ms2_produts через управление базы, например phpMyAdmin

6. Теперь необходимо создать файл index.php с расположением - core/components/minishop2/plugins/MyPlagin/ и содержимым

	<?php /* Index file for miniShop2 plugin */
	return array(
		'xpdo_meta_map' => array(
			'msProductData' => require_once dirname(__FILE__) .'/msproductdata.map.inc.php'
		)
		,'manager' => array(
			'msProductData' => MODX_ASSETS_URL . 'components/minishop2/plugins/MyPlagin/msproductdata.js'
		)
	);

7. Остаеся прописать в словари ms2_product_MYFIELD и ms2_product_MYFIELD_help

8. Не забыть в настройках miniShop2 добавить новое поле MYFIELD для отображения на странице и в таблице Категории. Настройки -> minisop2 -> Товар -> Дополнительные поля товара (ms2_product_extra_fields)

Источник: http://winrecovery.ru/ms2plugin.html

Комментарии ()

  1. Денис 29 декабря 2021, 13:48(Комментарий был изменён) # 0
    В 6 пункте
    'xpdo_meta_map' => array( 'msProductData' => require_once dirname(__FILE__) .'/msproductdata.map.inc.php' ) Не подгружает файл msproductdata.map.inc.php
    Возможно конкретно у меня так, т.к. присутствует модуль msTools, но в итоге решение было через подгрузку данных этого файла через создание плагина и его инициализации по событию «msOnGetProductFields».
    1. MasterDen 07 февраля 2022, 11:54 # 0
      Это было просто скопированная инструкция по созданию доп полей. Сейчас такой файл не нужен, просто создается плагин и в нем все прописывается.