如何通过与块的形式内容的参数从Magento的CMS页面(How to pass parameter

2019-07-03 14:32发布

我想传递一个变量用所述块码等在Magento JSON类型,

{{block type="multibanners/multibanners" category_id="9" name="multibanners" alias="multibanners" template="multibanners/multibanners.phtml"}}

从CMS网页内容区域,但我没有收到任何东西。
如果我使用的块与操作方法比我轻松搞定自己的价值。 任何人都知道如何传递变量,我的自定义模块?

Answer 1:

我不是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');


Answer 2:

我觉得这里的问题,您所呼叫块类型茎。 当你定义一个类型,你告诉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.
*/

?>


Answer 3:

我发现这非常有用,我想我会解释我做了什么的情况下,它可以帮助别人。

我有我用它来构建与基本不改变信息的一些静态页面(约美型页),其中包括了一些照片几个静态块。 这些照片是非常大(网页),我想使用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; ?>">

注意我保存在一个文件夹中调整大小我的缩放后的图像,并添加新的大小的图像文件名,所以我可以很容易地看到发生了什么和管理文件。

谢谢阅读!



Answer 4:

当一个CMS页面添加块从块代码中删除风格。

{{block type="multibanners/multibanners" name="multibanners" alias="multibanners" template="multibanners/multibanners.phtml" category_id="8"}}

为了让CATEGORY_ID在PHTML或阻止使用$this->getCategoryId()



文章来源: How to pass parameter with block form contents from cms pages in magento