Joomla 3确定模板是否存在

时间:2013-11-25 19:40:59

标签: templates joomla joomla2.5 joomla3.0

我正在为客户组件中的视图编写代码,并且需要根据传递给代码的参数引入子模板。如果参数$ p存在,并且可以找到相应的模板,我需要加载它的代码。否则,它需要加载默认模板。

我可以从技术上实现我尝试使用以下代码,但我不喜欢使用异常处理程序来确定模板文件是否存在的想法。是否有一个joomla方法可以首先检查是否存在与$ p对应的模板?

try {
    echo $this->loadTemplate($p);   
} catch(exception $ex) {
    echo $this->loadTemplate("default");
}

1 个答案:

答案 0 :(得分:0)

当然,$p只是一个定义子模板文件名称的字符串。您可以计算文件$p引用的路径,并检查它是否可用 - 但由于loadTemplate()执行此操作(同时还检查template overrides和{{3},这有点多余) })。

如果您查看loadTemplate()的注释,您会看到它会在出错时抛出异常,因此如果您有回退策略,那么您应该捕获异常并实现它。所以,你的方法似乎是正确的方法。

/**
 * Load a template file -- first look in the templates folder for an override
 *
 * @param   string  $tpl  The name of the template source file; automatically searches the template paths and compiles as needed.
 *
 * @return  string  The output of the the template script.
 *
 * @since   12.2
 * @throws  Exception
 */
public function loadTemplate($tpl = null)
{