我正在尝试在自定义Joomla 2.5组件的视图/布局中显示XML提要,但XML在网站的HTML模板中呈现为常规布局。如何在没有任何模板HTML代码的情况下显示XML?
(在this related question的网址中包含tmpl=component
的技巧没有帮助,模板中仍有一些HTML输出会破坏XML。)
我更喜欢只在我的自定义组件中更改代码的解决方案,例如在调用方法setLayout(false)
时在Symfony中。
答案 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您可以通过以下方式为现有视图创建备用输出格式:
&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
添加到网址参数中,因此在您的情况下&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人员中有详细记录,请发帖!