Skip to content

Latest commit

 

History

History
77 lines (51 loc) · 2.71 KB

MoveFields.md

File metadata and controls

77 lines (51 loc) · 2.71 KB

Перемещаем TV и родные поля miniShop2

Задача 1:

Переместить поле Цена в первую вкладку ресурса и скрыть вкладку Свойства товара (так как все поля кроме цены были выключены)

Результат

Создать плагин

<?php
$eventName = $modx->event->name;

switch($eventName) { 
    case 'OnDocFormPrerender':
        
        $modx->regClientStartupHTMLBlock("<script>
        
        Ext.onReady(function () {

        	// что перемещаем
            var price = Ext.getCmp('modx-resource-price');
			
			// куда перемещаем
            var panel = Ext.getCmp('modx-resource-main-left');
            
            panel.insert(1,price);
            panel.doLayout();
            
            // что скрываем
            var tab = Ext.select('#minishop2-product-tabs .x-tab-strip li').item(2);
            tab.hide(); 
        });
        </script>");
        
        
        break;
        
}

Для версии miniShop 2.5.0. еще не было уникального id для каждой вкладки, поэтому приходится перебором получать нужный нам таб, за это отвечает вот этот кусок кода. Для версии 2.5.1 этот код можно будет переписать.

Ext.select('#minishop2-product-tabs .x-tab-strip li').item(2);

Задача 2:

Переместить TV поле в вкладку Свойства товара (вкладка товара).

Для версии 2.5.1 можно для этого воспользоваться настройкой форм (встроенный функционал). Для более ранних версий, в которых у вкладок и областей нет уникального постоянного ID, можно воспользоваться следующим кодом.

Плагин:

<?php
$eventName = $modx->event->name;

switch($eventName) { 
    case 'OnDocFormPrerender':
        
        $modx->regClientStartupHTMLBlock("<script>
        
        Ext.onReady(function () {
            // получаем панель из вкладки в которой находится поле цена
            var panelMinishop = Ext.getCmp('modx-resource-price');
            var parent = panelMinishop.findParentByType('panel');
            
            // 8 - указать id нужного TV поля
            MODx.moveTV(['tv8'], parent.id);
        });
        </script>");
         
        break;
}