1

从前端提取模板参数的方法很少,但它们都不包含实际的模板 ID,

我打印了 JFactory 模板对象 http://prntscr.com/1dpewc

print_r($app->getTemplate('template'));

并且只想确保这是在模板 index.php 文件中获取模板 ID 的正确且唯一的方法。

$app            = JFactory::getApplication();
$getTemplateId  = $app->getTemplate('template')->id;

其他一切都失败了, $this->id , $app->getTemplate()->id 等。

任何帮助表示赞赏。谢谢你。

4

2 回答 2

7

我认为,这里有一个命名问题。

您拥有的代码:

$app            = JFactory::getApplication();
$getTemplateId  = $app->getTemplate('template')->id;

——实际上是给你模板样式 id。(是的,这是获得这个的最快方法。

正如 Riccardo 指出的那样,模板 ID 实际上只在 Extensions Managers 表 ( #__extensions) 中。

虽然给定您的应用程序(即使用它来创建唯一的 Javascript cookie),但模板样式 ID 可能是您想要的,因为它比您需要访问数据库以检索的模板 ID 更具体。

或者,如果您只想要模板的标识符,您可以使用:

$getTemplateName  = $app->getTemplate('template')->template;

这将为您提供模板基本名称(例如beez_20),该名称是唯一的,因为它也是存储模板的目录名称。

于 2013-07-07T23:53:42.577 回答
1

这将选择模板样式 ID:

$db->setQuery( 'SELECT id,template FROM #__template_styles WHERE client_id=0 AND home=1');

其中 template 将是模板的唯一名称,假设您将 $tname 分配给它:

现在有了这个,您将选择实际的模板来获取它的 id:

SELECT id FROM #__extensions where `type`='template' and `element`= '$tname'

请消除我们的好奇心并告诉我们您为什么需要模板 ID。

于 2013-07-06T07:44:30.040 回答