Magento 1.6 добавить вкладку для редактирования клиента на бэкэнде

Я пытался добавить вкладку на страницу информации о клиентах в Magento CE 1.6.

Я пробовал следующие примеры:

Последний — единственный, который, кажется, даже близко. Однако у него есть две проблемы. Во-первых, он редактирует основные файлы, а во-вторых, когда я нажимаю на вкладку, он раскручивается и окрашивается. Chrome DevTools показывает сервер отчетов 404.

Может ли кто-нибудь предоставить мне приличную документацию или код, совместимый с Magento 1.6?


редактировать Добавление текста из последней ссылки, как это кажется, единственный, который работал удаленно.

  1. Переопределить файл /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)),
    ));
    
  2. Переопределить файл /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 ()
    );
    
    }
    
  3. Создать файл /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');
    }
    }
    ?>
    
  4. Теперь вам нужно создать файл шаблона. Идти к /app/design/adminhtml/default/default/template/modulename/customer/tab/ и создать custom.phtml,

-2

Решение

Удалось отследить некоторый из готового кода, который работает без каких-либо изменений в качестве отправной точки:

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>
2

Другие решения

  1. Приложение / код / ​​местные / пространство имен / модуль / и т.д. / 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>
    
  2. приложение / дизайн / 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>
    
  3. Приложение / код / ​​местные / пространство имен / модуль / блок / 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;
    }
    
    }
    
  4. приложение / дизайн / adminhtml / по умолчанию / по умолчанию / шаблон / пространство имен / module.phtml: содержимое вкладки:

    enter html code here
    
0

По вопросам рекламы [email protected]