Как добавить атрибуты администратора в 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>';
}
?>