Как добавить атрибуты администратора в Magento

Я хотел бы добавить некоторые новые атрибуты для пользователей-администраторов в Magento. Эти пользователи отличаются от клиентов (просто чтобы прояснить это), и можно только установить их user/name/lastname/mail/pass, но я бы хотел добавить несколько новых атрибутов.

Я думаю, что для этого я могу использовать функцию addattribute, но мне нужно выяснить, какой идентификатор у этих пользователей-администраторов. Например, если я хочу добавить новый атрибут для клиента, я могу использовать такую ​​функцию:

$setup->addAttribute('customer','attribute_id', $attr );

Таким образом, в данном случае "покупатель" - это идентификатор покупателя. Как я могу узнать, какой идентификатор используется для пользователей с правами администратора? (этот вопрос можно расширить на "Как я могу найти разные идентификаторы для разных типов атрибутов в Magento?").

== Есть вероятность, что изменить это невозможно. Я посмотрел на таблицу admin_user, и это довольно просто, все поля есть. Так что, возможно, в этом случае нет никаких атрибутов.==

Спасибо

3 ответа

Вы можете найти все такие идентификаторы (идентификаторы объектов) в eav_entity_type Таблица. И да, для администратора нет записи. Потому что все данные о пользователях администратора хранятся в плоских таблицах, а не в eav. Таким образом, чтобы добавить новый атрибут для пользователя-администратора, вам нужно добавить новый столбец в admin_user Таблица

Вам нужно будет добавить столбец в admin_user Таблица.

$installer->getConnection()->addColumn($installer->getTable('admin/user'), 'location', array(
    'type' => Varien_Db_Ddl_Table::TYPE_TEXT,
    'length' => 256,
    'nullable' => true,
    'default' => null
)); 

Затем, если вы хотите добавить / отредактировать это поле из бэкэнда, вам нужно переписать метод Mage_Adminhtml_Block_Permissions_User_Edit_Tab_Main::_prepareForm и добавьте туда новый элемент:

        $fieldset->addField('location', 'select', array(
            'name'      => 'is_active',
            'label'     => Mage::helper('adminhtml')->__('location'),
            'id'        => 'is_active',
            'title'     => Mage::helper('adminhtml')->__('location'),
            'class'     => 'input-select',
            'style'     => 'width: 80px',
            'options'   => array('1' => Mage::helper('adminhtml')->__('Yes'), '0' => Mage::helper('adminhtml')->__('No')),
        )); 

Очистите кеш и все должно работать.

Нет варианта до 1,7

это то, что я использую в шаблоне, чтобы показать sku для конкретного пользователя немного грязно, но работает нормально:

<?php
  //EGS SKU added for Power User
  $_powerUser = 777;
  if (Mage::getSingleton('customer/session')->getCustomer()->getId() == $_powerUser) 
  {
   echo '<div class="price-from">' . $_product->getSku() . '</div>';
  }
?>
Другие вопросы по тегам