PrestaShop中哪里可以注册全局smarty修饰符?

2024-03-31

我正在创建一个基于 PrestaShop(v 1.6)的商店,并且我想注册我的自定义修改器插件,以便可以从任何模板(包括前台和后台模板)访问。

问题是where放置注册码?

现在我用一个Tools class override添加函数来处理修饰符(据我所知,在商店特定功能的情况下这是可接受的做法),以及smarty.config.inc.php注册插件(因为所有PrestaShop插件都在这里注册),但是这个文件包含一个关于“不要直接修改文件”的警告,据我了解,当我升级PrestaShop时,它将被覆盖。

那么,问题是在哪里注册我的插件以确保我的代码不会被覆盖?

提前致谢。


您可以使用模块来完成此操作。

1. 创建模块

在modules文件夹内创建一个文件夹testmodule并在里面创建一个php文件testmodule.php.

我们将使用一个钩子actionDispatcher它在每个页面控制器实例化之后执行,以将修改器插件注册到 smarty 中。

require_once _PS_MODULE_DIR_ . 'testmodule' . DIRECTORY_SEPARATOR . 'TestClass.php';

class TestModule extends Module {
    public function __construct()
    {
        $this->name = 'testmodule';
        $this->tab = 'front_office_features';
        $this->version = '1.0';

        parent::__construct();

        $this->displayName = $this->l('Test Module');
        $this->description = $this->l('Testing smarty plugins.');
    }

    public function install()
    {
        return parent::install() && $this->registerHook('actionDispatcher');
    }

    public function hookActionDispatcher()
    {
        /* 
           We register the plugin everytime a controller is instantiated

           'modifier'                          - modifier type of plugin
           'testToUpper'                       - plugin tag name to be used in templates,
           array('TestClass', 'toUpperMethod') - execute toUpperMethod() from class TestClass when using modifier tag name
        */
        $this->context->smarty->registerPlugin('modifier', 'testToUpper', array('TestClass', 'toUpperMethod'));
    }
}

2. 创建一个包含修饰符方法的类

在同一模块文件夹中创建一个文件TestClass.php。 在其中我们将编写一个静态方法,在调用 smarty 插件时执行。对于这个简单的测试,我们将修改任何我们想要大写的字符串。

class TestClass {
    public static function toUpperMethod($param)
    {
        return strtoupper($param);
    }
}

安装模块,您可以在任何模板中使用您的插件,例如在首页

{$page_name|testToUpper} 

将回显页面名称并将其转换为大写。

例如,如果您尝试在数组上使用修饰符,您可以进行修改或保护,但这是注册 smarty 插件的基础知识。

无需覆盖,也无需核心黑客攻击。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PrestaShop中哪里可以注册全局smarty修饰符? 的相关文章

  • prestashop 将图像添加到产品中

    我有一个产品对象 我正在 PHP 脚本中创建它 我需要添加缩略图和大图像 它们位于 zip 文件中 文件名包含产品 ID 在代码中实现此目的的最佳方法是什么 我假设我需要将图像提取到文件系统中的某个位置 但我不知道 prestashop 如
  • 要求在 Prestashop 模块上的一个文件中自动加载的方法?

    我正在尝试将一组库与 Composer 一起用于 Prestashop 模块 我目前的方法是包括vendor autoload php每个文件上的文件 mymodule php controllers front foo php contr
  • addJS 函数对 prestashop 中的管理员不起作用

    我正在尝试使用在 prestashop 管理中添加 javascript 文件backOfficeHeader使用模块挂钩但没有发生任何事情 我的代码如下 public function install if parent install
  • Prestashop - 如何写入日志文件?

    我应该在 Prestashop 模块中使用什么 php 代码来写入日志文件 我用过 Logger addLog something 1 但它不起作用 您还可以使用以下代码将日志存储在文件中 logger new FileLogger 0 0
  • Prestashop 1.6 获取模块类的实例

    我有一个被重写的类OrderConfirmationControllerCore 我有一个带有类的模块Abra 我需要获取一个实例Abra类在OrderConfirmationControllerCore 我的代码是 class Order
  • Prestashop 1.7 客户密码加密?

    我为 Prestashop 1 6 制作了一些基于 php 的第三方系统 它可以直接连接 Prestashop 数据库 我已将 Presta 升级到 1 7 5 1 并且可以正常使用 只是它不再登录客户 因为正如我所看到的 密码加密已更改
  • 从 JavaScript 访问 Prestashop Web 服务

    在 Prestashop 后端 我激活了 Web 服务并创建了一个身份验证密钥 在浏览器中进行测试效果很好 但现在我想在 Cordova 应用程序中通过 JavaScript 访问 Web 服务 我得到的回应是401 Unauthorize
  • 在 PrestaShop 中更新 theme.yml

    所以我试图修改 PrestaShop 主题中 theme yml 的布局 我注释掉以下内容 hooks modules to hook displayFooter ps linklist ps customeraccountlinks ps
  • 如何在 prestashop 程序化产品导入过程中添加图像?

    我找不到有关在产品插入期间添加图像的正确文档 这是我的 xml 产品导入脚本的工作代码 我不知道如何在添加产品时添加产品图像 foreach xml gt Products as product xml if product xml gt
  • Prestashop Web 服务返回 JSON

    经过互联网上的广泛搜索后 我确信 Prestashop 不会以 JSON 格式返回数据 它只以 XML 格式返回 不幸的是 这会导致跨域访问问题 现在 我正在尝试将 XML 由 Prestashop 返回 转换为 JSON 我想编写可以从
  • 在数据库中更改后,Prestashop 重定向到旧域

    我正在尝试创建 prestashop 1 6 电子商店的副本 用于从domain com 到 dev domain com 的开发目的 我遵循的过程是 禁用缓存和编译 将文件从domain com复制到dev domain com 从dom
  • Prestashop 与 Zen-Cart 和 osCommerce 的比较 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Prestashop 在发送消息时上传文件

    我正在尝试在订单详细信息页面添加附加文件的功能 有一个消息发送表单 我正在尝试在其中实现文件上传 我已将其添加到 order detail tpl div class form group div
  • PrestaShop:允许客户上传PDF、AI和EPS文件作为产品定制

    我正在运行 Prestashop 1 6 1 7 并且我有以下 pictureUpload 方法 允许用户上传他们选择的文件 默认情况下 Prestashop 仅允许上传 GIF JPG JPEG 或 PNG 我试图让用户能够上传更多类型
  • Prestashop Web 服务 API 不断要求身份验证

    我遇到这个问题 我从 prestashop 启用了 web 服务 如果我编写 URL 直接从 post 方法传递参数 我可以访问它 mykey 但是 如果我尝试在不传递 ws key 作为参数的情况下进行访问 它会一直要求我进行身份验证 从
  • Prestashop - 付款验证后更改订单状态

    付款验证后 订单状态将变为 付款已验证 法语为 付款接受 我想在付款验证时设置另一个状态 因此历史记录将显示以下内容 Current status My personnal status History My personnal statu
  • 复选框样式并使其选中

    从数据库检索到的复选框太长了 它是向下的 有什么办法使它成为四层 单击 所有字段 复选框时 必须选中所有复选框 这要怎么做呢 我的代码 protected function getConfigForm sql SELECT id order
  • 如何在Prestashop的产品列表中一次显示含税和不含税的产品价格?

    在产品列表中 我需要一次显示含税和不含税的产品价格 我使用的是 Prestashop 1 6 版本 现在产品列表中显示的是含税价格 我也想显示不含税的价格 我怎样才能做到这一点 我已经寻找解决方案 但无法找到适合我的工作解决方案 找到以下块
  • 如何删除 prestashop 1.6.1 上的送货步骤?

    我是新来的预斯塔商店我在删除送货步骤时遇到了很大的麻烦 因为我只销售虚拟产品 我正在使用 prestashop 1 6 1 我知道我必须修改order carrier tpl文件并关注了几篇帖子 但无法正确完成 你们中有人对如何做到这一点有
  • Prestashop 1.6 自定义模块未显示在前端

    我的模块没有显示在前端 我按照这个链接 doc prestashop com display PS15 Creating a PrestaShop module 在 prestashop 1 6 中创建自定义模块 我已经检查了位置 清除并禁

随机推荐