0

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() ?>

非常に詳細で意味のある説明に感謝します:-)

4

2 に答える 2