dpwtr666638
2016-11-02 04:34
浏览 127
已采纳

使用Prestashop模块将Javascript代码添加到特定页面

I'm developing a custom Prestashop Module. The requirement is simple: Add a predefined block of javascript code to specific sections of the shopping process. Those are:

  • Home page
  • Product page
  • Product added to cart
  • Purchase completed

The code will be specific to each page.

I already read the basics of module development, but I can't find documentation for this specific functionality.

I already have a working module that is installable and configurable from the back office admin. I'm assuming I need to extend the footer and check the page currently being served, but I have no idea how to do this.

图片转代码服务由CSDN问答提供 功能建议

我正在开发一个自定义的Prestashop模块。 要求很简单:将预定义的javascript代码块添加到购物流程的特定部分。 这些是:

  • 主页
  • 产品页面
  • 产品已添加到购物车 \ n
  • 购买已完成

    代码将特定于每个页面。

    我已经阅读了模块的基础知识 开发,但我找不到这个特定功能的文档。

    我已经有一个可以从后台管理员安装和配置的工作模块。 我假设我需要扩展页脚并检查当前正在提供的页面,但我不知道如何执行此操作。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • duanluan3651 2016-11-02 09:23
    已采纳

    It's more simple than it appears :), you have to check in which page you are, in your hookDisplayHeader method add some if:

    public function hookDisplayHeader($params){
        /* some code */
    
        // check if we are in homepage
        if($this->context->controller->php_self == 'index'){
            $this->context->controller->addJS('path-to-index-js');
        }
    
        // check if we are in product page
        if($this->context->controller->php_self == 'product'){
            $this->context->controller->addJS('path-to-product-js');
        }
    
        // and so on for all other pages
        /* ... */
    
        /* some code */
    }
    
    点赞 打赏 评论
  • duanjian3338 2016-11-02 14:06

    Also there is a global variable in js

    page_name
    
    点赞 打赏 评论
  • doubeng3412 2016-11-02 14:53

    Every page in PrestaShop has a unique value of page_name smarty variable.

    This variable's value can be fetched through the following code in any controller:

    $this->context->smarty->tpl_vars['page_name']->value
    

    You can add a hook (i.e. hookHeader) and then add a condition in that hook for every page where you want to add the script.

    点赞 打赏 评论

相关推荐 更多相似问题