【问题标题】:Displaying block using custom module使用自定义模块显示块
【发布时间】:2013-01-14 14:36:01
【问题描述】:

我创建了一个自定义模块来处理我们的会员系统的各种任务。我现在正在尝试修改模块,以便我可以在任何我想要的地方放入一个块。我一直在关注Gravitywell.com 上的教程,但我感觉我在某个地方掉队了。

app/etc/modules/Hatclub_MembershipHandler.xml

<config>
<modules>
    <Hatclub_MembershipHandler>
        <active>true</active>
        <codePool>local</codePool>
    </Hatclub_MembershipHandler>
</modules>

app/code/local/Hatclub/MembershipHandler/Block/lookup.php

<?php

class Hatclub_MembershipHandler_Block_Lookup extends Mage_Core_Block_Template {    

}

app/code/local/Hatclub/MembershipHandler/etc/config.xml

<modules>
    <Hatclub_MembershipHandler>
        <version>1.0.0</version>
    </Hatclub_MembershipHandler>
</modules>

<global>

    <models>
        <hatclub_membership_handler>
            <class>Hatclub_MembershipHandler_Model</class>
        </hatclub_membership_handler>
    </models>

    <blocks>
        <hatclub_membership_handler>
            <class>Hatclub_MembershipHandler_Block</class>
        </hatclub_membership_handler>
    </blocks>

    <events>

        <customer_register_success>
            <observers>
                <registration_success_observer>
                    <class>hatclub_membership_handler/observer</class>
                    <method>registrationSuccess</method>
                    <type>singleton</type>
                </registration_success_observer>
            </observers>
        </customer_register_success>

    </events>

</global>

app/code/local/Hatclub/MembershipHandler/Model/Observer.php

<?php

class Hatclub_MembershipHandler_Model_Observer {

    // members group id
    const GROUP_ID = 4;

    // called when a customer registers for the site
    public function registrationSuccess(Varien_Event_Observer $observer) {

        // extract customer data from event
        $customer = $observer->getCustomer();

        // a cookie should have been set with the membership id
        if (isset($_COOKIE['membership_account_id'])) {

            $customer
                ->setGroupId(self::GROUP_ID)
                ->setRmsId($_COOKIE['membership_account_id']);

        }

        return $this;

    }

}

/app/design/frontend/enterprise/hatclub/template/persistent/customer/form/register.phtml

<?php 
    echo $this->getLayout()->createBlock('hatclub_membership_handler/lookup')->setTemplate('membership_lookup/lookup.phtml')->toHtml(); ?>

【问题讨论】:

    标签: magento


    【解决方案1】:

    文件 app/code/local/Hatclub/MembershipHandler/etc/config.xmlblocks 节点下的代码应如下所示

    <blocks>
                <membershiphandler>
                    <class>Hatclub_MembershipHandler_Block</class>
                </membershiphandler>
    </blocks>
    

    membershiphandler 代表模块名称的小写版本,

    <?php 
        echo $this->getLayout()->createBlock('hatclub_membership_handler/lookup')->setTemplate('membership_lookup/lookup.phtml')->toHtml(); ?>
    

    应该是

    <?php 
            echo $this->getLayout()->createBlock('membershiphandler/lookup')->setTemplate('path to the template file')->toHtml(); ?>
    

    【讨论】:

    • 试一试。但是我在 setTemplate 路径上遇到了一场斗争。我的 lookup.phtml 文件位于 app/design/frontend/enterprise/hatclub/template/membership_handler/lookup.phtml 中。我试着把它放进去,但没有运气。有什么想法吗?我是不是放错地方了?
    • 你尝试过使用路径作为这个 echo $this->getLayout()->createBlock('membershiphandler/lookup')->setTemplate('membership_handler/lookup.phtml')->toHtml( ); ?>
    • 我确实做到了,但它仍然没有显示。不知道这里发生了什么。与 Magento 合作非常令人沮丧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2018-08-07
    相关资源
    最近更新 更多