Joomla 3以编程方式为组件设置默认模板

Posted

技术标签:

【中文标题】Joomla 3以编程方式为组件设置默认模板【英文标题】:Joomla 3 set default template programmatically for component 【发布时间】:2014-09-22 11:53:03 【问题描述】:

是否可以通过编程方式为组件设置模板?

【问题讨论】:

regularlabs.com/extensions/advancedtemplatemanager 这个扩展完全免费 【参考方案1】:

除非您有一些真正正当的理由需要以编程方式完成,否则您可以通过 Joomla 模板管理器简单地完成:

Joomla 后端 >> 扩展 >> 模板管理器

如果您打开所需的模板,您可以将每个模板分配给不同的菜单项,当然每个菜单项都会分配一个组件。

这是最简单的方法。

【讨论】:

谢谢,但是浏览量很多,而且菜单项比较少,所以这种方式比较适合普通网站。【参考方案2】:

如果您想在整个站点范围内或特定模板布局覆盖,则不是 100%。我假设我第一次尝试这个答案时,我会假设您希望在整个站点范围内完成此操作。

用代码来完成。首先,注册所需的类:

    JLoader::register('TemplatesTableStyle', JPATH_ROOT . '/administrator/components/com_templates/tables/style.php');
    JLoader::register('TemplatesModelStyle', JPATH_ROOT . '/administrator/components/com_templates/models/style.php');

其次,获取模型对象并使用Joomla的核心设置一个新的默认模板:

    $model = JModel::getInstance('style', 'TemplatesModel');
    $model->setHome($template_id);

祝你好运!

【讨论】:

你为什么建议使用 Joomla 模型?没有直接的方法吗? 简短的回答是因为当您通过后端 GUI 更改模板时,Joomla 就是这样做的。使用像 Joomla 这样的框架的主要好处之一是利用核心中已经实现的大量功能。您可以手动滚动一种方法来手动更改当前和未来默认表的数据库表,但是为什么当代码已经存在时!而且我保证执行这些自定义数据库编辑所需的行将远远大于 4 以利用核心类。 :) 听起来像是一种方法,可以带来成功。您在哪里实现类注册和模型对象,以供站点范围使用?

以上是关于Joomla 3以编程方式为组件设置默认模板的主要内容,如果未能解决你的问题,请参考以下文章

在 Joomla 中以编程方式创建菜单层次结构

有没有办法从我的 Joomla 组件中以编程方式添加菜单项?

使用 PHP 以编程方式将 CSS 注入 Joomla 内容编辑器 (JCE)?

创建一个Joomla!文章以编程方式

如何通过joomla中的组件更改模板位置的内容

使用 joomla 以编程方式注销