Как передать параметр с содержимым блочной формы из страниц cms в magento

Я хочу передать переменную с блочным кодом типа JSON в magento,

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

из области содержимого страниц cms, но я ничего не получаю.
Если я использую блок с действием, то я легко получаю мою ценность. Кто-нибудь знает, как я могу передать переменную с моим пользовательским блоком?

Ответ 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');

Ответ 2

Я думаю, что проблема здесь связана с типом блока, который вы вызываете. Когда вы определяете тип, вы сообщаете Magento о загрузке этой модели и передаете ей соответствующие данные, которые затем предоставляют только функции, определенные на этой конкретной модели.

Лучшим решением может быть ссылка на основной тип блока "core/template", который предоставляет метод → getData(), а затем загружает модель "multibanners/multibanner" для работы с данными и вывода данных.

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

Я не уверен, что правильный синтаксис заключается в загрузке "multibanner", но в файле multibanners.phtml будет что-то вроде этого:

<?php

$catId = $this->getData('category_id');
$multibanner = Mage::getModel('multibanners/multibanners')->load($catId);

/**
** Generate some output here.
*/

?>

Ответ 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; ?>">

Примечание. Я сохраняю свои изображения с размерами в измененной папке и добавляю новый размер к имени файла изображения, чтобы я мог легко видеть, что происходит и управляет файлами.

Спасибо за чтение!

Ответ 4

При добавлении блока на страницах cms удалите стиль из блочного кода.

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

Чтобы получить category_id в вашем приложении phtml или Block $this->getCategoryId().