11

magentoでJSON型のようなブロックコードで変数を渡したいのですが、

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

cmsページのコンテンツエリアからですが、何も届きません。
アクションメソッドでブロックを使用すると、値を簡単に取得できます。カスタムブロックで変数を渡す方法を知っている人はいますか?

4

4 に答える 4

30

あなたが何を求めているのかは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');
于 2012-11-06T07:32:11.140 に答える
3

ここでの問題は、呼び出しているブロックの種類に起因すると思います。タイプを定義すると、そのモデルをロードして適切なデータを渡すように Magento に指示されます。これにより、その特定のモデルで定義された関数のみが公開されます。

より良い解決策は、->getData() メソッドを公開するコア ブロック タイプ「core/template」を参照し、「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.
*/

?>
于 2013-10-24T17:17:33.577 に答える
2

私はこれが非常に便利だと思ったので、他の人に役立つ場合に備えて、私が何をしたかを説明したいと思いました.

いくつかの写真を含む基本的な変更されない情報 (about-us タイプのページ) を含むいくつかの静的ページを作成するために使用する静的ブロックがいくつかあります。写真は非常に大きく (Web ページの場合)、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; ?>">

サイズを変更した画像をサイズ変更したフォルダーに保存し、新しいサイズを画像ファイル名に追加して、何が起こっているかを簡単に確認してファイルを管理できるようにします。

読んでくれてありがとう!

于 2013-07-19T08:01:15.020 に答える
0

cms ページにブロックを追加するときに、ブロック コードからスタイルを削除します。

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

phtml またはブロックで category_id を取得するには、 を使用します$this->getCategoryId()

于 2012-11-07T05:20:43.370 に答える