youtubeブロックをブログページの「Main」に入れるとブログRSSでXMLパースエラー

2011年7月25日 at 7:56

まず、youtubeブロックをブログページの「Main」に使います。
次に、ブログ記事一覧ページのRSSを表示します。
すると、SafariでXMLパースエラーになります。

CDATAタグの終了がエスケープされないのが原因です。

concrete/blocks/page_list/tools/blog_rss.phpの39行目付近を次のように修正することで解決します。

<pre>
<description><![CDATA[
<?php
$a = new Area('Main');
$a->disableControls();
ob_start();
$a->display($cobj);
$content = ob_get_clean();
$content = str_replace(']]>', ']]>', $content);
echo $content;
?>
]]></description>
</pre>


diff

<pre>
^_^ 31 hits! (SuinMacbookAir:~/web/concrete5/concrete/blocks/page_list/tools)
* diff blog_rss.php blog_rss.php.modified
42a43
> ob_start();
43a45,47
> $content = ob_get_clean();
> $content = str_replace(']]>', ']]>', $content);
> echo $content;

</pre>