2

如果标题还没有吓到你,请继续阅读。我在 ExpressionEngine 网站上工作,并且正在编辑成员模板文件。与成员交互相关的所有模板都作为函数存储在一个文件中的类中。

这些函数中的每一个都是一个简单的 here 文档,但其中许多打印的代码带有我不想使用的路径和术语。例如,本网站将登录用户称为“客户”而不是“会员”。

无论如何,我正在寻找一种方法来抽象这些值,以便我可以轻松地为这个和未来的项目更改它们。现在,我可以通过每个函数中定义变量来打印文档中的变量。在定义类之前,我更愿意在文件顶部定义这些值,但我无法获取此处的文档来识别这些值。

这是一个删节的示例文件:

<?php
/* I wish to define variables once in this area */
$globaluserterm = "client";

class profile_theme {

//----------------------------------------
//  Member Page Outer
//----------------------------------------
function member_page()
{
$userterm = "client";
return <<<EOF
<div id="{$userterm}-content">
    <h1>{$userterm} Account</h1> (Note: This DOES work)
    <h1>{$globaluserterm} Account</h1> (Note: This doesn't work)
    {include:member_manager}
</div>
EOF;
}
/* END */

//-------------------------------------
//  Full Proile with menu
//-------------------------------------
function full_profile()
{
$userterm = "client";
return <<< EOF
<div id="{$userterm}-full-profile">
    {include:content}
</div>
EOF;
}
/* END */


}
// END CLASS
?>
4

2 回答 2

3

如果每个文件只有一个类,那么在类级别定义值可能已经足够了?例如

class profile_theme {
    private $globaluserterm = "client";
    //....
}

并在函数中:

return <<<EOF
<div id="{$userterm}-content">
    <h1>{$userterm} Account</h1> (Note: This DOES work)
    <h1>{$this->globaluserterm} Account</h1> (Note: This doesn't work)
    {include:member_manager}
</div>
EOF;
于 2010-06-18T16:04:04.097 回答
1

我不完全了解您在做什么,但我认为您正在寻找的是像Smarty这样的模板引擎。(有关更精简的替代方案,请参阅此问题。)

在 Smarty 中,您将准备一个模板文件:

<div id="{$userterm}-content">
    <h1>{$userterm} Account</h1> (Note: This DOES work)
    <h1>{$globaluserterm} Account</h1> (Note: This doesn't work)
    {include:member_manager} /* Don't know how to do this in smarty */
</div>

并预填充变量值:

$Smarty = new Smarty();
// ... set up caching etc. if needed  ...

$Smarty->assign("userterm", $value1);
$Smarty->assign("globaluserterm", $value2);
..... 

如果这不是您想要的,您能否更详细地解释您想要做什么?

于 2010-06-18T15:58:06.647 回答