1

我正在尝试在自定义 Joomla 2.5 组件的视图/布局中显示 XML 提要,但 XML 在站点的 HTML 模板中呈现为常规布局。如何在没有任何模板 HTML 代码的情况下显示 XML?

(在这个相关问题tmpl=component的 URL中包含的技巧没有帮助,模板中仍然有一些 HTML 输出会破坏 XML。)

我更喜欢只涉及我的自定义组件中的代码更改的解决方案,例如在 Symfony 中调用 method 时setLayout(false)

4

3 回答 3

2

我找到的唯一解决方案是在当前模板文件夹中创建一个文件,例如“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。

于 2012-04-02T11:58:10.600 回答
2

[编辑] 我的错,我做了一个假设,你知道那会得到什么。

Joomla!1.6->2.5 您可以通过以下方式为现有视图创建替代输出格式:

  1. 调用带有附加格式参数的视图,例如&format=json
  2. 创建一个匹配的视图类文件,例如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 要求的组件的基础。

于 2012-04-02T13:29:29.823 回答
0

这个问题让我发疯了几次。

经过一番挫折,最简单的解决方案是 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 人员在哪里记录了这个问题,请发布!

于 2013-07-17T15:20:16.900 回答