1

我正在尝试通过 AJAX 调用静态块。我可以很好地检索文本,但是图像不会从它们的 {{ }} 模板格式处理到实际的图像路径,而是在它们被写入 CMS 时遇到。

{{media url="wysiwyg/groups-scenes-associations-c-296_367.jpeg"}}

当我在 CMS 页面或 phtml 文件中正常引用块时,情况并非如此,只有当我通过此 AJAX 方法获取块时。

因此,我基本上是在向我创建的脚本发出 GET 请求,该脚本启动 Magento 实例,调用块 HTML 并将其回显以返回到原始调用 JavaScript - 如下所示:

处理 AJAX 请求的脚本:

require_once('../app/Mage.php'); 
umask(0);
Mage::app();

$block_identifier = 'delivery_country_' . $_GET['iso_country'];

$staticBlock = Mage::getModel('cms/block')->load($block_identifier);
echo $staticBlock->getContent();

CMS 静态块的内容

<div class="delivery-panes">
<div class="delivery-left-pane"><img src="{{media url="wysiwyg/groups-scenes-associations-c-296_367.jpeg"}}" alt="" /></div>
<div class="delivery-right-pane">
<h2>France</h2>
<p>FR Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean dignissim tempus vestibulum. Quisque tempor velit sed enim hendrerit vehicula. Donec egestas iaculis risus in bibendum. Ut est nisi, semper ac adipiscing ut, hendrerit faucibus metus. Nam mollis velit non purus congue sagittis. Phasellus sit amet felis in leo ultricies vehicula sit amet nec libero. Sed ultricies metus et quam scelerisque auctor. Vivamus et consequat orci.</p>
</div>
</div>

脚本的完整响应

<div class="delivery-left-pane"><img src="{{media url="wysiwyg/groups-scenes-associations-c-296_367.jpeg"}}" alt="" /></div>
<div class="delivery-right-pane">
<h2>France</h2>
<p>FR Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean dignissim tempus vestibulum. Quisque tempor velit sed enim hendrerit vehicula. Donec egestas iaculis risus in bibendum. Ut est nisi, semper ac adipiscing ut, hendrerit faucibus metus. Nam mollis velit non purus congue sagittis. Phasellus sit amet felis in leo ultricies vehicula sit amet nec libero. Sed ultricies metus et quam scelerisque auctor. Vivamus et consequat orci.</p>
</div>
</div>

为什么在我的 AJAX 方法中,图像会作为上面未处理的 {{ }} 字符串返回,而不是被处理成正确的路径和文件名?即把 {{ }} 变成图像文件名。

4

1 回答 1

2

我认为这是因为 Model 内部没有文本预处理方法。如果您需要块 - 只需使用块代替:

$block_identifier = 'delivery_country_' . $_GET['iso_country'];
$block = Mage::app()->getLayout()->createBlock('cms/block')->setBlockId($block_identifier);
echo $block->toHtml();
于 2013-05-03T13:49:37.797 回答