製品編集バックエンドの属性とその他のフィールドを非表示にする


10

ショップオーナーが商品(およびおそらくカテゴリ)を簡単に編集できるようにするために、adminバックエンドの一部のユーザーに対して不要なタブとフィールドを非表示にします。

つまり、一部の属性だけでなく、「顧客レビュー」、「クロスセル」などのタブも非表示にします。

これはどのように行うことができますか?

回答:


10

属性でに設定is_visibleする0と、管理フォーム(製品ページと属性管理ページ)には表示されません。

SQLツールを使用するか、プログラムでセットアップスクリプトを使用して実行できます。

$installer->updateAttribute('catalog_product', $attribute_code, 'is_visible', '0');

空のタブが自動的に消えるかどうか知っていますか?そして、これらの属性を一時的に管理者に表示する方法はありますか?とにかく-これは、モジュールをユーザーごとに表示するための良い出発点になります。
Alex

1
あなたは拡張することができ、これを -と/編集、それをできなかった可能性を判断するために、独自のACLでのプット
Sonassi -ベンLessani

属性だけではなく、他にもたくさんのことがあることに気づきました:-)質問のタイトルを編集して、それをより明確にしました。
Alex

タブが空の場合、タブは消えると思います。それらを表示するには、2つのオブザーバーを追加して、リクエストの前に表示し、後で非表示にしますか?私が現時点で持っている最高のアイデア。そして、2人が並行して店内にいるときは、絶対に失敗しない。代替方法:オブザーバーとコレクションクエリを変更します。しかし、あなたは私が思うにははるかに遠くにいるでしょう...
ファビアン・ブレッシュシュミット2013年

それらは実際には消えません-そして私は属性(クロスセルなど)についてではないタブについて話しています
Alex

8

これは、イベントcore_block_abstract_prepare_layout_before(メソッドremoveAttributes())およびcore_block_abstract_prepare_layout_after(メソッドremoveTabs())を監視することで可能です。

備考:これを各属性/タブのACLエントリを追加するモジュールに入れて、特定のユーザーから非表示にできるようにします。

オブザーバーでは、ブロック内にMage_Adminhtml_Block_Catalog_Product_Edit_Tabsあり、タブまたは属性を削除できることを確認する必要があります。

/**
 * Overwrite the cache field in the product to remove disabled attributes
 *
 * event: core_block_abstract_prepare_layout_before
 *
 * @param Varien_Event_Observer $event
 */
public function removeAttributes(Varien_Event_Observer $event)
{
    $block = $event->getBlock();
    if (!$block instanceof Mage_Adminhtml_Block_Catalog_Product_Edit_Tabs) {
        return;
    }

    $editableAttributes = $block->getProduct()->getTypeInstance()->getEditableAttributes();
    $adminSession = Mage::getSingleton('admin/session');


    // TODO: remove attribute to hide from the $editableAttributes array

   $block->getProduct()->setData('_cache_editable_attributes', $editableAttributes);
}

/**
 * Remove hidden tabs from product edit
 * event: core_block_abstract_prepare_layout_after
 *
 * @param Varien_Event_Observer $event
 */
public function removeTabs(Varien_Event_Observer $event)
{
    $block = $event->getBlock();
    if (!$block instanceof Mage_Adminhtml_Block_Catalog_Product_Edit_Tabs) {
        return;
    }

    // TODO / Example: remove inventory tab
    $block->removeTab('inventory'); 

    // fix tab selection, as we might have removed the active tab
    $tabs = $block->getTabsIds();

    if (count($tabs) == 0) {
        $block->setActiveTab(null);
    } else {
        $block->setActiveTab($tabs[0]);
    }
}

ACLセットアップモジュールを使用してどこかに行ったことはありますか?私が抱えている問題は、何百もの属性セットがあることです。何百もの「グループ」タブもあるので、これはどのように適用されますか。
Anthony Cicchelli 2016年

はい、私たちのプロジェクトで実行されています
Alex

GITはありますか?同じプロジェクトに取り組んでいます。さまざまな戦略を見ているだけです。そうでない場合は、すぐに完了する必要があるので、完了したらお知らせします。
Anthony Cicchelli 2016年

これを可能にする拡張機能を作成しました。また、Aitoc Permission Moduleのすべての機能も使用します。したがって、両方の優れた組み合わせが得られます。
Anthony Cicchelli 16

おもしろい。Aitocは好きではありませんが、モジュールを公開しますか?私たちのものはまだ公開されていません...
アレックス

0

タブを非表示にする比較的簡単な方法は、新しい管理者ユーザーを作成し、ショップオーナーが使用する領域のみにアクセス権を与えることです。あなたや他の開発者に変更を加える能力を残しながら、ショップのオーナーにとって物事をシンプルに保ちます。


もちろん、これは一般的な領域(メニューエントリなど)で機能しますが、製品編集画面の非常に少数のタブでのみ機能します(このようにして、レビューを無効にできます)。単一の属性を無効にすることはできません。
アレックス

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.