如何在Joomla中显示没有任何模板代码的XML Feed?

时间:2012-04-02 11:10:55

标签: joomla joomla2.5

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

(在this related question的网址中包含tmpl=component的技巧没有帮助,模板中仍有一些HTML输出会破坏XML。)

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

3 个答案:

答案 0 :(得分: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附加到网址。

答案 1 :(得分:2)

<强> [编辑] 我的坏,我做了一个假设,你知道是什么让你。

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

  1. 使用附加的格式参数调用视图,例如&format=json
  2. 创建匹配的视图类文件,例如view.json.php可以与标准view.html.php文件并排放置,供您查看。
  3. 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添加到网址参数中,因此在您的情况下&format=xml

    这是discussed in this document from 1.6 days - 我使用它作为我们的几个具有JSON和ics要求的组件的基础。

答案 2 :(得分:0)

这个问题让我疯了几次。

经过多次挫折之后,最简单的解决方案是cppl建议的解决方案。在您的查询中 string放入以下变量:

format=yourcustomformat
view=viewname

假设您想从名为json的视图中输出json。

使用视图名称创建一个veiw文件夹

json

该文件夹中的文件名为

view.json.php

然后在您的网址字符串中包含由&amp;分隔的以下网址参数。符号:

index.php?option=com_mycomponent&format=json&view=json

cppl是正确的,这会加载非html视图。但是,您不必将tmpl参数放在至少2.5中。如果视图名称不是view.html.php,那么2.5似乎不包括响应中指定的网站模板。我认为因为视图不是veiw.html.php它假定原始输出而不包括模板。我用ajax调用和对视图的直接url调用测试了这个,在这两种情况下我得到的都是组件输出。呀!

如果有人知道这个问题在Joomla人员中有详细记录,请发帖!