7

ウィジェットインスタンスを介してcms静的ブロックを挿入しています-ウィジェットテンプレート内から静的ブロックのタイトルとそのコンテンツを出力したいと思います。デフォルトのテンプレート(app / design / frontend / base / default / template / cms / widget / static_block / default.phtml)には、次のものがあります。

<?php echo $this->getText(); ?>

代わりにgetData()に変更して、何を取得できるかを確認しました。これは次のとおりです。

[type] => cms/widget_block
[block_id] => 11
[module_name] => Mage_Cms
[text] => blahblahblah

したがって、block_idを使用してタイトルを取得するのが唯一の方法だと思いますが、その方法を完全に理解することはできません。$ this-> getBlockId()を使用してそこからblock_idを取得できますが、それを使用してタイトルを取得するにはどうすればよいですか?

私は次のことがうまくいくかもしれないと思ったが、うまくいかない:

$blockid = $this->getBlockId();
$blocktitle = Mage::getModel('cms/page')->load($blockid, 'block_id')->getTitle();
4

3 に答える 3

9

次の作品のようです:

$blockid = $this->getBlockId();
$block = Mage::getModel('cms/block')->load($blockid);
echo $block->getTitle();

常にここに質問を書くのに役立ちます、それが書かれているのを見る時間の半分は私が自分で答えを見つけるのに役立ちます!

于 2012-11-15T11:57:04.723 に答える
1

複数の店舗があり、現在の店舗が必要な場合は、次のようになります。

$title = Mage::getModel('cms/block')
    ->setStoreId(Mage::app()->getStore()->getId())
    ->load($blockId)
    ->getTitle();
于 2015-06-15T05:48:57.507 に答える
0

別のアプローチは、ブロック上にその関数を作成することです。

public function getContactWidgetHtml()
{
    $result = '';

    $widget = Mage::getModel('widget/widget_instance')->load(14);

    if ($widget && $widget->getId()) {
        $widgetBlock = $this->getLayout()
            ->createBlock(
                $widget->getType(),
                $widget->getTitle(),
                $widget->getWidgetParameters()
            );

        if ($widgetBlock) {
            $result = $widgetBlock->toHtml();
        }
    }

    return $result;
}

次に、以下を使用してテンプレートに表示します。

echo $this->getContactWidgetHtml();
于 2014-06-20T11:01:53.740 に答える