Shopware 5 在模板文件中调用自定义函数

Posted

技术标签:

【中文标题】Shopware 5 在模板文件中调用自定义函数【英文标题】:Shopware 5 call custom function in template file 【发布时间】:2021-08-27 18:47:38 【问题描述】:

我使用的是 Shopware 5.6.1 版本。我创建了自定义插件。 我想在模板文件中调用自定义函数,如下所示:-

\Resources\views\frontend\checkout\confirm.tpl

extends file="parent:frontend/checkout/confirm.tpl"
block name='frontend_index_content'
    Here I wanted to add custom function result
    $smarty.block.parent
/block

谁能确认我怎样才能达到同样的效果。

【问题讨论】:

【参考方案1】:

实现这一点的最佳方法是添加 Smarty 插件。 根据你是使用主题还是插件来扩展,有两种方式:

    主题:themes/Frontend/ThemeName/_private/smarty/function.example.php 将 example 替换为您要在模板中调用的实际函数名称。

    插件:

<?php
namespace PluginName\Components\CompilerPass;

use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
/**
 * Class AddTemplatePluginDirCompilerPass
 */
class AddTemplatePluginDirCompilerPass implements CompilerPassInterface

    /**
     * You can modify the container here before it is dumped to PHP code.
     *
     * @param ContainerBuilder $container
     */
    public function process(ContainerBuilder $container)
    
        $template = $container->getDefinition('template');
        $template->addMethodCall('addPluginsDir', ['directory/name']);
    

在插件boostrap类的build方法中注册CompilerPass类:

/**
 * @param ContainerBuilder $container
 */
public function build(ContainerBuilder $container)

    parent::build($container);

    $container->addCompilerPass(new AddTemplatePluginDirCompilerPass());

致谢,另请参阅 shopware 5 开发人员文档 https://developers.shopware.com/designers-guide/smarty/#register-custom-smarty-plugins

【讨论】:

以上是关于Shopware 5 在模板文件中调用自定义函数的主要内容,如果未能解决你的问题,请参考以下文章

Shopware 6:在自己的自定义管理模块中获取 PHP 数据

pytest + yaml 框架 -5.调用内置方法和自定义函数

如何将自定义订单状态添加到 shopware 6

Shopware 6 具有自定义字段类型的产品

如何在 Shopware 6 中为订单添加自定义字段?

shopware 6插件的单元测试未找到自定义服务