我正在尝试在自定义 Joomla 2.5 组件的视图/布局中显示 XML 提要,但 XML 在站点的 HTML 模板中呈现为常规布局。如何在没有任何模板 HTML 代码的情况下显示 XML?
(在这个相关问题tmpl=component
的 URL中包含的技巧没有帮助,模板中仍然有一些 HTML 输出会破坏 XML。)
我更喜欢只涉及我的自定义组件中的代码更改的解决方案,例如在 Symfony 中调用 method 时setLayout(false)
。
我找到的唯一解决方案是在当前模板文件夹中创建一个文件,例如“xml.php”,然后仅将其放入文件中:
<?php
$document = JFactory::getDocument();
$document->setMimeEncoding('text/xml');
echo '<?xml version="1.0" encoding="UTF-8" ?>';
?>
<jdoc:include type="component" />
然后我可以附加tmpl=xml
到 URL。
[编辑] 我的错,我做了一个假设,你知道那会得到什么。
Joomla!1.6->2.5 您可以通过以下方式为现有视图创建替代输出格式:
&format=json
view.json.php
可以放在标准view.html.php
文件旁边供您查看。该view.yourformat.php
文件可以以正常方式使用您现有的控制器和模板文件。
不要忘记添加&tmpl=component
或添加&tmpl=raw
到您的查询字符串中,这样模块等也不会加载。
tmpl=raw
不会加载 html 正文包围或模板,只会加载主要组件。
[/编辑]
来自 Joomla!从 1.6 开始(包括 2.5),内置了对控制器格式的支持,即。您为所需的输出格式创建一个控制器。
通常会为每个视图命名一个控制器:
/components/mycomp/controllers/myview.php
控制器的 XML 版本将是名称:
/components/mycomp/controllers/myview.xml.php
JSON 版本将是:
/components/mycomp/controllers/myview.json.php
要调用控制器的特定格式版本,您只需添加&format=theformatyouwant
到 URL 参数,因此在您的情况下&format=xml
这在本文档中从 1.6 天开始讨论- 我将它用作我们的几个具有 JSON 和 ics 要求的组件的基础。
这个问题让我发疯了几次。
经过一番挫折,最简单的解决方案是 cppl 建议的解决方案。在您的查询字符串中放入以下变量:
format=yourcustomformat
view=viewname
假设您希望从名为 json 的视图中输出 json。
使用您的视图名称创建一个 veiw 文件夹
json
该文件夹中的一个文件名为
view.json.php
然后在您的 url 字符串中包含以下由 & 符号分隔的 url 参数:
index.php?option=com_mycomponent&format=json&view=json
cppl 是正确的,这会加载非 html 视图。但是,您不必至少在 2.5 中放入 tmpl 参数。如果视图名称不是view.html.php
,那么 2.5 似乎没有在响应中包含分配的站点模板。我认为因为视图不是veiw.html.php
它假定原始输出并且不包含模板。我使用 ajax 调用和对视图的直接 url 调用对此进行了测试,在这两种情况下,我得到的只是组件输出。是的!
如果有人知道 Joomla 人员在哪里记录了这个问题,请发布!