Magento,在自定义前端块上显示图像

时间:2012-11-27 14:57:12

标签: image magento block magento-1.7 frontend

我启动并运行了一个模块。在后端,我可以上传具有多个属性的图像,并且我可以在自定义表格上保存图像路径和其他信息。在前端,我已经设法检测到何时需要显示这些图像。我已经使用了一个Observer,当在自定义创建的表上找到显示的产品时,它会添加一个新的布局句柄。然后在那个布局句柄上我调用了一个phtml模板文件,从这里我调用了一个块内的函数,该函数将负责完成所有检查,以确保显示图像。

我的问题是我找不到如何显示这些图像。我发现的一切都引用了如何在phtml文件上添加图像标记,对插入的php代码进行一些额外的验证。在我的情况下购买一切都在PHP代码之外的任何phtml文件。

我的phtml文件代码:

<div>
    <h3><?php $this->showCampaign(); ?></h3>
</div>

我现在的阻止代码:

<?php
class Dts_Banners_Block_Front extends Mage_Core_Block_Template {

    /**
     * Shows a campaign banner according to the current selected product
     * Seeks on main banners table to see if it is an image/html/product alone campaign
     * Once knows the campaign type search on needed table the needed fields
     */
    public function showCampaign() {
        //Zend_Debug::dump($this->getLayout()->getUpdate()->getHandles());

        $product = Mage::registry('current_product');
        $currentProdID = $product->getId();

        if (Mage::registry('campaign_data') && Mage::registry('campaign_data')->getId()) {
            $currentCampaign = Mage::registry('campaign_data');
        } else {
            return;
        }

        // get campaign type and show needed information  
        switch ($currentCampaign->getbanner_type()) {
            case 1: // image
                $myImgCollection = Mage::getModel('banners/bannersimg')->getCollection();
                $myImgCollection->addfieldtofilter('bannerid',$currentCampaign->getID());
                $currentImg = $myImgCollection->getFirstItem();
                $currentImgPath = $currentImg->getimg_path();
                //{{block type="catalog/product_new" product_id="16" template="catalog/product/view/your_new_page.phtml"}}
                break;
            case 2: // html
                echo "html";
                break;
            case 3: // plain product url
                echo "plain product url";
                break;
        }
    }
}

1 个答案:

答案 0 :(得分:-1)

像往常一样,几个小时寻找答案,当我发布问题时,找到了答案。万一有人需要它:就像在代码中创建一个图像html标签一样简单并将其返回到模板文件。示例代码:

<?php
class Dts_Banners_Block_Front extends Mage_Core_Block_Template {

    public function showCampaign() {
        ...
        $currentImgPath = $currentImg->getimg_path();

        //build html to output to the template  
        $html .= "<div class=\"visual\">";
        $html .= "<img src=\"" . $currentImgPath . "\" alt=\"\" />";
        $html .= "</div>";
        ....
        return $html;
    }

和phtml文件代码:

<div class="visual">
    <?php echo $this->showCampaign(); ?>
</div>