Variáveis Personalizadas – Mario SAM
Algumas vezes queremos exibir uma informação na página que não faz parte dos produtos, não pertence ao conjunto de atributos dos clientes, nem a categorias, lojas ou páginas.
Vamos ver alguns exemplos para entender melhor. Talvez você tenha criado uma regra de desconto no site depois de ler o post: Desconto de 10% no Boleto.
E agora você quer exibir essa informação em páginas, produtos, email's, etc. Como faz?
Uma solução seria usar variáveis personalizadas do sistema, para criar valores que possam ser atualizados uma única vez e que reflitam em todas as páginas ao mesmo tempo.
Você pode por exemplo, colocar seu usuário de skype para atendimento ao cliente. Mas se mudar o login de atendimento, não precisa acessar todas as páginas para mudar a informação, basta alterar a variável personalizada.
No seu painel de administrador, acesse:
Sistema > Variáveis Personalizadas [+ Criar Variável]
Código – Informe um nome bem sugestivo, pois esse será o ID que você vai utilizar para recuperar o valor posteriormente nas páginas.
Nome do Identificador – Para controle interno, mas também pode ser exibido no frontend.
Valor Modo HTML – Esse é o valor padrão exibido nas páginas quando você faz referência à variável.
Valor Modo Texto – Valor alternativo ao modo html. Para páginas e email's que não aceitam tags html.
Caso você tenha várias visões de lojas instalado, depois de salvar a variável poderá modificar/personalizar os valores por visão.
Usando a variável pelo backend
Quando você cria páginas, blocos estáticos, e email's, no campo "Conteúdo" existem as opções de inserir imagens, widget's, e variáveis peronsalizadas. Então vamos fazer um teste acessando:
E no campo "Conteúdo" clique no botão [{{i}} Inserir Variável… ]
Uma pop-up será aberta com as opções de variáveis do sistema, e logo abaixo suas variáveis personalizadas. Basta clicar no link e o código será inserido automaticamente.
{{customVar code=valor_desconto}}
Um scriptlet como este deve ser inserido no conteúdo. Basta salvar e atualizar a página no frontend para ver o resultado. Ele deve exibir o valor informado no campo "Valor Modo HTML".
Usando a variável via programação
Pode ser que você queira personalizar o seu tema usando essas variáveis, então vejamos como recuperar esses valores usando php.
Carregar as informações da variável usando o ID (da tabela):
Mage::getModel('core/variable')->load(1);
Carregar as informações da variável usando o código:
Mage::getModel('core/variable')->loadByCode('valor_desconto');
Depois que você carrega o objeto, pode acessar seu conteúdo usando:
<?php //carrega o objeto para a variavel $v $v = Mage::getModel('core/variable')->loadByCode('valor_desconto'); echo $v->getValue('text'); //exibe o valor em modo texto echo $v->getValue('html'); //exibe o valor em modo html echo $v->getName(); //exibe o nome da variavel echo $v->getCode(); //exibe o codigo da variavel ?>
//carrega o objeto para a variavel $v
$v = Mage::getModel('core/variable')->loadByCode('valor_desconto');
echo $v->getValue('text'); //exibe o valor em modo texto
echo $v->getValue('html'); //exibe o valor em modo html
echo $v->getName(); //exibe o nome da variavel
echo $v->getCode(); //exibe o codigo da variavel
A matemática do desconto
Tenho reparado que muita gente tem dificuldades em calcular o desconto quando a calculadora não tem a opção %. Então me sinto na obrigação de esclarecer essa "pequena" dúvida.
Valor cheio do produto (multiplicado pelo) valor do desconto (divide tudo por) 100 (é igual) valor real do desconto.
ex.: (500*10)/100 = 50 (10% de 500 reais é igual a 50 reais de desconto)
Então agora basta pegar o valor inicial do produto e subtrair pelo valor calculado no desconto, no caso:
ex.: 500-50 = 450 (500 reais menos os 10% calculado é igual a 450 reais)
Agora sim podemos ver como fica isso no código.
Preço com 10% de desconto no boleto
Se eu não mostrar como aplicar esse desconto dinamicamente na listagem do catálogo tenho certeza que vai chover email's me perguntando como faz, então vamos ao exemplo. Abra o arquivo new.phtml que fica em:
Não altere arquivos em base/default, faça uma cópia para default/default, ou então para seu template/tema customizado.
E abaixo da linha $this->getPriceHtml insira o seguinte código:
<?php $i = Mage::getModel('core/variable')->loadByCode('valor_desconto')->getValue('text'); echo $this->__("A vista no boleto ").$_coreHelper->currency( $_product->getFinalPrice()-(($_product->getFinalPrice()*$i)/100), true, false); ?>
$i = Mage::getModel('core/variable')->loadByCode('valor_desconto')->getValue('text');
echo $this->__("A vista no boleto ").$_coreHelper->currency( $_product->getFinalPrice()-(($_product->getFinalPrice()*$i)/100), true, false);
Veja que estou usando exatamente os códigos mostrados no início do post. Primeiro carrego o objeto já com o valor em modo texto para a variável $i. Depois o que eu preciso fazer é ler o preço do produto com getFinalPrice e aplicar o cálculo matemático explicado anteriormente.
Nesse exemplo em especial, eu utilizei o $_coreHelper->currency para formatar a moeda em R$, e pra isso precisei declarar no início da página:
Mas isso é necessário apenas para as páginas que não utilizam coreHelper ainda.
O interessante em usar o desconto dessa forma nas páginas, é que basta alterar um único campo no backend para que todos os preços sejam reajustados automaticamente assim que você clicar no botão salvar.