在多个模块中覆盖相同的后台视图

时间:2020-01-10 10:31:24

标签: php symfony prestashop-1.7

我的功能与 Overriding Back office views

的概念有关

就像文档中所说的那样,要覆盖模块中的管理模板,我们需要:

  • 找到了正确的模板(使用调试工具栏)
  • 创建相同的路径(模块/ mod_name / view / PrestaShop / ... / ...)并添加视图
  • 使用扩展注释引用原始模板。
  • 使用 block 注释引用现有的块。

基本的Hello World示例:

// Refer to the original template this the extends annotation.
{% extends 'PrestaShopBundle:Admin/Product/CatalogPage:catalog.html.twig' %}

//Refer to an existing block using block annotation.
{% block product_catalog_filters %}
  Hello world!
{% endblock %}

好吧,覆盖后台视图的工作就像一种魅力。

但是让我们想象一下这个用例:

  • 我们有一个模块A ,该模块会覆盖后台视图并使用 阻止(例如:阻止product_catalog_filters )。
  • 我们要安装一个新的模块B ,该模块将覆盖相同的 后台视图和同一图块(例如:图块 product_catalog_filters )。

这是一个问题,最后安装的模块(模块B )将覆盖后台视图。但是所有来自 Module A 的替代都将丢失。

我找到了解决方案。但是对我来说,这不是一个好习惯。

我们可以在所需的Prestashop后台视图中添加自定义块。 (所以我们需要在Prestashop核心文件中编写代码。)

如果这样做,我们的模块可以覆盖后台视图并调用自定义块。

使用此自定义块,我们可以确保仅我们的模块将覆盖视图,并避免与潜在的其他模块发生覆盖冲突

您是否知道有其他方法可以执行重写而不必在Prestashop核心文件中编写代码?

0 个答案:

没有答案
相关问题