3

我正在尝试在 Magento 中将静态块显示为弹出窗口,但似乎无法使代码正常工作。

我在互联网上的各个地方找到了似乎与我想要的相当接近的代码,但我无法得到任何结果。我已经使用基本代码将“顶部链接”返回到我的网站,所以我知道基本的工作。

delpopup.php在我的 Magento 根文件夹中创建了一个脚本并输入了以下代码:

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

$layout = Mage::app()
    ->getLayout();

$layout
    ->getUpdate()
    ->addHandle('default')
    ->load();

$layout
    ->generateXml()
    ->generateBlocks();

echo '<p>before</p>';

echo $layout
    ->createBlock('cms/block')
    ->setBlockId('delivery-info')
    ->toHtml();

echo '<p>after</p>';
?>

不幸的是,代码没有显示静态块。输出的那部分是空白的。

我的想法是我可以在 Magento 的常规页面中放置一个链接,然后弹出我的交付。像这样:

<a title="" onclick="popWin('http://www.mysite.com.au/delpopup.php', 'deliveryinfo', 'width=300,height=300,left=0,top=0,location=no,status=yes,scrollbars=yes,resizable=yes'); return false;" href="#">Delivery Info</a>

基本上我希望能够在使用我的 Magento 网站主题的弹出窗口中显示一个静态块。任何想法将不胜感激。

4

2 回答 2

3

正如我所想,问题在于不正确的Block Id. 现在可以显示 cms 了。

所以现在的问题是:如何让主题工作?

不太确定主题是什么意思,如果您的意思是<default>标签中包含的 css,您可以使用:

Mage::getDesign()->setTheme('your theme');

echo $layout->getBlock('head')->toHtml();

xml生成完成后,这意味着将代码放在后面:

$layout
    ->generateXml()
    ->generateBlocks();
于 2012-08-26T13:06:10.040 回答
2

我首先设置一个控制器和块来呈现您想要在弹出窗口中抛出的布局类型。因此,不要在独立的 php 文件中执行此操作,而是在特定控制器操作中的常规法师框架中执行此操作。

然后,一旦你有这个工作 - 问题是如何将它拉到弹出窗口中。我可能会选择一个不错的 jquery 弹出窗口小部件,它允许您指定要点击的 URL - 然后只需传入您为上面的步骤 1 准备的那个。

您可能想寻找adminhtml/default/default/template/popup.phtml灵感。这实际上是管理员的弹出模板,而不是前端,但你可以看到他们做了什么。

他们正在引入一些标准的 magento 块head,包括应该引入所有 CSS 和 JS 的块,以便为您提供前端的一般配色方案/外观,但没有所有导航等。

于 2012-08-24T04:38:20.327 回答