Почему мы должны использовать «хранилище» для ссылок в CMS, таких как <a href= пространства‹widthstore url='home' coming угровождающемуся> home </a>

8

Чтобы вставить ссылки в CMS, мы используем этот код:

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

Что делает это ключевое слово "store" и почему оно называется "store"?

И есть ли другие ключевые слова, доступные вместо магазина ?

Можно ли написать только URL, без «магазина»?

Если да, какой правильный синтаксис?

MageDev
источник
Чего ты пытаешься достичь?
user487772
@ Я хочу узнать альтернативный способ вставки ссылки.
MageDev
2
На самом деле скин и медиа - это две разные директивы. Каждый берет файл из папки скина, и тот же код может отображать 2 разных изображения (в зависимости от темы), а директива media берет файл из папки мультимедиа. Зачем вам нужна альтернатива для хранения директивы? Есть один, он работает ... дело закрыто.
Мариус
2
@ Michel06 На самом деле это программная часть ИТ, где мы надеемся, что есть только один метод для выполнения данной задачи. В этом случае директива {{store url = ""}} даст вам ссылку.
отметки
1
@zus вы можете использовать условие, как указано ниже. {{if order.customer_group_id == 1}} <p>Test Code</p> {{/if}}
MageDev

Ответы:

6

Синтаксис Magento для использования URL в контенте CMS:

  • get SKIN URL: {{skin url='images_foldername/image_name.jpg'}}- получить изображение из папки скина настроенного пакета темы
  • получить медиа URL: {{media url='magento-image.jpg'}}- получить изображение из медиа папки
  • получить URL магазина: {{store url=''}}magento-page.html- получить URL домена рабочего магазина
  • получить базовый URL: {{base url=''}}magento-page.html- получить URL домена базового сайта.
Каушик Чавда
источник
magento-page.htmlдолжно быть внутри директивы в url='...'или direct_url='...'.
июня
18

Как объясняется в разделе Где находится код для "{{store url =" example / example "}} {{store}} является одной из так называемых шаблонных директив, используемых CMS и транзакционными электронными письмами

Это задокументировано следующим образом:

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

Таким образом, «store» - это сокращение от «store url» и относится к URL-адресу в магазине, что означает ссылку в магазине . Он автоматически добавляет правильный базовый URL (важно для шаблонов электронной почты, где вы не можете использовать относительные ссылки) и разрешает некоторые другие параметры (см. Ниже)

Как это использовать

Вы можете пройти его по маршруту , как если бы это было с Mage::getUrl():

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

Также с параметрами:

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

Или параметры запроса, например, чтобы добавить фильтры в многоуровневую навигацию:

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

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

Если вы хотите указать произвольный URL вместо этого, используйте direct_url, таким образом, Magento только добавляет базовый URL и оставляет данный URL таким, какой он есть:

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

Другие URL-директивы

  • {{skin url="..."}} для URL-адресов к изображениям, JavaScript или CSS в текущей теме, используя механизм отката темы.
  • {{media url="..."}}для URL - адресов для изображений или других средств массовой информации в каталоге медиа ( по умолчанию: /media/)
  • {{protocol url="www.domain.com/"}}для произвольных внешних URL, но с текущим протоколом (http или https)
  • {{protocol http="http://url" https="https://url"} показывать разные URL в зависимости от текущего протокола
  • {{protocol}} просто вывести «https» или «http»

Другие не-URL директивы

  • {{config path="..."}} выводит значение конфигурации
  • {{customvar code="..."}}выводит пользовательскую переменную (поддерживается глобально в System> Custom Variables )
  • {{htmlescape var="..." allowed_tags="..."}}преобразует специальные символы в тексте, заданном в «var», в объекты HTML. Необязательный параметр «allow_tags» может содержать разделенный запятыми список тегов, которые должны быть сохранены (например, «h1, h2, strong, em»). Это наиболее полезно в шаблонах электронной почты, потому что вы можете передать переменную шаблона: вот так:{{htmlescape var=$customer.firstname}}
  • {{inlinecss file="..."}}загружает CSS из файла и добавляет его в виде встроенной таблицы стилей. Полезно для писем.
  • {{block type="..." id="..." output="..." ...}} создает и отображает любой тип блока Magento
  • {{layout area="..." handle="..." ...}}загружает весь дескриптор макета (определенный в файлах XML макета) и отображает его первый блок. Дополнительные параметры передаются всем блокам.

Обратите внимание, что пользовательские переменные и блоки должны быть внесены в белый список, прежде чем их можно будет использовать. См .: APPSEC-1057 Как добавить переменные или блоки в таблицы белого списка.

Другие не-URL директивы (только шаблоны электронной почты)

  • {{var X}}, {{var X.y()}}выходная переменная шаблона X / результат метода y () для переменной X. См. Template vars / placeholder
  • {{depend X}}...{{/depend}}выводите содержимое между ними, только если переменная X имеет значение true-ish (обратите внимание, что здесь нельзя использовать логические выражения, только переменные или методы для переменных. То {{if X}}...{{else}}...{{/if}}же самое, но с необязательным блоком "else".
  • {{template config_path="..."}}включите другой шаблон электронной почты, основанный на значении конфигурации, например, «design / email / header». По умолчанию шаблоны электронной почты «верхний и нижний колонтитулы» включены во все остальные шаблоны электронной почты.
  • {{include template="..."}}включает в себя другой шаблон. Этот шаблон наследует все переменные шаблона от текущей, и вы можете передавать дополнительные параметры с помощью name="value".

Переменные в параметрах

Все, что может быть обработано {{var}}(см. Выше), также может быть использовано в качестве параметра для другой директивы со следующим синтаксисом:

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

Ограничения

  • Вы не можете вложить {{if}}и {{depend}}директивы:

    {{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}}
  • Вы не можете использовать директивы в параметрах других директив. Например:

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

    не работает

Фабиан Шменглер
источник
{{store url = "customer / account / login"}} это также работает на M2
Goldy
Я просто хочу добавить условие if-else внутри моего приложения / locale / en_US / template / email / sales / order_new.html code => paste.ofcode.org/GKsBaztggNpXrmSws7cEyG строка 30 - 40, любая помощь, спасибо @Fabian Schmengler
zus