prestashop 1.7, как добавить конфигурационную ссылку модуля в админтаб? - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть модуль, и я хочу увидеть его в админтаб (слева). Но при нажатии на ссылку я хочу перенаправить на настройку модуля.

Здесь много картинок, которые помогут вам разобраться.

Мой админтаб

enter image description here

Когда я нажимаю на ссылку, моя страница

enter image description here

Но я хочу перейти к своему модулю конфигурации

enter image description here

У меня есть AdminYoutubeHomeController

Как в этом я могу сделать перенаправление на мой модуль? Я ищу, но ничего не нашел ...

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 09 ноября 2018

Перенаправьте ваш административный контроллер в конфигурацию модуля:

class AdminYourModuleController extends ModuleAdminController
{
    public function __construct()
    {
        Tools::redirectAdmin(Context::getContext()->link->getAdminLink('AdminModules').'&configure=yourmodule');
    }
}

А затем отобразите конфигурацию модуля с функцией getContent() в главном классе вашего модуля.

0 голосов
/ 24 апреля 2019

из presta 1.7 определена вкладка свойств для добавления вкладки в административное меню администратора в вашем модуле, задайте это открытое свойство и добавьте файл в yourmoduledirectory / controllers / admin / {class_name} Controller.php, который расширяет ModuleAdminController, например:

class AdminPLevelController extends ModuleAdminController
{


    public function renderView()
    {
        Tools::redirectAdmin($this->context->link->getAdminLink('AdminHome'));
    }
  }

и мой файл модуля выглядит следующим образом (мое имя модуля plevel)

<?php

if (!defined('_PS_VERSION_')) {
    exit;
}

class Plevel extends Module
{
    public $tabs = array(
        array(
            'name' => 'Price Level', // One name for all langs
            'class_name' => 'AdminPLevel',/**this is class_name defined in above code*/
            'visible' => true,
            'parent_class_name' => 'ShopParameters',
        ));
    public function __construct()
    {
        $this->name="plevel";
        $this->tab="dashboard";
        $this->version="1.0.0";
        $this->author="javaheri.ghazaleh@gmail.com";
        $this->need_instance=0;
        $this->ps_versions_compliancy=array('min'=>'1.6','max'=>_PS_VERSION_);
        $this->bootstrap=true;
        $this->context=Context::getContext();
        $this->displayName=$this->l("plevel");
        $this->description=$this->l("change order print page");
        $this->confirmUninstall=$this->l('Are you sure you want to uninstall');
        parent::__construct();
    }

    public function install()
    {
        if (!parent::install())
            return false;
        return true;
    }

    public function uninstall()
    {
        if (!parent::uninstall())
            return false;
        return true;
    }


}
0 голосов
/ 06 ноября 2018

Посмотрите эту ссылку для создания adminCOntroller на модуле: https://webkul.com/blog/create-modules-admin-controllers-without-creating-tab-prestashop/


В Prestashop при создании модуля в основном нам нужно создавать контроллеры администратора. В модуле, чтобы заставить работать контроллер администратора, мы должны создать запись о классе этого администратора в таблице _DB_PREFIX _. ’tab. И вообще, мы делаем все эти записи во время установки модуля.

Таким образом, если вы создаете свои административные контроллеры в своем модуле, вы можете создать его в двух случаях -

Вы хотите создать вкладку для вашего администратора. Вы хотите создать свой контроллер администратора, не создавая для него вкладку.

Например, вам нужен контроллер, который открывается по щелчку ссылки и во многих других случаях.

Давайте разберем процесс обоих случаев с примерами-

Позволяет нам создать функцию с именем inatallTab (), которая делает записи в таблице «tab» для контроллеров администратора нашего модуля.

// Lets you want to create a child tab under 'Shipping' Tab. As we know Shipping Tab's class name is 'AdminParentShipping'
$this->installTab('AdminMyControllerName', 'My Tab Name', 'AdminParentShipping');

// Lets you want to create a parent tab. Then call the installTab() like below example-
$this->installTab('AdminMyControllerName', 'My Parent Tab Name');

CASE-1: Контроллер администратора с вкладкой

/*
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <contact@prestashop.com>
*  @copyright  2007-2016 PrestaShop SA
*  @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/
public function installTab($yourControllerClassName, $yourTabName, $tabParentControllerName = false)
{
    $tab = new Tab();
    $tab->active = 1;
    $tab->class_name = $yourControllerClassName; 
    // e.g. $yourControllerClassName = 'AdminMyControllerName'
    // Here $yourControllerClassName is the name of your controller's Class

    $tab->name = array();

    foreach (Language::getLanguages(true) as $lang) {

        $tab->name[$lang['id_lang']] = $yourTabName;
        // e.g. $yourTabName = 'My Tab Name'
        // Here $yourTabName is the name of your Tab
    }

    if ($tab_parent_controller_name) {

        $tab->id_parent = (int) Tab::getIdFromClassName($tabParentControllerName);
        // e.g. $tabParentControllerName = 'AdminParentAdminControllerName'
        // Here $tabParentControllerName  is the name of the controller under which Admin Controller's tab you want to put your controller's Tab

    } else {

        // If you want to make your controller's Tab as parent Tab in this case send id_parent as 0
        $tab->id_parent = 0;
    }

    // $this->name is the name of your module to which your admin controller belongs.
    // As we generally create it in module's installation So you can get module's name by $this->name in module's main file

    $tab->module = $this->name;
    // e.g. $this->name = 'MyModuleName'

    $tab->add();
    // make an entry of your tab in the _DB_PREFIX_.'tab' table.
}

Давайте посмотрим, как создаются ваши дочерние или родительские вкладки в вашем бэк-офисе с помощью приведенного ниже снимка экрана.

enter image description hereenter image description here

CASE-2: Admin Controller без создания вкладки

Если вы хотите создать свой административный контроллер без создания вкладки в своем модуле, вам нужно внести небольшие изменения в приведенный выше код, который создает записи вашего административного контроллера в таблице _DB_PREFIX _. ’Tab.

Нам просто нужно передать -1 для поля id_parent в коде. Давайте посмотрим на код для этого случая.

/*
* 2007-2016 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <contact@prestashop.com>
*  @copyright  2007-2016 PrestaShop SA
*  @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/
$tab = new Tab();
$tab->active = 1;
$tab->class_name = $class_name;
$tab->name = array();

foreach (Language::getLanguages(true) as $lang) {
    $tab->name[$lang['id_lang']] = $tab_name;
}

//If you don't want to create a tab for your admin controller then Pass id_parent value as -1.
$tab->id_parent = -1;

$tab->module = $this->name;

return $tab->add();

Итак, как вы видели, если мы установим значение if_parent в таблице вкладок _DB_PREFIX _. ’Как -1. Оно не создаст никакой вкладки для вашего контроллера администратора, и ваш контроллер администратора будет работать нормально.

После вышеописанного процесса вам просто нужно создать класс вашего контроллера администратора в вашем модуле и написать код для функций, которые вам нужны, с вашего контроллера администратора.


Привет

...