我启动并运行了一个模块。在后端,我可以上传具有多个属性的图像,并且我可以在自定义表格上保存图像路径和其他信息。在前端,我已经设法检测到何时需要显示这些图像。我已经使用了一个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;
}
}
}
答案 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>