Jump to content

Adicionar mais uma opção na listagem de produtos


Recommended Posts

Olá, criei um módulo que está funcionando corretamente, porém, eu preciso adicionar uma nova opção na lista de produtos (ondem ficam o Editar, duplicar e apagar, quero adicionar mais uma opção que será redirecionada para um controller que eu irei criar), porém, não sei como fazer, já pesquisei várias formas de fazer um "override", mas até agora sem sucesso. Alguém poderia me indicar um caminho?

Link to comment
Share on other sites

Para fazer overrides de controllers do admin, crie uma pasta no módulo / servidor. Ex.: /override/controllers/admin/AdminProductsController.php

Para fazer overrides do template correspondente, crie uma pasta no módulo / servidor. Ex.: /override/controllers/admin/themes/default/template/controllers/products/informations.tpl

 

Normalmente o override funciona bem, desde que siga os parâmetros de override de uma função dentro do controller e/ou faça o override da função toda.

Quanto ao override do template, deve sempre conter o arquivo original todo, mais os itens que você incluiu.

 

Boa sorte. 

 

Link to comment
Share on other sites

Olá Daniel, muito obrigado pela resposta, eu tentei fazer isso:

 

Copiei o arquivo: controllers/admin/AdminProductsController.php para:

modules/meu_modulo/override/controllers/admin

 

E alterei a seguinte informação nesse arquivo:

 

De:

        $this->bulk_actions = array(
            'delete' => array(
                'text' => $this->l('Delete selected'),
                'icon' => 'icon-trash',
                'confirm' => $this->l('Delete selected items?')
            )
        );

 

Para:

 

        $this->bulk_actions = array(
            'novo_link' => array(
                'text'    => $this->l('Cadastrar'),
                'icon'    => 'fa-plus-square'
            ),
            'delete' => array(
                'text' => $this->l('Delete selected'),
                'icon' => 'icon-trash',
                'confirm' => $this->l('Delete selected items?')
            )
        );

 

E não mudou em nada.

 

Então tentei achar o template da listagem dos produtos (index.php?controller=AdminProducts), mas sem muito sucesso.

 

Fiz o que informou na sua postagem copiando o arquivo:

 

/themes/default/template/controllers/products/informations.tpl

 

Para:

 

modules/meu_modulo/override/controllers/admin/themes/default/template/controllers/products/informations.tpl

 

Mas nada mudou, faltou alguma coisa?

 

Mais uma vez muito obrigado!

Link to comment
Share on other sites

Qual a funcao que vc. quer adicionar ? Cadastrar ? Se for esta funcao mexe em alguns outros controllers, porque checa primeiramente os campos necessários. Nao tao fácil com um override somente. Neste caso vc. vai ter que aprender a rotina primeiramente.

Link to comment
Share on other sites

Olá, eu quero adicionar um novo link que eu possa redirecionar para um controller que eu irei fazer.

 

Ficando assim:

 

Editar

[Novo Link]

Duplicar

Apagar

 

Esse controller eu desenvolverei tudo, a página de cadastro, alteração, etc...

 

Obrigado!

Edited by plugseg (see edit history)
Link to comment
Share on other sites

Olá Daniel, muito obrigado pela resposta, eu tentei fazer isso:

 

Copiei o arquivo: controllers/admin/AdminProductsController.php para:

modules/meu_modulo/override/controllers/admin

 

E alterei a seguinte informação nesse arquivo:

 

De:

        $this->bulk_actions = array(

            'delete' => array(

                'text' => $this->l('Delete selected'),

                'icon' => 'icon-trash',

                'confirm' => $this->l('Delete selected items?')

            )

        );

 

Para:

 

        $this->bulk_actions = array(

            'novo_link' => array(

                'text'    => $this->l('Cadastrar'),

                'icon'    => 'fa-plus-square'

            ),

            'delete' => array(

                'text' => $this->l('Delete selected'),

                'icon' => 'icon-trash',

                'confirm' => $this->l('Delete selected items?')

            )

        );

 

E não mudou em nada.

 

Então tentei achar o template da listagem dos produtos (index.php?controller=AdminProducts), mas sem muito sucesso.

 

Fiz o que informou na sua postagem copiando o arquivo:

 

/themes/default/template/controllers/products/informations.tpl

 

Para:

 

modules/meu_modulo/override/controllers/admin/themes/default/template/controllers/products/informations.tpl

 

Mas nada mudou, faltou alguma coisa?

 

Mais uma vez muito obrigado!

 

Não é tão simples assim...

 

Como a Conny falou, vc precisa estudar como funciona os overrides... (http://doc.prestashop.com/display/PS16/Overriding+default+behaviors).

Tem alguns exemplos lá pra vc entender.

 

Você não pode substituir uma parte qualquer do código.

Vc pode substituir uma função inteira (copia ela inteira e edita o que vc precisa);

Ou pode incluir uma nova função dentro da classe;

Ou pode incluir parâmetros em um array (acho que é o seu caso), com array_merge();

Ou pode adicionar um item (variável, objeto, array, etc...) nova dentro de uma função;

 

Sempre referenciando a função principal (Ex: parent::AdminProductsController();)  ou, dependendo do que estiver alterando, pode precisar retornar uma função da classe AdminController (ex: AdminController::AdminProductsController();)

 

Tem vários tópicos sobre o assunto...

https://www.prestashop.com/forums/topic/214754-solved-override-admin-controllers-in-15/

 

Dá uma estudada...

 

Boa sorte

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...