Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何';力';Magento仅加载一个模板_Magento_Magento 1.7 - Fatal编程技术网

如何';力';Magento仅加载一个模板

如何';力';Magento仅加载一个模板,magento,magento-1.7,Magento,Magento 1.7,我有一个通用模板文件,我想用于每个页面。我见过一位同事在local.xml或page.xml布局文件中添加了一个参数,这迫使每个页面使用特定的布局文件,而不管数据库值如何。他已经离开了公司,所以我不能问他是怎么做到的。我尝试了中建议的答案,但没有成功 如何强制Magento(1.7)只加载我想要的模板/布局?这很遗憾,但您不能只使用一个选项来确保所有页面布局都使用您的模板,而是可以应用布局句柄,在每个页面布局句柄中设置自定义模板 因此,在local.xml中应该有如下内容: <your_c

我有一个通用模板文件,我想用于每个页面。我见过一位同事在local.xml或page.xml布局文件中添加了一个参数,这迫使每个页面使用特定的布局文件,而不管数据库值如何。他已经离开了公司,所以我不能问他是怎么做到的。我尝试了中建议的答案,但没有成功


如何强制Magento(1.7)只加载我想要的模板/布局?

这很遗憾,但您不能只使用一个选项来确保所有页面布局都使用您的模板,而是可以应用布局句柄,在每个页面布局句柄中设置自定义模板

因此,在local.xml中应该有如下内容:

<your_custom_handle>
     <action method="setTemplate" block="root"><template>your/template.phtml</template></action>
</your_custom_handle>

<page_empty>
     <update handle="your_custom_handle" />
</page_empty>

<page_one_column>
     <update handle="your_custom_handle" />
</page_one_column>

<page_two_columns_left>
     <update handle="your_custom_handle" />
</page_two_columns_left>

<page_two_columns_right>
     <update handle="your_custom_handle" />
</page_two_columns_right>

<page_three_columns>
     <update handle="your_custom_handle" />
</page_three_columns>

您的/template.phtml
布局更新的第一部分创建自己的句柄,将模板设置为根块。所有其他页面都将自定义句柄包含到不同的页面布局中


享受吧

遗憾的是,您不仅可以使用一个选项来确保所有页面布局都使用您的模板,还可以应用布局句柄,在每个页面布局句柄中设置自定义模板

因此,在local.xml中应该有如下内容:

<your_custom_handle>
     <action method="setTemplate" block="root"><template>your/template.phtml</template></action>
</your_custom_handle>

<page_empty>
     <update handle="your_custom_handle" />
</page_empty>

<page_one_column>
     <update handle="your_custom_handle" />
</page_one_column>

<page_two_columns_left>
     <update handle="your_custom_handle" />
</page_two_columns_left>

<page_two_columns_right>
     <update handle="your_custom_handle" />
</page_two_columns_right>

<page_three_columns>
     <update handle="your_custom_handle" />
</page_three_columns>

您的/template.phtml
布局更新的第一部分创建自己的句柄,将模板设置为根块。所有其他页面都将自定义句柄包含到不同的页面布局中


享受吧

作为Ivans answer的替代方案,您还可以使用事件观察者来设置模板。有关详细解释,请参阅。这是您可以使用的代码:

app/design/frontend/yourpackage/yourtheme/layout/local.xml

<?xml version="1.0" encoding="UTF-8"?>
<layout version="0.1.0">

    <!-- your other adjustments for default, category_product_view and so on go here -->

    <set_root_template>
        <reference name="root">
             <action method="setTemplate"><template>your/template.phtml</template></action>
        </reference>
    </set_root_template>
</layout>

您的/template.phtml
app/code/yourpool/Company/Extension/Model/Observer.php

    <?php

    class Company_Extension_Model_Observer
    {
        /**
         * Sets the template file for the root block.
         * 
         * Uses the event 'controller_action_layout_load_before'.
         * 
         * @param Varien_Event_Observer $observer
         * @return YourCompany_YourExtension_Model_Observer
         */
        public function setRootTemplate(Varien_Event_Observer $observer)
        {
            $layout = $observer->getEvent()->getLayout()->getUpdate();
            $layout->addHandle('set_root_template');
            return $this;
        }
    }

公司扩展模型
app/etc/modules/Company_Extension.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Company_Extension>
            <active>true</active>
            <codePool>local</codePool>
        </Company_Extension>
    </modules>
</config>

真的
地方的

作为Ivans answer的替代方案,您还可以使用事件观察者设置模板。有关详细解释,请参阅。这是您可以使用的代码:

app/design/frontend/yourpackage/yourtheme/layout/local.xml

<?xml version="1.0" encoding="UTF-8"?>
<layout version="0.1.0">

    <!-- your other adjustments for default, category_product_view and so on go here -->

    <set_root_template>
        <reference name="root">
             <action method="setTemplate"><template>your/template.phtml</template></action>
        </reference>
    </set_root_template>
</layout>

您的/template.phtml
app/code/yourpool/Company/Extension/Model/Observer.php

    <?php

    class Company_Extension_Model_Observer
    {
        /**
         * Sets the template file for the root block.
         * 
         * Uses the event 'controller_action_layout_load_before'.
         * 
         * @param Varien_Event_Observer $observer
         * @return YourCompany_YourExtension_Model_Observer
         */
        public function setRootTemplate(Varien_Event_Observer $observer)
        {
            $layout = $observer->getEvent()->getLayout()->getUpdate();
            $layout->addHandle('set_root_template');
            return $this;
        }
    }

公司扩展模型
app/etc/modules/Company_Extension.xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <modules>
        <Company_Extension>
            <active>true</active>
            <codePool>local</codePool>
        </Company_Extension>
    </modules>
</config>

真的
地方的

和作为另一种选择。(但本质上与@MatthiasZeis的建议相同)。我还提供了一个模块来完成它)

我也遇到了同样的问题,我提出了同样的想法,使用observer事件将自定义句柄注入magento

因此,我的代码注入了一个名为
的“loadlast”句柄,它允许您通过layout指令设置根模板

由于它是最后一次加载的,因此任何以前用于更改模板的set layout指令都将替换为



作为另一种选择。(但本质上与@MatthiasZeis的建议相同)。我还提供了一个模块来完成它)

我也遇到了同样的问题,我提出了同样的想法,使用observer事件将自定义句柄注入magento

因此,我的代码注入了一个名为
的“loadlast”句柄,它允许您通过layout指令设置根模板

由于它是最后一次加载的,因此任何以前用于更改模板的set layout指令都将替换为



虽然这确实有效,但我需要包括网站上被调用的每种页面类型的句柄。是否有一个明确的列表?我已经为您提供了一个列表,列出了标准Magento分期中存在的所有自定义页面布局句柄。所有其他页面通常都使用它们。此外,您还可以将此更改添加到
句柄。在此列表中,我还需要添加``以便我的产品页面使用我的模板。是什么让我怀疑我需要这样做更多的处理比建议。也许这是Magento在1.7中打破的另一个东西?@RichardParnaby King,因为在核心的catalog.xml中,它不是通过句柄设置模板,而是通过手动指定模板。请参阅base/default theme layout/catalog.xml文件的第181-183行。虽然这确实有效,但我需要包括站点上调用的每种页面类型的句柄。是否有一个明确的列表?我已经为您提供了一个列表,列出了标准Magento分期中存在的所有自定义页面布局句柄。所有其他页面通常都使用它们。此外,您还可以将此更改添加到
句柄。在此列表中,我还需要添加``以便我的产品页面使用我的模板。是什么让我怀疑我需要这样做更多的处理比建议。也许这是Magento在1.7中打破的另一个东西?@RichardParnaby King,因为在核心的catalog.xml中,它不是通过句柄设置模板,而是通过手动指定模板。请参见基本/默认主题布局/catalog.xml文件的第181-183行。