Как я могу отобразить канал XML без какого-либо кода шаблона в Joomla? - PullRequest
1 голос
/ 02 апреля 2012

Я пытаюсь отобразить канал XML в представлении / макете пользовательского компонента Joomla 2.5, но XML отображается как обычный макет внутри шаблона HTML сайта. Как я могу отобразить XML без какого-либо шаблона HTML-кода?

(хитрость для включения tmpl=component в URL от этот связанный вопрос не помогает, все еще есть некоторый вывод HTML из шаблона, который разрушает XML.)

Я бы предпочел решение, которое включает изменения кода только в моем пользовательском компоненте, как в Symfony, когда вы вызываете метод setLayout(false).

Ответы [ 3 ]

2 голосов
/ 02 апреля 2012

[править] Боже мой, я сделал предположение, и ты знаешь, что это тебя заводит.

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.

2 голосов
/ 02 апреля 2012

Единственное решение, которое я нашел, - это создать файл в текущей папке шаблона, например, "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.

0 голосов
/ 17 июля 2013

Эта проблема сводила меня с ума пару раз.

После большого разочарования самое простое решение - это предложенное cppl. В вашем запросе В строку помещаются следующие переменные:

format=yourcustomformat
view=viewname

Допустим, вы хотите вывод json из представления с именем json.

Создайте папку с именем вашего представления

json

И файл внутри этой папки называется

view.json.php

Затем в строку URL-адреса включаются следующие параметры URL-адреса, разделенные символом &:

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, пожалуйста, напишите!

...