Para você que sempre quis saber mais sobre as funções de redirecionamento do Magento, criei este post para apresentar os métodos de redirecionamento do Magento.
Primeiramente todos os métodos referentes á redirecionamento estão presentes na class Mage_Core_Controller_Varien_Action, portanto estes métodos devem ser chamados diretamente dentro dos controllers.
[php]
/* Redireciona para uma URL definida */
$this->_redirectUrl($url);
/* Redireciona para um caminho específico
* Neste caso é o path é quebrado em 3 partes: módulo, controller e action.
* Por exemplo: ‘customer/account/login’, irá direcionar para o módulo customer do Magento, procurar pelo controller Account (AccountController.php) e disparar o método login (loginAction()).
* Para informar que se deseja utilizar um controller do mesmo módulo ou uma action do mesmo controller pode-se utilizar o * (asterisco), portanto supondo que estamos no módulo customer, no controller account e na action login, podemos informar o path ‘*/*/dashboard’
*
$this->_redirect(‘module/controller/action’);
/* Redirecionar para a página de sucesso */
$this->_redirectSuccess($defaultUrl);
/* Redirecionar para a página de erro */
$this->_redirectError($defaultUrl);
/* Definir a URL de redirecionamento no response do controller */
$this->_redirectReferer($defaultUrl=null);
/* Identifica a URL através de todos os métodos aceitáveis (HTTP_REFERER, de forma regular ou um parâmetro encodado em base64) */
$this->_getRefererUrl();
/* Verifica uma URL para ser utilizada internament */
$this->_isUrlInternal($url);
[/php]
Exemplos:
Como foi dito, você deve utilizar estes métodos de redirecionamento dentro de suas classes de controllers, como demonstrado abaixo:
[php]
$this->_redirect($path, $arguments=array());
//OR,
$this->_redirectUrl($url);
[/php]
Outra forma de redirecionar fora da classe controller (um model por exemplo):
[php]
$url = "http://example.com";
Mage::app()->getFrontController()->getResponse()->setRedirect($url);
[/php]
Para redirecionar para um caminho com parâmetros:
[php]
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl($path, $arguments));
[/php]
Espero que este post tenha lhe ajudado!
Um abraço e até a próxima!
Tiago Sampaio
Gostaria de saber como posso fazer o redirecionamento direto no produto.
Att
Agcommerce
LikeLike
Você pode utilizar o método $this->_redirect(‘catalog/product/view’, array(‘id’ => [10])); dentro do controller.
Abraços,
Tiago
LikeLike
Olá, tenho um site onde gostaria que quando clicasse na img do produto ele foce enviado para o link da loja desse produto.
Os produtos são recebidos via xml e cadastrados automaticamente, queria que quando alguém quiser clicar no produto ele ir para o site do fornecedor e não para a pagina de produtos.
Alguma ideia de como isso pode ser feito?
LikeLike
Olá Anderson,
A solução neste caso é bem simples, pode ser feito por um desenvolvedor frontend. Você deve:
Criar o atributo com o link externo, caso não exista.
Mapear todos os arquivos de listagem de produtos disponíveis na sua instalação Magento.
Editar os arquivos de listagem de produtos para substituir o link dá página de produto original pelo link externo.
Abraços,
– Tiago
LikeLike