Magento 仅用于CMS的Custom grid.phtml>;页

Magento 仅用于CMS的Custom grid.phtml>;页,magento,Magento,我正在做我的第一个扩展,试图学习Magento。我有点被一个部分卡住了,因为我想自定义\app\design\adminhtml\default\default\template\widget\grid.phtml文件,但不仅仅是CMS>页面使用该文件。是否有必要将其拆分,以便CMS>Pages部分指向不同的grid.phtml文件?当然有一种方法我现在似乎无法理解。在\uuu构造中在类Mage\u Adminhtml\u Block\u Cms\u Page\u Grid中我可以把这个代码 $

我正在做我的第一个扩展,试图学习Magento。我有点被一个部分卡住了,因为我想自定义
\app\design\adminhtml\default\default\template\widget\grid.phtml
文件,但不仅仅是CMS>页面使用该文件。是否有必要将其拆分,以便CMS>Pages部分指向不同的
grid.phtml
文件?当然有一种方法我现在似乎无法理解。

\uuu构造中
在类
Mage\u Adminhtml\u Block\u Cms\u Page\u Grid中我可以把这个代码

$this->setTemplate('widget/grid2.phtml');

并定义我想要的任何模板。令人惊叹的。现在只需将其升级友好,并将其全部包含在
config.xml
文件中的扩展名中。

\uuuu构造中
在类
Mage\u Adminhtml\u Block\u Cms\u Page\u网格中
我可以放置此代码

$this->setTemplate('widget/grid2.phtml');

并定义我想要的任何模板。令人惊叹的。现在,只需使其升级友好,并将其全部包含在
config.xml
文件中的我的扩展名中。

因为您有自己的扩展名,所以可以通过布局更新文件更改块模板。如果没有,请创建它(app/design/adminhtml/default/default/your_extension.xml),并将以下行添加到扩展的config.xml的adminhtml部分:

<layout>
    <updates>
        <your_extension>
            <file>your_extension.xml</file>
        </your_extension>
    </updates>
</layout>

您的_extension.xml
布局更新文件(在本例中是您的_扩展名.xml)应如下所示:

<?xml version="1.0"?>
<layout>
    <adminhtml_cms_page_index>
        <reference name="cms_page.grid">
            <action method="setTemplate">
                <template>widget/grid2.phtml</template>
            </action>
        </reference>
    </adminhtml_cms_page_index>
</layout>

widget/grid2.phtml

因为您有自己的扩展名,所以可以通过布局更新文件更改块模板。如果没有,请创建它(app/design/adminhtml/default/default/your_extension.xml),并将以下行添加到扩展的config.xml的adminhtml部分:

<layout>
    <updates>
        <your_extension>
            <file>your_extension.xml</file>
        </your_extension>
    </updates>
</layout>

您的_extension.xml
布局更新文件(在本例中是您的_扩展名.xml)应如下所示:

<?xml version="1.0"?>
<layout>
    <adminhtml_cms_page_index>
        <reference name="cms_page.grid">
            <action method="setTemplate">
                <template>widget/grid2.phtml</template>
            </action>
        </reference>
    </adminhtml_cms_page_index>
</layout>

widget/grid2.phtml

我最后只是在config.xml文件中重写了cms\u page\u网格,然后定义了自己的主题。然后在我的custom Grid.php中设置
$this->setTemplate('widget/grid2.phtml')然后让它扩展Mage\u Adminhtml\u Block\u Cms\u Page\u Grid。。。这样,如果我编写了更多需要自定义主题的扩展名,我可以将所有自定义模板文件与magentos默认文件分开。我不太理解你的推理,但当然适合你自己。重写是一种有效的方法,但我认为在这种情况下,这是一种过度的做法,可能会在将来导致一些问题。例如,如果您需要安装一些第三方扩展,这也会重写此网格。我在这个网站上看到了太多“我如何解决扩展冲突”的问题。就像我在帖子中说的“我正在做我的第一个扩展,试图学习Magento”。。。也许在您的解决方案中,您应该提到这如何帮助解决扩展冲突。。。既然你说我要去探索,而且很可能最终会使用你的解决方案,这真的取决于你的情况。如果只需要更改模板,则布局更新是一种最佳方式。但如果您认为将来需要更改此网格的逻辑(例如,_prepareCollection method),则必须重写此块,或者以其他方式搜索。好的,我已经复制并粘贴了上面我的config.xml
中的内容,然后在app/design/adminhtml/default/default中创建了your_extension.xml,但我没有看到任何更改。。。想法?我只是在config.xml文件中重写了cms_page_网格,然后定义了我自己的主题。然后在我的custom Grid.php中设置
$this->setTemplate('widget/grid2.phtml')然后让它扩展Mage\u Adminhtml\u Block\u Cms\u Page\u Grid。。。这样,如果我编写了更多需要自定义主题的扩展名,我可以将所有自定义模板文件与magentos默认文件分开。我不太理解你的推理,但当然适合你自己。重写是一种有效的方法,但我认为在这种情况下,这是一种过度的做法,可能会在将来导致一些问题。例如,如果您需要安装一些第三方扩展,这也会重写此网格。我在这个网站上看到了太多“我如何解决扩展冲突”的问题。就像我在帖子中说的“我正在做我的第一个扩展,试图学习Magento”。。。也许在您的解决方案中,您应该提到这如何帮助解决扩展冲突。。。既然你说我要去探索,而且很可能最终会使用你的解决方案,这真的取决于你的情况。如果只需要更改模板,则布局更新是一种最佳方式。但如果您认为将来需要更改此网格的逻辑(例如,_prepareCollection method),则必须重写此块,或者以其他方式搜索。好的,我已经复制并粘贴了上面我的config.xml
中的内容,然后在app/design/adminhtml/default/default中创建了your_extension.xml,但我没有看到任何更改。。。思想?