Por que precisamos usar "store" para links no CMS, como <a href=pt-BR{{store url='home'}}"> home </a>

8

Para inserir links no CMS, usamos este código:

<a href="{{store url='home'}}">home</a>

O que esta palavra-chave "loja" está fazendo e por que é chamada "loja"?

E existem outras palavras-chave disponíveis no local da loja ?

Também é possível escrever apenas o URL, sem "armazenamento"?

Se sim, qual é a sintaxe correta?

MageDev
fonte
O que você está tentando alcançar?
user487772
@ Tim eu quero saber maneira alternativa para inserir link.
MageDev
2
Na verdade, pele e mídia são duas diretivas diferentes. Um deles pega um arquivo da pasta skin e o mesmo código pode renderizar 2 imagens diferentes (dependendo do tema) e a diretiva media pega um arquivo na pasta media. Por que você precisaria de uma alternativa para armazenar diretiva? Existe um, funciona ... caso encerrado.
Marius
2
@ Michel06 Na verdade, essa é a parte de programação da TI, onde esperamos que exista apenas um método para executar uma determinada tarefa. Nesse caso, a diretiva {{store url = ""}} fornecerá um link para você.
benmarks
11
@zus você pode usar uma condição como a abaixo. {{if order.customer_group_id == 1}} <p>Test Code</p> {{/if}}
MageDev 19/03

Respostas:

6

Sintaxes do Magento para usar URLs no conteúdo do CMS:

  • obter URL da PELE: {{skin url='images_foldername/image_name.jpg'}}- obter imagem da pasta de capa do pacote de temas configurado
  • obter URL da mídia: {{media url='magento-image.jpg'}}- obtém imagem da pasta de mídia
  • obter URL da loja: {{store url=''}}magento-page.html- obter URL do domínio da loja funcional
  • obter URL base: {{base url=''}}magento-page.html- obter URL do domínio do site base.
Kaushik Chavda
fonte
magento-page.htmldeve estar dentro da diretiva no url='...'ou direct_url='...'.
7ochem
18

Conforme explicado em Onde está o código para "{{store url =" example / example "}} {{store}} é uma das chamadas diretivas de modelo usadas pelo CMS e pelos emails transacionais

Está documentado da seguinte forma:

/**
 * Retrieve store URL directive
 * Support url and direct_url properties
 */

Portanto, "loja" é a abreviação de "URL da loja" e refere-se a um URL na loja, o que significa um link dentro da loja . Ele adiciona automaticamente o URL base correto (importante para modelos de email em que você não pode usar links relativos) e resolve alguns outros parâmetros (veja abaixo)

Como usá-lo

Você pode passar uma rota da mesma maneira que faria com Mage::getUrl():

{{store url="customer/account/login"}}

Também com parâmetros:

{{store url="catalog/product/view" id="42"}}

Ou consulte os parâmetros, por exemplo, para adicionar filtros na navegação em camadas:

{{store url="catalog/category/view" id="3" _query_color=red}}

=> example.com/url-to-category-3/?color=red

Se você deseja especificar um URL arbitrário, use direct_url, desta forma, o Magento apenas adiciona o URL base e deixa o URL fornecido como ele é:

{{store direct_url="terms.html#delivery"}}

Outras diretivas de URL são

  • {{skin url="..."}} para URLs para imagens, JavaScript ou CSS no tema atual, usando o mecanismo de fallback de tema.
  • {{media url="..."}}para URLs para imagens ou outra mídia no diretório de mídia (padrão /media/:)
  • {{protocol url="www.domain.com/"}}para URLs externos arbitrários , mas com o protocolo atual (http ou https)
  • {{protocol http="http://url" https="https://url"} mostrar URLs diferentes depende do protocolo atual
  • {{protocol}} para apenas enviar "https" ou "http"

Outras diretivas sem URL

  • {{config path="..."}} gera um valor de configuração
  • {{customvar code="..."}}gera uma variável personalizada (mantida globalmente em Sistema> Variáveis ​​personalizadas )
  • {{htmlescape var="..." allowed_tags="..."}}converte caracteres especiais no texto, fornecidos em "var" para entidades HTML. O parâmetro opcional "allowed_tags" pode conter uma lista separada por vírgula de tags que devem ser mantidas intactas (por exemplo "h1, h2, strong, em"). É mais útil em modelos de email, porque você pode passar uma variável de modelo: assim:{{htmlescape var=$customer.firstname}}
  • {{inlinecss file="..."}}carrega CSS de um arquivo e o adiciona como folha de estilos embutida. Útil para e-mails.
  • {{block type="..." id="..." output="..." ...}} instancia e renderiza qualquer tipo de bloco Magento
  • {{layout area="..." handle="..." ...}}carrega um identificador de layout inteiro (definido nos arquivos XML de layout) e renderiza seu primeiro bloco. Parâmetros adicionais são passados ​​para todos os blocos.

Observe que variáveis ​​e blocos personalizados devem estar na lista de permissões antes que possam ser usados. Consulte: APPSEC-1057 Como adicionar variáveis ​​ou blocos às tabelas da lista branca

Outras diretivas que não são de URL (apenas modelos de email)

  • {{var X}}, {{var X.y()}}variável de modelo de saída X / resultado do método y () na variável X. Consulte Vars / espaços reservados para modelos
  • {{depend X}}...{{/depend}}saída de conteúdo entre apenas se a variável X for verdadeira (observe que você não pode usar expressões lógicas aqui, apenas variáveis ​​ou métodos nas variáveis. {{if X}}...{{else}}...{{/if}}o mesmo, mas com um bloco opcional "else".
  • {{template config_path="..."}}inclua outro modelo de email com base em um valor de configuração, por exemplo "design / email / header". Por padrão, os modelos de email "cabeçalho" e "rodapé" são incluídos em todos os outros modelos de email.
  • {{include template="..."}}inclui outro modelo. Este modelo herdará todas as variáveis ​​do modelo atual e você poderá passar parâmetros adicionais com name="value".

Variáveis ​​em parâmetros

Qualquer coisa que possa ser processada por {{var}}(veja acima) também pode ser usada como parâmetro para outra diretiva, com a seguinte sintaxe:

{{store url=$x}}
{{store url=$x.y()}}

Limitações

  • Você não pode aninhar {{if}}e {{depend}}diretivas:

    {{if x}}{{depend y}}     THIS WORKS    {{/depend}}{{/if}}
    {{depend x}}{{if y}}     THIS WORKS    {{/if}}{{/depend}}
    
    {{depend x}}{{depend y}} DOES NOT WORK {{/depend}}{{/depend}}
    {{if x}}{{if y}}         DOES NOT WORK {{/if}}{{/if}}
    
  • Você não pode usar diretivas em parâmetros de outras diretivas. Por exemplo:

    {{store url={{config path="..."}}}}

    não funciona

Fabian Schmengler
fonte
{{store url = "customer / account / login"}} isso também funciona no M2
Goldy
Eu só quero adicionar a condição if-else dentro do meu aplicativo / locale / pt_BR / template / email / sales / order_new.html code => paste.ofcode.org/GKsBaztggNpXrmSws7cEyG linha 30 - 40, qualquer ajuda, obrigado @Fabian Schmengler
zus