0

我使用的是 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}

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

4

1 回答 1

0

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

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

  2. 插入:

<?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

于 2021-07-08T20:29:44.563 回答