Magento 1.9.1 用の独自のモジュールを作成しようとしています。私のモジュールでは、次のように CMS コンテンツでブロックを呼び出そうとしています:
{{block type="core/template" template="myNamespace/myModulOutput.phtml"}}
myModulOutput.phtml
テンプレートには、自分のコントローラーからのコレクションが含まれています。
class myNamespace_myModelname_Block extends Mage_Core_Block_Template
{
public function getCollection()
{
// some code
return $collection;
}
}
モジュールはアクティブなようで、次の構成で Magento バックエンドに表示されます。
<config>
<modules>
<myNamespace_myModulname>
<version>0.1.0</version>
</myNamespace_myModulname>
</modules>
<global>
<blocks>
<myNamespace_myModulname>
<class>myNamespace_myModulname_Block</class>
</myNamespace_myModulname>
</blocks>
</global>
</config>
ブロック クラスはファイルで定義されますapp/code/local/myNamespace/myModulname/Blocks/Index.php
。
これは有効な構成ですか? フロントエンドでエラーが発生しています: Fatal error: Call to a member function getCollection() on a non-object
。
編集
解決した
@b.enoit.be からの説明で、次の設定を試しました...実行されました;-)
app/etc/modules/Mynamespace_Mymodulname.xml:
<?xml version="1.0"?>
<config>
<modules>
<Mynamespace_Mymodulname>
<active>true</active>
<codePool>local</codePool>
<depends/>
</Mynamespace_Mymodulname>
</modules>
</config>
アプリ/コード/ローカル/Mynamespace/Mymodulname/ブロック/Index.php:
<?php
class Mynamespace_Mymodulname_Block_Index extends Mage_Core_Block_Template
{
public function getTest()
{
// some code
return "mymodul:test";
}
}
?>
アプリ/コード/ローカル/Mynamespace/Mymodulname/etc/config.xml:
<?xml version="1.0"?>
<config>
<modules>
<Mynamespace_Mymodulname>
<version>0.1.0</version>
</Mynamespace_Mymodulname >
</modules>
<global>
<blocks>
<mynamespace_mymodulname>
<class>Mynamespace_Mymodulname_Block</class>
</mynamespace_mymodulname >
</blocks>
</global>
</config>
CMS-コール
{{block type="mynamespace_mymodulname/index" template="mynamespace/myoutput.phtml"}}
アプリ/デザイン/フロントエンド/myTheme/default/mynamespace/myoutput.phtml:
<?php /** @var $this Mynamespace_Mymodulname_Block_Index */ ?>
<?php echo $this->getTest() ?>
非常に詳細で意味のある説明に感謝します:-)