Pourquoi devons-nous utiliser "stocker" pour les liens dans les CMS comme <a href=!{{store url='home'}}<> home </a>

8

Pour insérer des liens dans le CMS, nous utilisons ce code:

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

Que fait ce mot-clé "magasin" et pourquoi est-il appelé "magasin"?

Et y a-t-il d'autres mots clés disponibles à la place du magasin ?

Est-il également possible d'écrire uniquement l'URL, sans "store"?

Si oui, quelle est la syntaxe correcte?

MageDev
la source
Qu'essayez-vous de réaliser?
user487772
@Tim, je veux connaître une autre façon d'insérer un lien.
MageDev
2
En fait, la peau et les médias sont deux directives différentes. On prend un fichier du dossier skin, et le même code peut rendre 2 images différentes (selon le thème) et la directive media prend un fichier du dossier media. Pourquoi auriez-vous besoin d'une alternative à la directive store? Il y en a un, ça marche ... affaire close.
Marius
2
@ Michel06 En fait, c'est la partie programmation de l'informatique, où nous espérons qu'il n'y a qu'une seule méthode pour effectuer une tâche donnée. Dans ce cas, la directive {{store url = ""}} vous obtiendra un lien.
benmarks
1
@zus, vous pouvez utiliser une condition comme celle indiquée ci-dessous. {{if order.customer_group_id == 1}} <p>Test Code</p> {{/if}}
MageDev

Réponses:

6

Syntaxes Magento pour utiliser les URL dans le contenu CMS:

  • obtenir l'URL SKIN: {{skin url='images_foldername/image_name.jpg'}}- obtenir l'image du dossier skin du package de thème configuré
  • obtenir l'URL du média: {{media url='magento-image.jpg'}}- récupérer l'image du dossier multimédia
  • obtenir l'URL du magasin: {{store url=''}}magento-page.html- obtenir l'URL du domaine du magasin actif
  • obtenir l'URL de base: {{base url=''}}magento-page.html- obtenir l'URL du domaine du site Web de base.
Kaushik Chavda
la source
magento-page.htmldevrait être à l'intérieur de la directive dans le url='...'ou direct_url='...'.
7ochem
18

Comme expliqué dans Où est le code pour "{{store url =" example / example "}} {{store}} est l'une des soi-disant directives de modèle utilisées par le CMS et les e-mails transactionnels

Il est documenté comme suit:

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

Ainsi, "magasin" est l'abréviation de "URL du magasin" et fait référence à une URL dans le magasin, c'est-à-dire un lien dans le magasin . Il ajoute automatiquement l'URL de base correcte (important pour les modèles d'e-mail où vous ne pouvez pas utiliser de liens relatifs) et résout certains autres paramètres (voir ci-dessous)

Comment l'utiliser

Vous pouvez lui passer un itinéraire , comme vous le feriez avec Mage::getUrl():

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

Aussi avec des paramètres:

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

Ou des paramètres de requête, par exemple pour ajouter des filtres dans la navigation en couches:

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

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

Si vous souhaitez spécifier une URL arbitraire à la place, utilisez direct_url, de cette façon, Magento ajoute uniquement l'URL de base et laisse l'URL donnée telle qu'elle est:

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

D'autres directives URL sont

  • {{skin url="..."}} pour les URL des images, JavaScript ou CSS dans le thème actuel, en utilisant le mécanisme de secours du thème.
  • {{media url="..."}}pour les URL à des images ou d' autres médias dans le répertoire des médias (par défaut: /media/)
  • {{protocol url="www.domain.com/"}}pour les URL externes arbitraires , mais avec le protocole actuel (http ou https)
  • {{protocol http="http://url" https="https://url"} pour afficher différentes URL dépendent du protocole actuel
  • {{protocol}} pour simplement sortir "https" ou "http"

Autres directives non URL

  • {{config path="..."}} affiche une valeur de configuration
  • {{customvar code="..."}}génère une variable personnalisée (gérée globalement dans Système> Variables personnalisées )
  • {{htmlescape var="..." allowed_tags="..."}}convertit les caractères spéciaux du texte, donnés en "var" en entités HTML. Le paramètre optionnel "allowed_tags" peut contenir une liste de balises séparées par des virgules qui doivent être conservées intactes (par exemple "h1, h2, strong, em"). Il est très utile dans les modèles d'e-mail car vous pouvez passer une variable de modèle: comme ceci:{{htmlescape var=$customer.firstname}}
  • {{inlinecss file="..."}}charge CSS à partir d'un fichier et l'ajoute en tant que feuille de style en ligne. Utile pour les e-mails.
  • {{block type="..." id="..." output="..." ...}} instancie et restitue tout type de bloc Magento
  • {{layout area="..." handle="..." ...}}charge une poignée de mise en page entière (définie dans les fichiers XML de mise en page) et rend son premier bloc. Des paramètres supplémentaires sont transmis à tous les blocs.

Notez que les variables et blocs personnalisés doivent être ajoutés à la liste blanche avant de pouvoir être utilisés. Voir: APPSEC-1057 Comment ajouter des variables ou des blocs aux tableaux de la liste blanche

Autres directives non URL (modèles d'e-mail uniquement)

  • {{var X}}, {{var X.y()}}sortie de la variable de modèle X / résultat de la méthode y () sur la variable X. Voir Variables de modèle / espaces réservés
  • {{depend X}}...{{/depend}}afficher le contenu entre seulement si la variable X est vraie (notez que vous ne pouvez pas utiliser d'expressions logiques ici, juste des variables ou des méthodes sur les variables. {{if X}}...{{else}}...{{/if}}les mêmes mais avec un bloc "else" facultatif.
  • {{template config_path="..."}}inclure un autre modèle d'e-mail basé sur une valeur de configuration, par exemple "design / email / header". Par défaut, les modèles d'e-mail "en-tête" et "pied de page" sont inclus dans tous les autres modèles d'e-mail.
  • {{include template="..."}}inclut un autre modèle. Ce modèle héritera de toutes les variables de modèle de la variable actuelle et vous pouvez passer des paramètres supplémentaires avec name="value".

Variables dans les paramètres

Tout ce qui peut être traité par {{var}}(voir ci-dessus), peut également être utilisé comme paramètre pour une autre directive, avec la syntaxe suivante:

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

Limites

  • Vous ne pouvez pas imbriquer {{if}}et {{depend}}directives:

    {{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}}
  • Vous ne pouvez pas utiliser de directives dans les paramètres d'autres directives. Par exemple:

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

    ne marche pas

Fabian Schmengler
la source
{{store url = "customer / account / login"}} cela fonctionne également sur M2
Goldy
Je veux juste ajouter une condition if-else dans mon application / locale / en_US / template / email / sales / order_new.html code => paste.ofcode.org/GKsBaztggNpXrmSws7cEyG ligne 30 - 40, toute aide merci @Fabian Schmengler
zus