2012-06-22 3 views
3

Это кажется возможным, но я чего-то не хватает. Я использую plone.app.theming (diazo). Я пытаюсь вытащить страницы с сайта холодного синтеза. Я могу загрузить первую страницу, но на странице есть URL-адреса, которые ссылаются на большее количество страниц данных. URL-адреса отформатированы следующим образом: «./undergraduates_classes_info.cfm?crse=001A & sectnum = A» (который Plone более чем рад синтаксическому анализу) Я пробовал множество перестановок к этому, и я не могу его получить работать.plone.app.theming включая содержимое с внешнего сайта

<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-адрес команде, чтобы я мог вернуть фактические данные.

Любая помощь ценится - и, возможно, я приближаюсь к этому неправильно?

ответ

0

Если я не понимаю ваш вопрос (всегда возможно), я думаю, что вы недопонимаете p.a.theming. p.a.theming может включать в себя тематические активы (например, шаблоны, изображения) с удаленного сайта, но он не предназначен и не способен проксировать в контент с удаленного сайта.

+0

И это тоже не очень хорошая идея. В зависимости от удаленного запроса, прежде чем вы сможете завершить обработку, ваш собственный запрос - это рецепт катастрофы. – vangheem

+0

Я думаю, что вы, скорее всего, правы, и мне нужно использовать полную версию диазо, а не plone.app.theming. – CMcStone

+0

Да, вы могли бы использовать автономный Diazo для темы вашего холодного слияния и страниц Plone аналогично/идентично (но он все равно выиграл «Позвольте вам буквально вставить содержимое вашей CF-страницы на странице сгенерированной Plone, но с достаточной тематикой, это, вероятно, не нужно). Примите мой ответ, если вы считаете, что он достаточно корректен. ;-) –

2

Это очень плохая идея, чтобы зависеть от удаленного сервиса, прежде чем вы сможете завершить обработку запроса. Представьте, что сайт идет медленно или медленно? Теперь вы ожидаете завершения или завершения таймаута, прежде чем подавать свою страницу.

Лучшим решением является использование javascript для вытягивания содержимого страницы.

Это может выглядеть примерно так:

$(document).ready(function(){ 
    $('#containerofcontent').load('http://remoteurl #contentselector'); 
}); 

Предполагая, что ваш сайт находится на другом домене, вам также потребуется установить некоторые специальные заголовки на удаленном сайте для того, чтобы браузеры, чтобы запрос AJAX :

Access-Control-Allow-Origin: http://plonesiteurl 

Это довольно легко переопределить заголовки с любым веб-сервером.

2

Вы можете включать содержание внешнего сайта, указав HREF атрибута как описано здесь: http://docs.diazo.org/en/latest/advanced.html#including-external-content

Вам необходимо включить опцию «Read сети» в plone.app.theming, чтобы позволить включение внешних URL-адресов, см.: http://pypi.python.org/pypi/plone.app.theming#usage

Как указывали другие, это оказывает влияние на производительность, но если вы кэшируете результирующие страницы, которые могут быть в порядке. Вы можете избежать этой производительности, кэшируя фрагмент и используя параметры метода SSI или ESI, задокументированные на сайте диазо, но вам нужно настроить Nginx для запуска таблицы стилей filter.xsl или прокси-сервера diazo.

Смежные вопросы