0

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

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

我的 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;
        }
    }
}
4

1 回答 1

-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>
于 2012-11-27T15:28:42.680 回答