Magento - 在admin中显示每个设计的产品和类别正文页面

Raz*_*hyn 15 php magento

我需要确定添加到购物车按钮并根据产品ID禁用它(js和php)(这不是问题的真正目的,大胆是真实的)
因为我没有找到任何我认为的解决方案让管理员按下管理部分专用的tomy扩展按钮,用js捕获按钮信息,然后保存.
为此,我想显示产品页面的主体和设计部分中每个主题的类别.
这是我检索主题和包的方式:

//Main package/theme
Mage::getStoreConfig('design/package/name')
//Reegex theme
$ob=unserialize(Mage::getStoreConfig('design/package/ua_regexp'));
foreach($ob as $key)
    echo $key['value'];
Run Code Online (Sandbox Code Playgroud)


我主要担心的是大胆的部分,如果有可能的话?我该怎么做?
需要明确的是:我只需要红色矩形: 在此输入图像描述
在它上方有面包屑,右侧是侧边栏



更多详细信息
当管理员创建/编辑产品时,它可以选择是否可以选择项目的国家/地区.
会发生什么:当页面加载系统时检查该项目是否可以在客户所在国家/地区销售,否则它会删除该按钮.
现在这带来了一些问题:

  • 广泛的主题支持:我不确定按钮html是否与默认按钮相同
  • 在同一页面中可以存在适销和不适销产品:识别分类页面,其中有多个他们的正确的项目的按钮,这样做,我检查一下按键的行为:它通常包含:/checkout/cart/product idonlick属性或按钮提交一个表单,我认为如果管理员"显示"我发生了什么,经过分析,我将能够识别按钮并使用id(安全)或class(不太确定)替换它,因为不是全部商店使用默认btn-cart

  • 获取页面的缓存/ FPC系统:我不知道他们是否会捕获禁用该按钮的js,或者客户是否已经废弃了任何脚本(可能它甚至无法使用该网站),但是通常情况下添加到购物车这些程序不会缓存块(有时如果项目不可用,则隐藏按钮)

  • 搜索引擎优化问题:访客不是被迫选择一个国家,但我尝试用一​​些外部服务使用ip来识别它,所以可能它也会检测机器人作为用户,我不知道这是不是一个问题(我不这么认为),否则我必须使用JS来进行AJAX调用,然后隐藏按钮

我想避免对任何模板文件进行任何编辑,并为用户创建一个非常简单的方法来设置模块(单击一个按钮比创建属性的整个过程简单,亲戚选项并将其关联到集合)

基本上:如何在后端显示产品和类别页面?

Tox*_*Bes 2

使用下一个逻辑从产品页面删除按钮怎么样:

  1. 在目录 > 属性 > 管理属性中向产品添加新属性(例如:hide_button,键入是/否)。默认情况下为“否”,因此所有产品都有该按钮。管理员可以将所需产品的属性设置为“是”。

  2. 创建将捕获catalog_product_load_after事件的观察者:

    public function checkProduct(Varien_Event_Observer $observer){
        Mage::register('hide_button', $observer->getEvent()->getProduct()->getData('hide_button'));
    
        return $this;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 创建观察者,它将捕获controller_action_layout_generate_blocks_after事件并将 js 代码注入到所有主题中:

    public function injectScript(Varien_Event_Observer $observer){
        if (Mage::registry('hide_button' == 1) {
            $head = $observer->getEvent()->getLayout()->getBlock('head');
            $head->addItem('js', 'hide-button.js');
        }
    
        return $this;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 创建文件 js/hide-button.js 将从页面中删除类为“btn-cart”的按钮:

    Event.observe(window, 'load', function() {
        $$("button.btn-cart").remove();
    });
    
    Run Code Online (Sandbox Code Playgroud)

我没有测试代码,这只是一个想法。