0

モジュールの作成方法を学ぶために、モジュールのような「こんにちは世界」を少しだけ作ろうとしています。Mac OSX 10.6 ローカル サーバーに Magento 1.7 をかなり新しくインストールしました。Pierrefayのチュートリアルをフォローしていますが、ブロックを表示できません。私はウェブのいたるところにいましたが、何もうまくいきませんでした。モジュールのページには、「犬」と「新学期」の広告を含むデフォルトの外観が表示されます。私は Alan の Layoutviewer モジュールを持っています。私は現在デバッグモードで、狂ったようにキャッシュを空にしています。私はすでにMagに伝えました。とにかく、何もキャッシュしないでください。エラーメッセージが生成されないポイントに到達することができました (デバッグモードでもあり、execption.log と system.log がプルアップされています)。

私のコントローラー:

<?php
class Nationwide_Cartonplugin_IndexController extends Mage_Core_Controller_Front_Action {
    public function indexAction ()
   {
     $this->loadLayout();
     $this->renderLayout();
     //var_dump(Mage::getSingleton('core/layout')->getUpdate()->getHandles());
    //exit("bailing early at ".__LINE__." in ".__FILE__);
     //echo "Carton Exists";

     //Mage::log(
     //   $this->getLayout()->getUpdate()->getHandles(),
     //   null, ‘layout.log’ );
     //Mage::log(
     //  $this->getLayout()->getUpdate()->asString(),
     //  null, ‘layout.log’ );
   }
   public function mamethodeAction ()
   {
     echo 'test mymethod';
    }
}

私の設定:

<?xml version="1.0"?>

<config>
    <modules>
        <Nationwide_Cartonplugin>
            <version>1.1.0</version>
        </Nationwide_Cartonplugin>
    </modules>
    <global>
        <blocks>
            <cartonplugin>
                <class>Nationwide_Cartonplugin_Block</class>
            </cartonplugin>
        </blocks>
    </global>
    <frontend>
        <routers>
            <cartonplugin>
                <use>standard</use>
                <args>
                    <module>Nationwide_Cartonplugin</module>
                    <frontName>carton</frontName>
                </args>
            </cartonplugin>
        </routers>
        <layout>
            <updates>
                <cartonplugin>
                    <file>carton.xml</file>
                </cartonplugin>
            </updates>
        </layout>
    </frontend>
</config>

私のレイアウト: (frontend/default/nationalwide/layout/carton.xml)(管理者設定でデフォルトと全国を使用しています)

<?xml version="1.0"?>

<layout version="0.1.0">
      <default>
          <reference name="content">
          </reference>
      </default>
      <cartonplugin_index_index>
           <reference name="content">
                <block output="toHtml" type="cartonplugin/myblock"  name="myblock"
                          template="cartonplugin/cartondisplay.phtml"/>
           </reference>
      </cartonplugin_index_index>
</layout>

参照のコメントを外すと、「無効なテンプレート」エラーが生成されます。

マイテンプレート: (frontend/default/nationwide/template/cartonplugin/cartondisplay.phtml)

<?php
//echo $this->methodcarblock();
?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Hello World</title>
    <style type="text/css">
        body {
            background-color:#f00;
        }
    </style>
</head>
<body>
    <div class="test1">
        <?php echo $this->methodcarblock(); ?>
    </div>
</body>
</html> 

私のブロック:

<?php

class Nationwide_Cartonplugin_Block_Myblock extends Mage_Core_Block_Template
{
     public function methodcarblock()
     {
         return 'informations about my block !!';
     }
}

私はウェブ上のすべてをフォローしているようですが、インデックスアクションからのエコー以外には何も機能していません。助けていただければ幸いです。

4

2 に答える 2

0

ひと目で変わる

<block type="cartonplugin/myblock" name="myblock" template="cartonplugin/cartondisplay.phtml"/>

<block output="toHtml" type="cartonplugin/myblock" name="myblock" template="cartonplugin/cartondisplay.phtml"/>

これはMage_Core_Controller_Varien_Action::renderLayout()、出力ブロックがレンダリングのエントリ ポイントとして設定されていることを前提としているため必要です。で定義されたルートブロックは出力ブロックであるため、通常、出力ブロックとメソッドを設定する必要はありませんpage.xml

于 2012-08-27T17:22:15.643 に答える
0

Magento はブロックを呼び出そうとしないため、コメントを外してもエラーは発生しません:) したがって、これはサイレントエラーです...

実際、エラーが示すように、Magento はファイル frontend/base/ default /template/cartonplugin/cartondisplay.phtml に到達しようとしています。つまり、ファイル frontend/default/ national / template/ cartonplugin/cartondisplay.phtml は実際に存在します。

それで、パッケージ/テーマがシステム構成のデザインタブで正しく構成されていると確信していますか? パッケージが「デフォルト」で、テーマ テンプレートが「全国」であることを確認してください。

以下の図のような構成は、Magento に、frontend/base/ default /template/ ではなくfrontend /default/ national /template/ に存在するテンプレートを呼び出すように指示するための適切な構成です(既存の構成とストア ビューによっては、微調整が必​​要になる場合があります)。 )

ここに画像の説明を入力

于 2012-08-27T20:37:07.453 に答える