小编B00*_*MER的帖子

定制的客户网格导致MySQL表扫描和文件排序,也称为慢性能

Magento企业.1.10.1.1.客户和地址的数据集是半大的(125k +)CSR通常在此网格上(有时一次有25个并发用户).

以下是在Customer Grid.php Block文件中生成集合的代码片段.没有什么花哨或不寻常的,只是简单地向集合添加属性.

$collection = Mage::getResourceModel('customer/customer_collection')
    ->addNameToSelect()
    ->addAttributeToSelect('email')
    ->addAttributeToSelect('group_id')
    ->addAttributeToSelect('prod_codes')
    ->addAttributeToSelect('last_called_date')
    ->addAttributeToSelect('time_zone')
    ->addAttributeToSelect('salesrep')
    ->addAttributeToSelect('do_not_call')
    ->addAttributeToSelect('club_member')
    ->addAttributeToSelect('call_back_date')
    ->addAttributeToSelect('marketing_code_outcome')
    ->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left')
    ->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left')
    ->joinAttribute('billing_telephone', 'customer_address/telephone', 'default_billing', null, 'left')
    ->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left');

$this->setCollection($collection);
Run Code Online (Sandbox Code Playgroud)

生成此查询,这是行为不当导致客户网格中的加载时间过长:

SELECT 
    e . *,
    _table_prefix.value AS prefix,
    _table_firstname.value AS firstname,
    _table_middlename.value AS middlename,
    _table_lastname.value AS lastname,
    _table_suffix.value AS suffix,
    CONCAT(IF(_table_prefix.value IS NOT NULL AND _table_prefix.value != '',
                CONCAT(TRIM(_table_prefix.value), ' '),
                ''),
            TRIM(_table_firstname.value),
            IF(_table_middlename.value IS NOT NULL AND _table_middlename.value …
Run Code Online (Sandbox Code Playgroud)

mysql indexing grid magento

13
推荐指数
1
解决办法
1292
查看次数

为前端和管理路由器使用相同的Magento路由前端名称

我发现了Magento路由逻辑的一个问题,我想看看是否有人可以证实这一点.

Magento堆栈路由器admin,standard,然后默认并一次处理一个.Magento根据URL获取当前模块名称(请参阅Mage_Core_Controller_Varien_Router_Standard::match()),然后检查模块是否应该由此路由器处理,基于与Magento配置中的frontName的匹配.如果找到匹配,则路由它.如果不匹配,则它继续到下一个路由器.

配置摘录:

    <admin>
        <routers>
            <myroute>
                <use>admin</use>
                <args>
                    <module>MyNamespace_MyModule</module>
                    <frontName>myroute</frontName>
                </args>
            </myroute>
        </routers>
    </admin>
    <frontend>
        <routers>
            <myroute>
                <use>admin</use>
                <args>
                    <module>MyNamespace_MyModule</module>
                    <frontName>myroute</frontName>
                </args>
            </myroute>
        </routers>
    </frontend>
    

这意味着如果您的前端路由器使用与管理路由器相同的名称,则管理路由器将始终首先匹配,即使在前端页面上也是如此.您的前端页面现在将按原样路由,如果是管理员页面,使用管理员base_url,这可能与您的商店的URL不同导致重定向损坏.

请注意,在Magento实例中,此问题不明显,其中管理基本URL与前端基本URL相同.

任何人都可以确认我对路由器逻辑的评估是否正确?

routing magento

6
推荐指数
1
解决办法
6785
查看次数

Magento无法将简单的可配置产品联系起来

我创建了一个可配置产品并转到相关产品选项卡,并使用快速创建产品功能根据我的配置创建一堆产品.但是,这些产品中没有出现在相关产品列表中.

我注意到我创建的属性甚至没有显示在编辑产品页面上,简单或可配置产品上.

我首先为我想要添加的可配置产品创建了3个新属性,我为每个属性设置了选项,并根据默认创建了一个包含我创建的新属性的新属性集.

当我创建新的简单产品或可配置产品时,您无法看到我创建的属性.我已尝试使用常规选项卡中的属性以及自己的选项卡.但是当您尝试编辑产品时,它们永远不可见.

我怀疑我无法关联产品的原因是由于这个奇怪的问题

我正在使用1.4.2 [编辑添加我的工作流程/屏幕抓取]

magento

6
推荐指数
2
解决办法
1万
查看次数

在客户管理管理网格中显示多选项客户属性

好的,使用客户属性我有一个多选项选项,我已添加到管理客户网格.

    $prodCode = Mage::getSingleton('eav/config')->getAttribute('customer','prod_codes');
    $prodCodeOptions = $prodCode->getSource()->getAllOptions(false);
    $prodOptions = array();

    foreach($prodCodeOptions as $k)
        $prodOptions[$k['value']] = $k['label'];

    $this->addColumn('prod_codes', array(
        'header'    =>  Mage::helper('customer')->__('Product Code'),
        'width'     =>  '100',
        'index'     =>  'prod_codes',
        'type'      =>  'options',
        'options'   =>  $prodOptions,
        'filter_condition_callback'
                    => array($this, '_filterProdOptionsCondition'),
    ));
Run Code Online (Sandbox Code Playgroud)

我的属性已添加到Grid.php顶部的集合中:

->addAttributeToSelect('prod_codes')

这是我的_filterProdOptionsCondition方法:

protected function _filterProdOptionsCondition($collection, $column) {
    if(!$value = $column->getFilter()->getValue()) {
        return;
    }
    $this->getCollection()->addFieldToFilter('prod_codes', array('finset' => $value));
    #print($collection->getSelectSql());
}
Run Code Online (Sandbox Code Playgroud)

现在,这项工作很好,很正常,如果我只有的选项中选择,我一次申请多个选项的客户属性,我将获得管理网格内的一个空白的结果,但是它仍然是搜索.

仔细查看未print($collection->getSelectSql());注释我发现在逗号分隔列表中返回属性ID值.

现在问题的背景是,有一种方法或"Magento"方式在管理网格中显示这些多选项,我只是不知道?或者我是否需要简单地将逗号值展开并调用新集合来构建显示值?任何帮助赞赏!

magento

5
推荐指数
1
解决办法
2938
查看次数

标签 统计

magento ×4

grid ×1

indexing ×1

mysql ×1

routing ×1