plugseg Posted May 12, 2015 Share Posted May 12, 2015 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 More sharing options...
Daniel - PrestaBR Posted May 13, 2015 Share Posted May 13, 2015 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 More sharing options...
plugseg Posted May 14, 2015 Author Share Posted May 14, 2015 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 More sharing options...
selectshop.at Posted May 15, 2015 Share Posted May 15, 2015 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 More sharing options...
plugseg Posted May 15, 2015 Author Share Posted May 15, 2015 (edited) 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 May 15, 2015 by plugseg (see edit history) Link to comment Share on other sites More sharing options...
Daniel - PrestaBR Posted May 15, 2015 Share Posted May 15, 2015 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now