-1
    {php}
    $ssa = array(3,4,5,6,7,8);
    $sl = array();

    $this->assign('shoe_sizes', $ssa);
    $this->assign('sl', $sl);

    {/php}

我在 smarty 模板中有这个 php 代码,但 smarty 不允许/推荐在 smarty3 升级的模板中使用 {php} 标记。该脚本在 index.tpl.html 中,这是我在 index.tpl.html 中使用它的地方:

{foreach from = $shoe_sizes item=shoe}

我想将 php 代码与 tpl 文件分开。我的测试环境中没有任何插件文件夹或路径。我在谷歌上搜索过但感到困惑。

我应该创建一个名为插件的新文件夹并在那里编写我的脚本吗?

这是我最近尝试过的: 在 web-site/products/index.tpl.html 文件中;

{include file="plugins/function.shoe-size.php"}
  {foreach from = $shoe_sizes item=shoe}
    {if $info.return eq $shoe and $info.return|substr:0:1 != "0"}
      <p style="font-weight:bold;display:inline;border-bottom:solid 1px black;">SHOE: </p>
    {/if}
   {/foreach}

在网站/插件/function.shoe-size.php

<?php

/**
 * Smarty plugin
 */

/**
 * Smarty {url} function plugin
 *
 * Type:     function
 * Name:     Shoe Size filter 
 */

function smarty_function_shoeSizes() {
    $shoe_sizes = array(3,4,5,6,7,8);
    return $shoe_sizes;
}

?>

这是错误:

无法在“products/index.tpl.html”中加载模板“file:plugins/function.shoe-size.php”

谢谢

4

1 回答 1

0

您不能在模板中包含 php 文件。将 smarty 插件移动到插件目录(默认为 smarty/smarty/libs/plugins/)或创建和设置自定义插件目录(https://www.smarty.net/docs/en/api.set.plugins.dir.tpl)然后,您不必每次都在模板中包含插件 - 只需使用它(https://www.smarty.net/docs/en/language.function.function.tpl

于 2020-09-09T21:05:50.737 回答