首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式设置模板joomla视图

以编程方式设置模板joomla视图
EN

Stack Overflow用户
提问于 2013-01-24 11:45:03
回答 3查看 1.3K关注 0票数 3

有任何方法可以在joomla视图中以编程方式设置模板吗?

我使用MVC架构来开发我的组件。我有两个前端的模板。1登录用户(模板B)其他普通访问者(模板A)。

我遇到的问题是,我有一家书店供登录用户使用。模板是模板B。书店里有搜索图书的功能。搜索和书店从我的组件加载。指定给菜单项并加载模板B的书店,但当我单击“搜索”按钮时,它会带来模板A的结果,这意味着模板从模板B更改为模板A。

我的网站的默认模板是模板B。我通过菜单项分配模板A。

我用的是Joomla 2.5

发生了什么?

EN

回答 3

Stack Overflow用户

发布于 2015-06-10 11:06:53

我也遇到了类似的问题,在这里,我分别为注册用户和客人使用了两个模板。我希望只在特定的模板中加载视图,所以我不得不在视图中以编程方式设置/更改模板,我尝试使用Itemid,但它只是不可靠,最后,经过一些研究,我得到了如下工作。

代码语言:javascript
复制
  $app = JFactory::getApplication();
  $app->setTemplate('Protostar'); //or whatever your template is named.

这样,我可以确定这个视图/布局只加载在一个特定的模板中。我在joomla3.4上成功地使用了它,尽管它可能在您的版本上有效。

票数 2
EN

Stack Overflow用户

发布于 2013-06-07 08:38:16

我认为,这可以通过使用JSite::setTemplate($template,$templateParams)方法来完成,但我不确定这是否能与缓存一起工作,需要进行测试。

票数 1
EN

Stack Overflow用户

发布于 2022-06-02 22:16:25

setTemplate()方法中的Joomla 4存在问题。它是为SiteApplication类实现的( Factory::getApplication()可以访问哪个实例,以便从站点视图进一步设置模板),但它不是针对AdministratorApplication.实现的。因此,很难以编程的方式为管理员的视图设置模板。

经过一些调整之后,我能够在接下来的几行中实现这一点(在HtmlView.php):中使用它)

代码语言:javascript
复制
$app = Factory::getApplication();
$app->set('theme', 'any-theme-name');
$app->set('themeParams', 'any-params-for-theme');

您甚至可以在管理员的模板文件夹中设置站点s (frontend) templates for admin的视图,而无需复制它--只需添加以下内容

代码语言:javascript
复制
$app->set('themes.base', JPATH_SITE . DIRECTORY_SEPARATOR . 'templates');

Joomla‎4.1.4‎中工作得很好。

对于应用程序的站点部分,这个https://stackoverflow.com/a/30754502/3486976方法应该仍然有效,所以在上面的黑客攻击中没有必要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14500601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档