在Magento中将静态块显示为弹出窗口

时间:2012-08-24 04:20:39

标签: magento

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

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

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

<?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网站主题的静态块。任何想法都将不胜感激。

2 个答案:

答案 0 :(得分:3)

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

所以现在的问题是:如何让主题发挥作用?

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

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

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

生成完xml之后,意味着将该代码放在:

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

答案 1 :(得分:2)

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

然后,一旦你有了工作 - 问题是如何把它拉成弹出窗口。我可以选择一个漂亮的jquery弹出窗口小部件,它允许你指定要点击的URL - 然后只传入你为上面第1步准备的那个。

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

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