2

我想为 Magento 中的管理员用户添加一些新属性。这些用户与客户不同(只是为了清楚起见),只能设置他们的用户/姓名/姓氏/邮件/密码,但我想添加一些新属性。

为此,我想我可以使用 addattribute 函数,但我需要找出这些管理员用户的 id。例如,如果我想为客户添加一个新属性,我可以使用如下函数:

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

因此,在这种情况下,“客户”是客户的 ID。如何找出管理员用户使用的 id?(这个问题可以扩展到“如何在 Magento 中为不同类型的属性找到不同的 id?”)。

==有可能没有办法改变这一点。我查看了 admin_user 表,它非常简单,所有字段都在那里。所以在这种情况下可能没有属性。==

谢谢

4

3 回答 3

7

您可以在表中找到所有此类 ID(实体 ID)eav_entity_type。是的,管理员用户没有记录。因为有关管理员用户的所有数据都存储在平面表中,但不在 eav 中。所以要为管理员用户添加一个新属性,你需要在表中添加一个新admin_user

于 2011-08-11T09:04:47.457 回答
1

您需要在表格中添加一列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')),
        )); 

清除缓存,它应该可以工作。

于 2015-10-13T06:54:18.193 回答
0

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>';
  }
?>
于 2012-07-23T13:06:05.567 回答