我想传递一个变量用所述块码等在Magento JSON类型,
{{block type="multibanners/multibanners" category_id="9" name="multibanners" alias="multibanners" template="multibanners/multibanners.phtml"}}
从CMS网页内容区域,但我没有收到任何东西。
如果我使用的块与操作方法比我轻松搞定自己的价值。 任何人都知道如何传递变量,我的自定义模块?
我不是100%肯定你所要求的,但如果你试图传递一个变量multibanners.phtml
从上面的代码,那么你可以创建另一个属性类似于category_id="9"
和multibanners.phtml
你可以得到使用值$this->getData("category_id");
如
{{block ... my_var="value here" ... template="multibanners/multibanners.phtml"}}
在multibanners.phtml
:
$this->getData('my_var');
我觉得这里的问题,您所呼叫块类型茎。 当你定义一个类型,你告诉Magento的加载一个模型,并将它传递适当的数据 - 这则只有暴露在特定模型中定义的功能。
一个更好的解决方案可以是引用芯块类型“核/模板”,其暴露 - > getData()方法,然后加载“multibanners / multibanners”模型和输出的数据的工作。
{{block type="core/template" category_id="9" name="multibanners" alias="multibanners" template="multibanners/multibanners.phtml"}}
我不知道正确的语法是加载“multibanners”是什么,但在multibanners.phtml会是这样的:
<?php
$catId = $this->getData('category_id');
$multibanner = Mage::getModel('multibanners/multibanners')->load($catId);
/**
** Generate some output here.
*/
?>
我发现这非常有用,我想我会解释我做了什么的情况下,它可以帮助别人。
我有我用它来构建与基本不改变信息的一些静态页面(约美型页),其中包括了一些照片几个静态块。 这些照片是非常大(网页),我想使用Magento的调整大小设施。 我可以找出这样做的唯一途径是在这里使用的想法。 我现在有一个块,我可以在任何CMS包括静态页面/块时,我想有几个参数调整后的图像。 这就像一个子程序(我是不允许说?O)。 无论如何,这里就是我所做的。
块:
{{block type="core/template" name="display_resized_img" gimg="IMG_0559.JPG" gsize="300" gpath="/wysiwyg/ShopFront/" gclass="about-us" galt="The shop" template="utilities/display_resized_img.phtml"}}
和PHTML代码文件:
<?php
/*
* Displays and resizes an image as requested from the block.
* The image is only resized if it hasn't been already.
*/
$img = $this->getData('gimg');
$size = $this->getData('gsize');
$path = $this->getData('gpath');
$class = $this->getData('gclass');
$alt = $this->getData('galt');
$resizePath = Mage::getBaseDir ('media') . $path . "resized/" . $size . $img;
if (!file_exists($resizePath)):
$imagePath = Mage::getBaseDir('media') . $path . $img;
$imageObj = new Varien_Image($imagePath);
$imageObj->constrainOnly(TRUE);
$imageObj->keepAspectRatio(TRUE);
$imageObj->keepFrame(FALSE);
$imageObj->resize($size, null);
$imageObj->save($resizePath);
endif;
$resizeUrl = Mage::getBaseUrl ('media') . $path . "resized/" . $size . $img;
?>
<img class="<?php echo $class; ?>" src="<?php echo $resizeUrl ?>" alt="<?php echo $alt; ?>">
注意我保存在一个文件夹中调整大小我的缩放后的图像,并添加新的大小的图像文件名,所以我可以很容易地看到发生了什么和管理文件。
谢谢阅读!
当一个CMS页面添加块从块代码中删除风格。
{{block type="multibanners/multibanners" name="multibanners" alias="multibanners" template="multibanners/multibanners.phtml" category_id="8"}}
为了让CATEGORY_ID在PHTML或阻止使用$this->getCategoryId()