我添加了一列 review_detail 表IE view_type 通过 PhpMyAdmin 并分配了默认值 0 所有评论。

我正在尝试添加同一列 过滤All reviews 可以从中访问的网格 Catalog -> Reviews and Ratings -> Customer Reviews -> All Reviews.

仅出于测试目的,我正在改变 core/Mage 文件中的文件 Mage/Adminhtml/Block/Review/Grid.php --- line ~ 130:

    $this->addColumn('view_type', array(
        'header'        => Mage::helper('review')->__('View type'),
        'align'         => 'left',
        'width'         => '100px',
        'filter_index'  => 'rdt.view_type',
        'index'         => 'view_type',
        'type'          => 'text',
        'truncate'      => 50,
        'escape'        => true,
    ));

通过添加上述代码,我可以在此处看到我新添加的过滤列名称 All reviews 管理面板的网格,但我无法过滤或查看任何评论的默认值。

enter image description here

有帮助吗?

解决方案

列的值不会自动连接到网格中列出的集合。
网格中列出的集合是 Mage_Review_Model_Resource_Review_Product_Collection.
您需要修改方法 _joinFields 在那堂课。 (当然是出于测试目的。当您确定它可以通过重写课程来以适当的洋红色方式工作。)。

默认情况下,字段将以这种方式加入:

$this->getSelect()
        ->join(array('rt' => $reviewTable),
            'rt.entity_pk_value = e.entity_id',
            array('rt.review_id', 'review_created_at'=> 'rt.created_at', 'rt.entity_pk_value', 'rt.status_id'))
        ->join(array('rdt' => $reviewDetailTable),
            'rdt.review_id = rt.review_id',
            array('rdt.title','rdt.nickname', 'rdt.detail', 'rdt.customer_id', 'rdt.store_id'));

如果您在 review_detail 表您需要在第二个 join. 。使上面的代码看起来像这样:

$this->getSelect()
        ->join(array('rt' => $reviewTable),
            'rt.entity_pk_value = e.entity_id',
            array('rt.review_id', 'review_created_at'=> 'rt.created_at', 'rt.entity_pk_value', 'rt.status_id'))
        ->join(array('rdt' => $reviewDetailTable),
            'rdt.review_id = rt.review_id',
            array('rdt.title','rdt.nickname', 'rdt.detail', 'rdt.customer_id', 'rdt.store_id', 'rdt.view_type'));

上面的代码将使您在自定义列中查看值。

为了进行分类,您需要修改该方法 setOrder 在同一个班 Mage_Review_Model_Resource_Review_Product_Collection.

更改此:

        case 'rt.review_id':
        case 'rt.created_at':
        case 'rt.status_id':
        case 'rdt.title':
        case 'rdt.nickname':
        case 'rdt.detail':
            $this->getSelect()->order($attribute . ' ' . $dir);
            break;

为此:

        case 'rt.review_id':
        case 'rt.created_at':
        case 'rt.status_id':
        case 'rdt.title':
        case 'rdt.nickname':
        case 'rdt.detail':
        case 'rdt.view_type': //you need to add this 'case'
            $this->getSelect()->order($attribute . ' ' . $dir);
            break;

用于过滤修改 addAttributeToFilter 在同一个班。更改此

        case 'rt.review_id':
        case 'rt.created_at':
        case 'rt.status_id':
        case 'rdt.title':
        case 'rdt.nickname':
        case 'rdt.detail':
            $conditionSql = $this->_getConditionSql($attribute, $condition);
            $this->getSelect()->where($conditionSql);
            break;

为此:

        case 'rt.review_id':
        case 'rt.created_at':
        case 'rt.status_id':
        case 'rdt.title':
        case 'rdt.nickname':
        case 'rdt.detail':
        case 'rdt.view_type': //you need to add this 'case'
            $conditionSql = $this->_getConditionSql($attribute, $condition);
            $this->getSelect()->where($conditionSql);
            break;

该死的...为简单的专栏做了很多工作。我希望这会在2.0中重新攻击。

编辑

将新列添加为选项列以这样的方式声明:

$this->addColumn('view_type', array(
    'header'        => Mage::helper('review')->__('View type'),
    'align'         => 'left',
    'width'         => '100px',
    'filter_index'  => 'rdt.view_type',
    'index'         => 'view_type',
    'type'      => 'options',
    'options'   => array(
        0 => Mage::helper('review')->__('Show in home page'),
        1 => Mage::helper('review')->__('Show in product details page')
    ),
));

其他提示

去除

致命错误:在C: XAMPP htdocs efk efk app code code mage mage mage eav eav entity entity abst‌ract.php上,在第8166666666年,请致电c: xampp efk efk app code code code code code code code code code code code code code code code code code.php在第816行816

添加

'filter_index'  => 'rdt.view_type'  // (your newly added column)

addColumn

许可以下: CC-BY-SA归因
scroll top