如何在前端获取Joomla 2.5和3.x默认/分配的模板ID?

时间:2013-07-05 16:03:20

标签: joomla joomla2.5

从前端拉取模板参数的方法很少,但没有一种方法包含实际的模板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等。

感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:6)

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

您拥有的代码:

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

- 实际上是为您提供模板样式 id。 (是的,这是获得这个的最快捷方式。

正如Riccardo所指出的,模板ID实际上只在扩展管理器表(#__extensions)中。

考虑到你的应用程序(即使用它来创建一个独特的Javascript cookie),模板样式id可能就是你想要的,因为它更具体的是你需要访问数据库来检索的模板ID。

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

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

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

答案 1 :(得分: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。