Я пытался добавить вкладку на страницу информации о клиентах в Magento CE 1.6.
Я пробовал следующие примеры:
Последний — единственный, который, кажется, даже близко. Однако у него есть две проблемы. Во-первых, он редактирует основные файлы, а во-вторых, когда я нажимаю на вкладку, он раскручивается и окрашивается. Chrome DevTools показывает сервер отчетов 404.
Может ли кто-нибудь предоставить мне приличную документацию или код, совместимый с Magento 1.6?
редактировать Добавление текста из последней ссылки, как это кажется, единственный, который работал удаленно.
Переопределить файл /app/code/core/Mage/Adminhtml/Block/Customer/Edit/Tabs.php
, внутри _beforeToHtml()
метод, добавьте следующий код:
$ This-> addTab ( 'Пользовательский', массив ( 'label' => Mage :: helper ('customer') -> __ ('Custom'), 'class' => 'ajax', 'url' => $ this-> getUrl ('* / * / custom', массив ('_ current' => true)), ));
Переопределить файл /app/code/core/Mage/Adminhtml/controllers/CustomerController.php
Добавьте следующий код:
публичная функция customAction () {$ this -> _ initCustomer (); $ This-> GetResponse () -> setBody ( Mage :: приложение () -> getLayout () -> createBlock ( 'ядро / шаблон') -> setTemplate ( 'пользовательские / клиент / вкладка / custom.phtml') -> setCustomerId (Mage :: реестра ( 'current_customer') -> GetId ()) -> setUseAjax (истина) -> toHtml () ); }
Создать файл /app/code/core/Namespace/ModuleName/Block/Adminhtml/Customer/Edit/Tab/
и создать Custom.php
Добавьте в файл следующий исходный код:
<? PHP Класс Custom_Custom_Block_Adminhtml_Customer_Edit_Tab_Custom расширяет Mage_Adminhtml_Block_Widget_Form { публичная функция __construct () { Родитель :: __ конструкция (); $ This-> setTemplate ( 'пользовательские / клиент / вкладка / custom.phtml'); } } ?>
Теперь вам нужно создать файл шаблона. Идти к /app/design/adminhtml/default/default/template/modulename/customer/tab/
и создать custom.phtml
,
Удалось отследить некоторый из готового кода, который работает без каких-либо изменений в качестве отправной точки:
http://www.engine23.com/magento-how-to-create-custom-customer-tab-and-submit-a-form.html
приложение / и т.д. / модули / Russellalbin_Customertab.xml
<?xml version="1.0"?>
<config>
<modules>
<Russellalbin_Customertab>
<active>true</active>
<codePool>local</codePool>
</Russellalbin_Customertab>
</modules>
</config>
приложение / и т.д. / местные / Russellalbin / Customertab / и т.д. / config.xml
<config>
<modules>
<Russellalbin_Customertab>
<version>0.0.1</version>
</Russellalbin_Customertab>
</modules>
<adminhtml>
<layout>
<updates>
<customertab>
<file>customertab.xml</file>
</customertab>
</updates>
</layout>
</adminhtml>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<russellalbin_customertab before="Mage_Adminhtml">Russellalbin_Customertab_Adminhtml</russellalbin_customertab>
</modules>
</args>
</adminhtml>
</routers>
</admin>
<global>
<blocks>
<customertab>
<class>Russellalbin_Customertab_Block</class>
</customertab>
</blocks>
</global>
</config>
Приложение / код / местные / Russellalbin / Customertab / Block / Adminhtml / Клиент / Редактировать / Tab / action.php
/**
* Adminhtml customer action tab
*
*/
class Russellalbin_Customertab_Block_Adminhtml_Customer_Edit_Tab_Action
extends Mage_Adminhtml_Block_Template
implements Mage_Adminhtml_Block_Widget_Tab_Interface
{
public function __construct()
{
$this->setTemplate('customertab/action.phtml');
}
public function getCustomtabInfo()
{
$customer = Mage::registry('current_customer');
$customtab = 'Mail Order Comics Pull List';
return $customtab;
}
/**
* Return Tab label
*
* @return string
*/
public function getTabLabel()
{
return $this->__('Customer Pull List');
}
/**
* Return Tab title
*
* @return string
*/
public function getTabTitle()
{
return $this->__('Pull List Tab');
}
/**
* Can show tab in tabs
*
* @return boolean
*/
public function canShowTab()
{
$customer = Mage::registry('current_customer');
return (bool)$customer->getId();
}
/**
* Tab is hidden
*
* @return boolean
*/
public function isHidden()
{
return false;
}
/**
* Defines after which tab, this tab should be rendered
*
* @return string
*/
public function getAfter()
{
return 'tags';
}
}
Приложение / код / местные / Russellalbin / Customertab / контроллеры / Adminhtml / CustomertabController.php
class Russellalbin_Customertab_Adminhtml_CustomertabController extends Mage_Adminhtml_Controller_Action
{
function resetAction()
{
$params = array();
$path = 'customer';
$customer_id = (int)$this->getRequest()->getParam('customer_id');
if($customer_id)
{
// Do your stuff here
$params['id'] = $customer_id;
$params['back'] = 'edit';
$params['tab'] = 'customer_edit_tab_action';
$path = 'adminhtml/customer/edit/';
}
$params['_store'] = Mage::getModel('core/store')->load(0);
$url = Mage::getModel('adminhtml/url')->getUrl($path, $params);
Mage::app()
->getResponse()
->setRedirect($url);
Mage::app()
->getResponse()
->sendResponse();
exit;
}
}
приложение / дизайн / adminhtml / по умолчанию / по умолчанию / макет / customertab.xml
<?xml version="1.0"?>
<layout version="0.1.0">
<adminhtml_customer_edit>
<reference name="customer_edit_tabs">
<action method="addTab">
<name>customer_edit_tab_action</name>
<block>customertab/adminhtml_customer_edit_tab_action</block>
</action>
</reference>
</adminhtml_customer_edit>
</layout>
приложение / дизайн / adminhtml / по умолчанию / по умолчанию / шаблон / customertab / action.phtml
<div id="customer_info_tabs_customer_edit_tab_action_content">
<div class="entry-edit">
<div class="entry-edit-head">
<h4 class="icon-head head-edit-form fieldset-legend">Pull List</h4>
</div>
<div id="group_fields4" class="fieldset fieldset-wide">
<div class="hor-scroll">
<h2>This is my form and content that I can submit and return back to this page and tab</h2>
<div><form action="<?php echo $this->getUrl('adminhtml/customertab/reset/', array('customer_id'=> $customer_id)); ?>" method="get"><input type="submit" value="Post This Form" /></form></div>
</div>
</div>
</div>
</div>
Приложение / код / местные / пространство имен / модуль / и т.д. / config.xml: убедитесь, что вы объявили свой псевдоним блока и свой файл макета adminhtml:
<config>
...
<global>
...
<blocks>
<namespace_module>
<class>Namespace_Module_Block</class>
</namespace_module>
</blocks>
...
</global>
...
<adminhtml>
...
<layout>
<updates>
<namespace_module>
<file>namespace/module.xml</file>
</namespace_module>
</updates>
</layout>
...
</adminhtml>
...
</config>
приложение / дизайн / adminhtml / по умолчанию / по умолчанию / макет / пространство имен / module.xml: объявите вашу новую вкладку
<layout version="0.1.0">
...
<adminhtml_customer_edit>
<reference name="customer_edit_tabs">
<action method="addTabAfter">
<name>custom_tab</name><!--can be anything you want-->
<block>namespace_module/adminhtml_customer_edit_tab_custom</block>
<after>account</after><!-- after which tab do you want it -->
</action>
</reference>
</adminhtml_customer_edit>
...
</layout>
Приложение / код / местные / пространство имен / модуль / блок / Adminhtml / Клиент / Редактировать / Tab / Custom.php: это ваш класс блоков
<?php
class Namespace_Module_Block_Adminhtml_Customer_Edit_Tab_Custom
extends Mage_Adminhtml_Block_Widget_Form
implements Mage_Adminhtml_Block_Widget_Tab_Interface
{
public function __construct()
{
parent::__construct();
$this->setTemplate('namespace/module.phtml');
}
public function getTabLabel()
{
return Mage::helper('namespace_module')->__('Tab Label');
}
public function getTabTitle()
{
return Mage::helper('namespace_module')->__('Tab Title');
}
public function canShowTab()
{
return true;
}
public function isHidden()
{
return false;
}
}
приложение / дизайн / adminhtml / по умолчанию / по умолчанию / шаблон / пространство имен / module.phtml: содержимое вкладки:
enter html code here