plone.app.theming, включая контент с внешнего сайта
Это кажется возможным, но я что-то упустил. Я использую plone.app.theming (diazo). Я пытаюсь получить страницы с сайта холодного синтеза. Я могу получить первую страницу для загрузки с помощью, но затем на странице есть URL, которые ссылаются на другие страницы данных. URL-адреса имеют следующий формат: "./undergraduates_classes_info.cfm?crse=001A§num=A" (который Plone более чем рад проанализировать) Я пробовал различные варианты этого, и я не могу заставить его работать,
<xsl:param name="ExtUrl" select="'http://exeternalsite'" />
<xsl:template match="a/@href[contains(.,'/undergraduates')]">
<xsl:attribute name="href">
<xsl:value-of select="concat($ExtUrl, .)" />
</xsl:attribute>
</xsl:template>
Мне также нужно передать URL-адрес в команду, чтобы я мог получить фактические данные обратно.
Любая помощь ценится - и, возможно, я неправильно подхожу к этому?
3 ответа
Если я не неправильно понимаю ваш вопрос (всегда возможно), я думаю, что вы неправильно понимаете патхеминг. patheming может включать в себя ресурсы темы (например, шаблоны, изображения) с удаленного сайта, но он не предназначен для прокси в контенте с удаленного сайта и не способен на него.
Очень плохо полагаться на удаленный сервис, прежде чем вы сможете завершить обработку запроса. Представьте, что сайт отключается или работает медленно? Теперь вы ждете, пока он закончится, или время ожидания истекло, прежде чем вы откроете страницу.
Лучшее решение - использовать javascript для извлечения содержимого страницы.
Это может выглядеть примерно так:
$(document).ready(function(){
$('#containerofcontent').load('http://remoteurl #contentselector');
});
Предполагая, что ваш сайт находится в другом домене, вам также необходимо установить некоторые специальные заголовки на удаленном сайте, чтобы браузеры могли разрешить запрос ajax:
Access-Control-Allow-Origin: http://plonesiteurl
Это довольно легко переопределить заголовки на любом веб-сервере.
Вы можете включить контент с внешнего сайта, указав атрибут href, как описано здесь: http://docs.diazo.org/en/latest/advanced.html
Вам нужно будет включить опцию "Читать сеть" в plone.app.theming, чтобы разрешить включение внешних URL-адресов, см. http://pypi.python.org/pypi/plone.app.theming
Как уже отмечали другие, это влияет на производительность, но если вы кэшируете получившиеся страницы, это может быть нормально. Вы можете избежать этих затрат производительности, кэшируя фрагмент и используя параметры метода SSI или ESI, описанные на сайте diazo, но вам нужно будет настроить Nginx для запуска таблицы стилей filter.xsl или диазо-прокси.