如何将液体中的数据类型从数字更改为字符串?
这可用于在块内创建动态 CSS 类。但是,如果它作为整数出现,则不会将其识别为类。
{{block.id}} // Integer
Run Code Online (Sandbox Code Playgroud)
我在下面回答了我自己的问题并举了一个例子。
我想在 Shopify 网站中创建帐户后将客户重定向到结账页面。
\n\nShopify 提供了这种在客户登录时重定向的方法:
\n\n{% form \'customer_login\' %}\n <input type="hidden" name="checkout_url" value="/checkout"/>\nRun Code Online (Sandbox Code Playgroud)\n\n但将相同的方法应用于客户注册时,表单会在成功时重定向到结账,但会忽略错误检查:
\n\n {% form \'create_customer\' %}\n <input type="hidden" name="return_to" value="/checkout" />\nRun Code Online (Sandbox Code Playgroud)\n\n这种使用 HTML 表单而不是 Liquid 表单的方法会重定向到结帐,但客户尚未登录,这违背了结帐前创建帐户的目的:
\n\n <form method=\'post\' action=\'/checkout\' id=\'create_customer\' accept-charset=\'UTF-8\'>\n <input name=\'form_type\' type=\'hidden\' value=\'create_customer\'/> \n <input name="utf8" type="hidden" value="\xe2\x9c\x93">\nRun Code Online (Sandbox Code Playgroud)\n\n错误检查后有什么重定向的想法吗?谢谢!
\n在我的 Shopify 页面上,我有一堆产品的描述中包含奇怪的字符,我认为这些字符是从 CSV 导入的。如果要逐一检查并手动删除这些字符,工作量会很大。
\n\n我有这个正则表达式脚本可以在客户端删除它们:
\n\n$(function() {\n var regex = /\\?\xc3\x95\xc3\x8c_|_\xc5\x92\xe2\x80\x9a|[\xc5\xa0\xc5\xbd\xc3\x80\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x98\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc3\x9e\xc3\x9f\xc3\xb0\xc3\xbf_]/gi;\n\n $('.rte').html(function(i, oldHTML) {\n return oldHTML.replace(regex, ' ')\n .replace(/[^\\x00-\\x7F]|\\?/g, '');\n });\n});\nRun Code Online (Sandbox Code Playgroud)\n\n但我想移动类似服务器端的东西,并可能用液体重新创建它。这甚至可以用液体来做吗?如何在服务器端使用这个正则表达式?
\n\n编辑:
\n\n我写了这个hacky代码
\n\n{{ product.description | replace: '?\xc3\x8d\xc3\xad_' | replace: '\xc5\x92\xc3\xa6' | replace: '\xc3\xa4\xc3\xb3\xc2\xbb\xc3\xad\xcb\x86\xc3\xad_\xc3\xad\xe2\x80\x9a_' | replace: '\xc3\xad_\xc5\x92\xe2\x80\x9a\xc3\xad__' | replace: '\xcc\xb4\xc3\x8c_' | replace: '?\xc3\x95\xc3\x8c_' | replace: '?\xc3\xad\xc2\xb4\xc3\xad\xc3\xab_' | replace: '\xc3\x8c_\xc3\xa5\xc3\x87\xc3\x8c__' | replace: '\xc3\xa5\xc3\x8a' | replace: '?\xe2\x80\x99\xc2\xab\xc3\xad\xc3\xab\xc3\xad__' | replace: '?\xc3\xad_\xc5\x92\xc3\x87\xc3\xad_\xc3\xad\xe2\x80\x9a_' | replace: '\xc3\xad\xc2\xab\xc3\xad_' | replace: '?\xc3\xad?\xc3\xad__' | replace: '\xe2\x80\x99\xc3\x87\xc3\xad\xc3\xab_' | replace: '\xc3\xad\xc3\xab_\xc3\xad\xc2\xab\xc3\xad\xcb\x86\xc3\xad\xc3\xab__' | replace: …Run Code Online (Sandbox Code Playgroud) 您好,我对 Shopify 应用程序开发还很陌生。我使用 laravel 创建了 shopify 应用程序,现在生成了一个包含内容的 js 文件。我想要的是将此代码自动注入到shopify商店中,因此安装该应用程序的每个用户都会将代码自动添加到他的商店中。我目前阅读了有关脚本标签的信息,可能是插入它们的最佳方式,但我不清楚。我想要能帮助我解决这个问题的信息。提前致谢
我想知道是否有一种方法可以仅使用液体(Shopify 模板语言)来获取完整的URL。我知道提供了以下内容,但它们(甚至组合起来)似乎都没有实现它。它可以通过 javascript using 来完成window.location.href,但我想知道是否有一种仅液体的方法。对于我的使用来说,必须将 JavaScript 与我的液体结合起来使它变得更加复杂,因此我的问题。
{{ page.url }}
{{ shop.url }}
{{ shop.domain }}
{{ collection.url }}
{{ product.url }}
{{ blog.url }}
{{ article.url }}
{{ article.comment_post_url }}
{{ canonical_url }}
Run Code Online (Sandbox Code Playgroud)
例如,如果我的 URL 是www.website.com/blogs/myblog/tagged/?123,并且我想要整个 URL,包括 ?123。答案可能是否定的,但这似乎相当愚蠢,因为他们拥有以下所有选项,但不仅仅是整个 URL 的选项。就我而言,我将直接访问 href 形式的 URL,因此仅在页面加载时应用 Liquid 不是问题。
在分析我的 Shopify 网站上产品的 html 是否有错误时,我发现这个奇怪的错误重复了 6 次:““图标”列表中的每个字典都应包含一个非空的 UTF8 字符串字段“类型”。”
我试图找出这个问题的根源,但谷歌并没有真正清楚地解决这个问题的根源,因为它把我带到了网站的第一个字符串“<!doctype html>”
任何人都可以帮我解决这个问题吗?
编辑:此处截图:i.imgur.com/y2gjnIr.png
要查看错误,如 JosefZ 所述:转到该站点,右键单击 => Inspect(或 Ctrl+Shift+I)。
按照本教程,我尝试在 Nextjs 中提交表单,但在尝试 POST 到我的 api 路由时收到 405 错误。我尝试过使用 axios 和 fetch api。这看起来应该很简单,但我不确定我哪里出错了。我缺少什么明显的东西吗?谢谢!
/调查/创建
const handleSubmit = async (event) => {
event.preventDefault();
const testData = {
title: surveyTitle,
};
const res = await fetch("/api/survey", {
method: "POST",
body: JSON.stringify({
dataName: testData,
}),
headers: {
"Content-Type": "application/json",
},
});
};
Run Code Online (Sandbox Code Playgroud)
/api/调查
export default function handler(req, res) {
console.log(req.body);
res.status(200).json(JSON.stringify({ name: 'Success' }))
}
Run Code Online (Sandbox Code Playgroud) 如何配置 Vite 构建以使用 script type="text/javascript"进行输出
我使用的是 Vite 2.7.2,当完成 HTML 中的代码构建后,输出脚本标签如下
<script type="module" crossorigin src="/assets/index.0c37d7b4.js"></script>
Run Code Online (Sandbox Code Playgroud)
我想要的是
<script type="text/javascript" crossorigin src="/assets/index.0c37d7b4.js"></script>
Run Code Online (Sandbox Code Playgroud)
代码在type="module"下运行良好,但是当我手动将其替换为type="text/javascript"时,代码中断并输出以下错误
Uncaught TypeError: Cannot set properties of null (setting 'innerHTML')
Run Code Online (Sandbox Code Playgroud)
这是构建之前的原始代码
const elements = {
root: document.querySelector('#root'),
};
elements.root.innerHTML = `Loading...`;
Run Code Online (Sandbox Code Playgroud)
我希望类型为type="text/javascript" 的原因是 Shopify 平台只接受类型为“text/javascript”的脚本
我无法找到液体应用程序对象。Shopify 在这里提到了这个对象https://shopify.dev/changelog/new-app-liquid-object但是当我们单击其中的链接(https://shopify.dev/api/liquid/objects#app)时对于物体来说,什么也没有出现。我正在尝试访问主题应用程序扩展液体文件中应用程序拥有的元字段。即使我在液体文件中提到应用程序对象,它也会引发错误(未定义的对象“应用程序”)。有人可以让我知道如何访问主题扩展中应用程序拥有的元字段吗?