Magento - 在admin

时间:2015-04-26 08:42:52

标签: php magento

我需要识别添加到购物车按钮并根据产品ID禁用它(js和php)(这不是问题的真正目的,粗体是真实的) 由于我没有找到任何解决方案,我想让管理员按下admin部分专用的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'];


我主要关注的是大胆的部分,如果有可能的话?我该怎么做?
需要明确的是:我只需要红色矩形: enter image description here
在它上面有面包屑,右边是侧边栏



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

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

如何使用下一个逻辑从产品页面中删除按钮:

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

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

    public function checkProduct(Varien_Event_Observer $observer){
        Mage::register('hide_button', $observer->getEvent()->getProduct()->getData('hide_button'));
    
        return $this;
    }
    
  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;
    }
    
  4. 创建文件js / hide-button.js,它将从页面中删除类“btn-cart”的按钮:

    Event.observe(window, 'load', function() {
        $$("button.btn-cart").remove();
    });
    
  5. 我没有测试代码,这只是一个想法。