Иногда требуется переименовать товар из списка товаров не заходя внутрь формы редактирования, но такой вариант не предусмотрен движком.
Для реализации такой хотелки нужно воспользоваться хуками системы.
<?phpclass Shop_Item_Name_Observer { static public function onBeforeExecute (Admin_Form_Controller $oController, $args = []) { $oAdminForm = $oController->getAdminForm(); if ($oAdminForm->id == 65) { $oDataSet = $oController->getDataset(1); $oDataSet->changeField('name', 'type', '1'); $oDataSet->changeField('name', 'editable', '1'); $oDataSet->changeField('name', 'name', 'namesBackend'); } } static public function onCallnamesBackend ($object, $args) { return $object->name; } static public function onBeforeShowField (Admin_Form_Controller $oController, $args) { $oAdminForm = $oController->getAdminForm(); if ($oAdminForm->id == 65) { if ($args[0] instanceof Shop_Item_Model && $args[1]->name == 'name') { $object = $args[0]->shortcut_id ? $args[0]->Shop_Item : $args[0]; if (!$object->active || !$args[0]->active) { ?> <div class="d-flex align-items-center line-through inactive"> <?php } } } } static public function onAfterShowField (Admin_Form_Controller $oController, $args) { $oAdminForm = $oController->getAdminForm(); if ($oAdminForm->id == 65) { if ($args[0] instanceof Shop_Item_Model && $args[1]->name == 'name') { $object = $args[0]->shortcut_id ? $args[0]->Shop_Item : $args[0]; $oCore_Html_Entity_Div = Core_Html_Entity::factory('Div') ->class('d-flex align-items-center'); if ($args[0]->closed) { $oCore_Html_Entity_Div ->add( Core_Html_Entity::factory('I') ->class('fa fa-lock darkorange locked-item order-first') ->title(Core::_('Shop_Item.closed')) ); } if (is_null(Core_Array::getGet('shop_item_id')) && $object->modification_id) { $oCore_Html_Entity_Div ->add( Core_Html_Entity::factory('I')->class('fa fa-code-fork margin-right-5 order-first') ); } if ($object->modification_id) { $oCore_Html_Entity_Div->value .= '<span class="small darkgray margin-left-5"> → ' . htmlspecialchars($object->Modification->name) . '</span>'; } elseif ($object->shortcut_id) { $oCore_Html_Entity_Div->value .= '<span class="small darkgray margin-left-5"> → ' . htmlspecialchars($object->Shop_Item->name) . '</span>'; } // Barcodes $aShop_Item_Barcodes = $args[0]->Shop_Item_Barcodes->findAll(FALSE); foreach ($aShop_Item_Barcodes as $oShop_Item_Barcode) { $oCore_Html_Entity_Div->add( Core_Html_Entity::factory('Span') // ->class('label label-sm darkgray bordered-1 bordered-gray margin-left-5') ->class('badge badge-gray inverted margin-left-5') ->value($oShop_Item_Barcode->value) ); } $bRightTime = ($args[0]->start_datetime == '0000-00-00 00:00:00' || time() > Core_Date::sql2timestamp($args[0]->start_datetime)) && ($args[0]->end_datetime == '0000-00-00 00:00:00' || time() < Core_Date::sql2timestamp($args[0]->end_datetime)); !$bRightTime && $oCore_Html_Entity_Div->class('wrongTime'); // Зачеркнут в зависимости от статуса родительского товара или своего статуса if (!$object->active || !$args[0]->active) { echo '</div>'; $oCore_Html_Entity_Div->class('inactive'); } elseif ($bRightTime) { $oCurrentAlias = $object->Shop->Site->getCurrentAlias(); if ($oCurrentAlias) { $href = ($object->Shop->Structure->https ? 'https://' : 'http://') . $oCurrentAlias->name . $object->Shop->Structure->getPath() . $object->getPath(); $oCore_Html_Entity_Div->add( Core_Html_Entity::factory('A') ->href($href) ->target('_blank') ->add( Core_Html_Entity::factory('I')->class('fa fa-external-link margin-left-5') ) ); } } elseif (!$bRightTime) { $oCore_Html_Entity_Div ->add( Core_Html_Entity::factory('I')->class('fa fa-clock-o black margin-left-5') ); } $oCore_Html_Entity_Div->execute(); $args[0]->showSetBadges(); } } }}Core_Event::attach('Admin_Form_Controller.onBeforeExecute', 'Shop_Item_Name_Observer::onBeforeExecute');Core_Event::attach('shop_item.onCallnamesBackend', 'Shop_Item_Name_Observer::onCallnamesBackend');Core_Event::attach('Admin_Form_Controller.onBeforeShowField', 'Shop_Item_Name_Observer::onBeforeShowField');Core_Event::attach('Admin_Form_Controller.onAfterShowField', 'Shop_Item_Name_Observer::onAfterShowField');