为什么我们必须对CMS中的链接使用“存储”,例如<a href=“{{store url='home'}}"> home </a>


8

要在CMS中插入链接,我们使用以下代码:

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

这个“商店”关键字在做什么,为什么叫“商店”?

还有其他可用关键字来代替store吗?

是否也可以只写URL,而不用“存储”?

如果是,正确的语法是什么?


您想达到什么目的?
user487772 2013年

@Tim我想知道插入链接的替代方法。
MageDev

2
实际上,皮肤和媒体是2个不同的指令。一个从外观文件夹中获取一个文件,相同的代码可以呈现2个不同的图像(取决于主题),而media指令从media文件夹中获取一个文件。为什么需要替代存储指令的替代方法?有一个,它的工作原理是...关闭外壳。
Marius

2
@ Michel06实际上,这是IT的编程部分,我们希望只有一种方法可以执行给定的任务。在这种情况下,{{store url =“”}}指令将为您提供链接。
benmarks

1
@zus您可以使用下面给出的条件。{{if order.customer_group_id == 1}} <p>Test Code</p> {{/if}}
MageDev

Answers:


6

Magento语法以在CMS内容中使用URL:

  • 获取皮肤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='...'
7ochem '17年

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="..."}} 使用主题后备机制,获取当前主题中图像,JavaScript或CSS的URL。
  • {{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="..."}}输出一个自定义变量(在“ 系统”>“自定义变量”中全局维护)
  • {{htmlescape var="..." allowed_tags="..."}}将“ var”中给出的文本中的特殊字符转换为HTML实体。可选的“ allowed_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 /变量X上方法y()的结果。请参见模板vars / placeholders
  • {{depend X}}...{{/depend}}仅在变量X为true时才输出它们之间的内容(请注意,此处不能使用逻辑表达式,只能使用变量或变量上的方法。 {{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

我只想在我的app / locale / en_US / template / email / sales / order_new.html代码=> paste.ofcode.org/GKsBaztggNpXrmSws7cEyG第30-40行中添加if-else条件,感谢@Fabian Schmengler
zus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.