我想在common / header twig文件中添加一个变量/显示,可以通过新的扩展名对其进行管理。新的扩展名已创建。 starter_module
我添加了: admin / view / template / extension / module / starter_module.twig
<div class="form-group">
<label class="col-sm-2 control-label" for="input-new">New</label>
<div class="col-sm-10">
<select name="new" id="input-new" class="form-control">
{% if new %}
<option value="1" selected="selected">Enabled</option>
<option value="0">Disabled</option>
{% else %}
<option value="1">Enabled</option>
<option value="0" selected="selected">Disabled</option>
{% endif %}
</select>
</div>
</div>
在admin / controller / extension / module / starter_module.php中
if (isset($this->request->post['new'])) {
$data['new'] = $this->request->post['new'];
} elseif (!empty($module_info)) {
$data['new'] = $module_info['new'];
} else {
$data['new'] = '';
}
在catalog / controller / extension / module / starter_module.php中
$data['new'] = $this->config->get('new');
$data['new'] = (int) $setting['new'];
在目录/视图/主题/默认/模板/common/header.twig中
{% if new %}Enabled {% else %} disabled{% endif %}
但是我总是只禁用结果,缺少什么?无法将变量从扩展名发送到公共标头?
请帮助我,如果您知道问题所在,则无法使用的文件位于https://github.com/bblori/Opencart3
您可以在此处看到我的一个工作变量,该变量已在设置/设置文件中设置并且正在工作。
https://github.com/bblori/Enable-Style-OC3
XML代码
<modification>
<name>Starter Module</name>
<code>starter-module</code>
<version>1.0.0</version>
<author>Author</author>
<link>http://domain/</link>
<file path="catalog/controller/common/header.php">
<operation>
<search><![CDATA[return $this->load->view('common/header', $data);]]></search>
<add position="before"><![CDATA[
$data['config_new'] = $this->config->get('config_new');
]]></add>
</operation>
</file>
非常感谢
答案 0 :(得分:0)
将代码从启动器模块移至header.php
$data['new'] = $this->config->get('new');
$data['new'] = (int) $setting['new'];
答案 1 :(得分:0)
编辑核心文件或使用vqmod
都不可接受。不应修改核心文件,因为以后的更新会使您的修改过时。另一方面,Vqmod为精心设计的系统增加了不必要的复杂性。
自版本3开始,Opencart团队引入了活动。事件是在需要时执行自定义功能的新方法。下次您遇到类似的问题添加事件(手动或在模块安装过程中,如下所示)。
public function install() {
$this->load->model('setting/event');
$this->model_setting_event->addEvent('my_data_manager', 'catalog/view/*/before', 'extension/module/my_data_manager/beforeAll');
}
稍后,在执行周期中,每次呈现common / header时,都会自动调用函数。
class ControllerExtensionModuleMyDataManager extends Controller {
public function beforeAll(&$route, &$data, &$output){
if ($route == 'common/header') {
$data['my_custom_data'] = 'Mickey Mouse is not a bird!';
}
}
}
最后,将{{ my_custom_data }}
添加到template/common/header.twig