如何在Visual Studio中格式化.liquid(Shopify liquid)代码.通过设置语言作为HTML我可以做到但同时,我不能使用Shopify自动完成.当我切换到liquid.html然后我可以使用自动完成但我无法格式化代码.有没有什么办法可以在Visual Studio中使用另一种语言和格式代码作为另一种语言?
在Liquid中,如何找出集合包含的所有值?有print_r功能还是类似?
下面的示例将返回项目标题,但我想知道项目还包含哪些其他变量.
item.title
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在开发Shopify主题,我正在使用https://github.com/Shopify/shopify_theme将我的文件更新为Shopify.不幸的是,我无法让它工作......当我尝试上传/更新文件时,我得到一个错误,如...
.....ruby/1.9.1/net/http.rb:762:in `initialize': getaddrinfo: nodename nor servname provided, or not known (SocketError)
Run Code Online (Sandbox Code Playgroud)
我在尝试安装gem时已经看到了这个错误,显然这是MacOS的"典型"问题.我通过将路由器DNS更改为Google的路由器来解决问题(mac dns看起来行为不端).
不幸的是,在尝试使用我安装的gem(Shopify_theme)时会出现同样的问题.我对这个gem/rails世界很新,所以我真的不知道如何解决这个问题.
有什么好主意吗?
编辑: 我的坏,我实际上找到了解决方案.对不起这篇文章,至少我会解释我是如何修复它的.
我查看了这个shopify_theme gem的源文件,注意它在商店url之前加上"http://"(用"theme configure api_key password store_url"定义).因为我首先使用http://定义了store_url,所以会出现此错误.如果您收到相同的错误,请尝试编辑config.yml文件并删除"http://".
我正在构建一个Shopify应用程序,我有兴趣自动将液体内容添加到商店的主题中.
我想在模板中包含一个代码段,但仅在代码段文件存在时才包含.有什么办法可以吗?
现在我只是使用:
{% include 'snippetName' %}
Run Code Online (Sandbox Code Playgroud)
但这会引发错误:
Liquid error: Could not find asset snippets/snippetName.liquid
Run Code Online (Sandbox Code Playgroud)
我需要这样一个功能的原因是因为我有一个后台进程,稍后会添加该代码段.
这应该是简单的,但尽管搜索我无法找到任何解决方案.如何在液体文件中使用vue模板标签?由于Vue和liquid都使用相同的花括号,我无法渲染任何视图数据:
<img src="{{ product.featured_image }}" />
Run Code Online (Sandbox Code Playgroud)
结果是:
<img src>
Run Code Online (Sandbox Code Playgroud)
我的父视图组件中有36个产品.
当我尝试使用自定义分隔符时:
new Vue({
delimiters: ['@{{', '}}'],
Run Code Online (Sandbox Code Playgroud)
它不会用Vue解析:
获取https://inkkas.com/collections/@ 404(未找到)
更新:我能够使用v-bind访问Vue数据:但我仍然需要能够使用分隔符.
如果以不安全的方式使用Shopify,Shopify会自动转义值,但我没有在液体宝石中找到此功能.
例:
模板: <div data="{{ user_name }}">{{ user_name }}</div>
用户名: '" onclick="alert(\'XSS\')'
Shopify将其呈现为:
<div data="" onclick="alert('XSS')"">" onclick="alert('XSS')"</div>
Run Code Online (Sandbox Code Playgroud)
液体宝石呈现为:
<div data="" onclick="alert('XSS')">" onclick="alert('XSS')"</div>
Run Code Online (Sandbox Code Playgroud)
Ruby代码:
markup = '<div data="{{ user_name }}">{{ user_name }}</div>'
template = Liquid::Template.parse(markup)
template.render!('user_name' => '" onclick="alert(\'XSS\')')
Run Code Online (Sandbox Code Playgroud)
Shopify如何做到这一点?
我知道escape液体中有过滤器,或者我可以在后端逃避值.但Shopify的解决方案看起来更安全:如果忘记对值进行编码并且代码看起来更清晰,则不会出现XSS漏洞:{{ value }}而不是{{ value | encode }}
谢谢
对于这个简单的问题,我深表歉意,但我对 Web 开发和 JavaScript 还很陌生。
我想导入一个我使用 npm 安装的包,特别是 shopify-buy 按照这里的指南:https ://shopify.github.io/js-buy-sdk/
该包在我的 node_modules 文件夹中,我正在尝试使用 import Client from 'shopify-buy';
当我尝试在 Chrome 中加载所有内容时,导入行出现错误
Uncaught SyntaxError: Unexpected identifier
Run Code Online (Sandbox Code Playgroud)
Firefox 错误有点不同: import declarations may only appear at top level
我究竟做错了什么?
编辑:
导入行是我的 JavaScript 文件中的第一行。我的 HTML 文件正确链接到 JS 文件(我认为)。
shopify.js
// Functions for SHOPIFY
import Client from 'shopify-buy';
const client = Client.buildClient({
domain: 'xxxxx.myshopify.com',
storefrontAccessToken: 'xxxxx'
});
Run Code Online (Sandbox Code Playgroud)
索引.html
<script src="javascript/shopify.js"></script>
Run Code Online (Sandbox Code Playgroud) 有没有办法在单个shopify调用中使用多个变体ID获取多个变体详细信息.实际上,我想获得使用shopify电话订购的所有产品变型的价格.
我知道使用id获取单个变体细节的方法
GET /admin/variants/#{variant_id}.json
/admin/variants/808950810.json
我正在尝试使用块设置来过滤块数组。我可以使用以下语法按“类型”等属性进行过滤:
\n\n{% assign example = section.blocks | where: "type", "photos" %}
我需要做的是按块设置进行过滤,如下所示:
\n\n{% assign example = section.blocks | where: settings.collection, collection.handle %}
上面的例子默默地失败了。
\n\n注意:目前我正在使用带有 for 循环和 if 语句的捕获来完成我需要的操作,然后使用 split \xe2\x80\x94 进行分配,但代码非常臃肿,并且执行所有这些操作都是为了一个简单的过滤操作看起来很荒谬。我发现自己总是感觉自己在与液体战斗,我想我希望它可能比我想象的更优雅一点。
\n