追加フィルタリングカラムにadminグリッド
-
22-10-2019 - |
質問
私はコラムを追加しました~ review_detail
表i.e 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
グリッドの管理パネルから出ない人も結構多いですがなフィルターは、デフォルトの値が割り当てらせます。
解決
の価値を列を結合しない自動コレクションに記載のグリッド
の収集に掲げ、グリッドのインスタンスである 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')
),
));
他のヒント
除
致命的なエラー:電話での会員機能getBackend()以外のオブジェクトC:\xampp\htdocs\efk\app\code\core\Mage\Eav\Model\Entity\Abstract.php イ816
追加
'filter_index' => 'rdt.view_type' // (your newly added column)
に addColumn