Шаблон для пользовательской вкладки панели администратора Не работает
Я создал модуль, который создает пользовательскую вкладку в панели администратора, но я не смог отобразить необходимые данные.`
Это мой config.xml файл
Путь: приложение/код/сообщество/JR/createadmincontroller/и т.д.
<?xml version="1.0"?>
<config>
<modules>
<JR_CreateAdminController>
<version>1.0.0</version>
</JR_CreateAdminController>
</modules>
<global>
<helpers>
<jr_createadmincontroller>
<!-- Helper definition needed by Magento -->
<class>Mage_Core_Helper</class>
</jr_createadmincontroller>
</helpers>
</global>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<foo_bar before="Mage_Adminhtml">JR_CreateAdminController_Adminhtml</foo_bar>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config>
Это мой adminhtml.xml файл
Путь: приложение/код/сообщество/JR/createadmincontroller/и т.д.
<?xml version="1.0" encoding="UTF-8"?>
<config>
<menu>
<mycustomtab module="jr_createadmincontroller" translate="title">
<title>My Custom Tab</title>
<sort_order>100</sort_order>
<children>
<index module="jr_createadmincontroller" translate="title">
<title>Index Action</title>
<sort_order>1</sort_order>
<action>adminhtml/custom</action>
</index>
<list module="jr_createadmincontroller" translate="title">
<title>List Action</title>
<sort_order>2</sort_order>
<action>adminhtml/custom/list</action>
</list>
</children>
</mycustomtab>
</menu>
<acl>
<resources>
<admin>
<children>
<custom translate="title" module="jr_createadmincontroller">
<title>My Controller</title>
<sort_order>-100</sort_order>
<children>
<index translate="title">
<title>Index Action</title>
<sort_order>1</sort_order>
</index>
<list translate="title">
<title>List Action</title>
<sort_order>2</sort_order>
</list>
</children>
</custom>
</children>
</admin>
</resources>
</acl>
</config>
Это мой CustomController.php файл
Путь: приложение/код/сообщество/JR/createadmincontroller/контроллеры/Adminhtml
<?php
class JR_CreateAdminController_Adminhtml_CustomController extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$this->loadLayout()
->_setActiveMenu('mycustomtab')
->_title($this->__('Index Action'));
// my stuff
$this->renderLayout();
}
public function listAction()
{
$this->loadLayout()
->_setActiveMenu('mycustomtab')
->_title($this->__('List Action'));
//var_dump(Mage::getSingleton('core/layout')->getUpdate()->getHandles());
//die();
// my stuff
echo "string";
$this->renderLayout();
}
}
Это мой jr_createadmincontroller.xml файл
Path:app/design/adminhtml/default/default/jr_createadmincontroller.xml
<?xml version="1.0"?>
<layout>
<adminhtml_custom_index>
<reference name="content">
<block type="core/template" name="custom_index" template="custom/index.phtml" />
</reference>
</adminhtml_custom_index>
<adminhtml_custom_list>
<reference name="content">
<block type="core/template" name="custom_list" template="custom/list.phtml" />
</reference>
</adminhtml_custom_list>
</layout>
Путь к пользовательской папке - app/design/adminhtml/по умолчанию/по умолчанию/Шаблон/Пользовательский
Есть index.phtml и list.phtml
2 answers
Первое, что приходит на ум: где ваши блочные классы? Чтобы показать материал, вам нужен как контроллер, так и блок. И вам также нужно определить блоки для дескриптора макета. Код, который вы используете сейчас, отображается правильно, но вы не определили никакого содержимого.
Я вижу, вы использовали код из Bubblecode, в котором также есть комментарии о том, что код не работает.
Расширение, которое показывает материал на любой странице, требует, по крайней мере, контроллера (который у вас уже есть), класс блоков и помощник (для переводов и т. Д.).
Чтобы определить ваши блоки, вам нужно добавить это в свой файл config.xml
между тегами <global></global>
:
<blocks>
<jr_createadmincontroller>
<class>JR_CreateAdminController_Block</class>
</jr_createadmincontroller>
</blocks>
После этого вам нужно будет создать файл пользовательского макета, который будет использоваться для загрузки блоков на вашу страницу. Для этого вам понадобятся следующие вещи:
Определение файла макета adminhtml
В вашем config.xml
создайте раздел <adminhtml>
после закрывающего тега для <global>
:
<adminhtml>
<layout>
<updates>
<jr_createadmincontroller>
<file>jr_createadmincontroller.xml</file>
</jr_createadmincontroller>
</updates>
</layout>
</adminhtml>
Теперь вам необходимо создать этот XML-файл макета, который должен находиться по адресу app/design/adminhtml/default/default/layout/jr_customcontroller.xml
. Код, который вам нужен в этом файле, будет выглядеть примерно так:
<?xml version="1.0"?>
<layout>
<adminhtml_createadmincontroller_custom_index>
<reference name="content">
<block type="jr_createadmincontroller/adminhtml_custom" name="name.of.your.block" />
</reference>
</adminhtml_createadmincontroller_custom_index>
</layout>
После этого вам, возможно, также придется создавать шаблоны или использовать функции сетки по умолчанию, основанные на тех, которые Magento использует для продуктов, страниц CMS и т. Д.
Конечно, приведенный выше код не работает "из коробки", но я надеюсь, что он даст вам лучшее понимание того, что вам нужно для создания собственного контента контроллер adminhtml.
Ошибка устранена путем ввода кода макета в config.xml файл под конечным тегом Глобальный
<adminhtml>
<layout>
<updates>
<jr_createadmincontroller>
<file>jr_createadmincontroller.xml</file>
</jr_createadmincontroller>
</updates>
</layout>
</adminhtml>
И поместив jr_createadmincontroller.xml файл в
Путь: app/design/adminhtml/default/default/layout/jr_createadmincontroller.xml