给出你的 Cartpinion

您的朋友需要一些帮助来决定我们商店中的一些商品。 向他们伸出援助之手。

您的朋友重视您的意见,请留下您的评论和想法以帮助他们做出决定。

<脚本> var 购物车 ID = null; var 购物车令牌 = null; var 用户 ID = null; var 用户名 = null; var 共享状态 = null; // 在cookie中设置唯一标识符 函数 setUserID() { // 检查用户是否有带有唯一标识符的cookie 如果(!文档。曲奇饼包括('用户ID')) { // 生成随机唯一标识符 const userID =generateUniqueID(); // 设置具有唯一标识符的cookie 文档。cookie = `userID=${userID};过期=2026 年 1 月 1 日星期四 00:00:00 UTC;路径=/`; } } // 生成随机唯一标识符 函数generateUniqueID() { // 这只是一个简单的例子;您可能想要使用更可靠的方法来生成 ID 返回数学。随机的()。到字符串(36)。子字符串(2, 9); } // 从cookie中获取用户的唯一标识符 函数 getUserID() { 常量 cookies = 文档。曲奇饼分裂(';'); for (令 i = 0; i < cookies.长度;我++){ const cookie = cookies[i].修剪(); 如果(饼干。开始于('userID=')) { 返回cookie。子串(7); // 提取'userID='之后的ID } } // 如果cookie不存在,则返回null或进行相应处理 返回空值; } // 使用示例 设置用户ID(); // 在cookie中设置用户的唯一标识符 用户 ID = getUserID(); // 从cookie中获取用户的唯一标识符 安慰。日志(用户ID); // 获取当前URL const url = 新 URL(窗口.地点。链接); // 获取“token”参数的值 const params = new URLSearchParams(url.搜索); const 标记 = 参数。获取('令牌'); 安慰。日志(令牌); // 输出:abc123 cart Token = token;如果(令牌){ 的(窗口。会话存储。getItem('sharedStatus')) { 共享状态=真; } 别的 { 共享状态=假; } 常量请求数据 = { 类型:'获取购物车', 用户ID:用户ID, 额外的: { 共享状态:共享状态, }, 数据: { 令牌, }, }; fetch('/apps/询问朋友', { 方法:'POST', 标题:{ '内容类型':'应用程序/json', }, 正文:JSON。字符串化(reqData), }) 。然后((响应)=>响应。json()) 。然后((数据)=> { 窗户。会话存储。setItem('sharedStatus', true); 安慰。日志(数据); 初始化自定义页面(数据); // 处理来自服务器的响应 }) 。捕获((错误)=> { 安慰。error('发送请求时出错:', error); }); } const stringToSlug = (str) => { 返回字符串 。toLowerCase() // 转换为小写 。Replace(/[^a-zA-Z0-9 -]/g, '') // 删除特殊字符 。Replace(/\s+/g, '-') // 用连字符替换空格 。Replace(/-+/g, '-') // 删除连续的连字符 。修剪(); // 修剪前导/尾随空格 }; 异步函数 getproductbyApi(vid, pid) { 常量请求数据 = { 类型:'获取产品', 用户ID:用户ID, 额外:{}, 数据: { 视频, 进程号, }, }; 尝试 { const 响应 = 等待 fetch('/apps/ask-a-friend', { 方法:'POST', 标题:{ '内容类型':'应用程序/json', }, 正文:JSON。字符串化(reqData), }); 常量数据 = 等待响应。json(); 安慰。日志(数据); // 处理来自服务器的响应 返回数据; } 捕获(错误){ 安慰。error('发送请求时出错:', error); 抛出错误; } } 异步函数 getProductByHandle(handle) { 尝试 { const 响应 = 等待 fetch(`${window.Shopify.routes.root}产品/${handle}.js`); 常量产品 = 等待响应。json(); 安慰。log('该产品的标题是',product.标题); // 对产品数据进行进一步的操作 退回产品; } 捕获(错误){ 安慰。error('获取产品时出错:', error); throw new Error('获取产品失败'); } } // 根据commenterId过滤评论的函数 函数filterCommentsByCommenterId(评论,commenterId){ 返回评论。过滤器((评论)=>评论。评论者Id ===评论者Id); } 异步函数 initCustomPage(data) { var mainHTML = ''; var 好评论 = ``; var badComment = ``; 对于(让数据项。大车购物车项目){ var 注释 = ``; 让句柄 = stringToSlug(item.处理); const getproduct = 等待 getproductbyApi(item.变体 ID,项目。产品ID); const 产品 = 等待 getProductByHandle(getproduct.产品产品处理); // 访问产品数据 安慰。日志(产品); 让 prevComment = ''; const FilteredComments = filterCommentsByCommenterId(item.评论、用户ID); 安慰。日志(过滤后的评论); if(过滤评论。长度 > 0) { 上一条评论 = 过滤评论[0]。内容; } 如果(项目。评论长度 > 0) { 对于(让 com 为 item.评论) { 如果(com.喜欢== 1) { 评论 += `

${com.commenterName} 说:

${com.content}

`; } 如果(com.不喜欢== 1) { 评论 += `

${com.commenterName} 说:

${com.content}

`; } } } mainHTML += `
<图片 src="${product.featured_image}" alt="产品图片" 类=“购物车产品图像” >

海蓝色

${product.price / 100} ${Shopify.currency.active}

${product.description || ''}

${comment}
`; } 如果(数据。大车购物车项目长度==0){ 文档。查询选择器('.rte')。innerHTML = '未找到购物车'; } 文档。查询选择器('.购物车产品主分区')。内部HTML = mainHTML; 如果(数据。大车所有者 ID == 用户 ID) { 文档。查询选择器('#askbtn')。点击(); var learnmore = 文档。查询选择器全部('.购物车产品-了解更多'); 了解更多。forEach(函数(元素){ 元素。风格显示='块'; }); var 删除按钮 = 文档。查询选择器全部('.购物车产品删除按钮'); 删除按钮。forEach(函数(元素){ //元素。风格显示='弯曲'; 元素。onclick = 函数 (e) { 安慰。log('删除点击'); 安慰。日志(例如目标。getAttribute('数据-id')); 安慰。日志(例如目标。getAttribute('数据卡')); var 请求数据 = { 类型:'删除项目', 用户ID:用户ID, 额外:{}, 数据: { 购物车 ID:e.目标。getAttribute('数据卡'), 项目 ID:e.目标。getAttribute('数据 ID'), }, }; fetch('/apps/询问朋友', { 方法:'POST', 标题:{ '内容类型':'应用程序/json', }, 正文:JSON。字符串化(reqData), }) 。然后((响应)=>响应。json()) 。然后((数据)=> { 安慰。日志(数据); 窗户。地点。重新加载(); // 初始化自定义页面(数据) // 处理来自服务器的响应 }) 。捕获((错误)=> { 安慰。error('发送请求时出错:', error); }); }; }); 安慰。log('购物车所有者'); // 获取类名为“ask-comment-area”的所有 div var AskCommentAreas = 文档。查询选择器全部('.提问评论区'); // 循环遍历每个div并隐藏它 问评论区。forEach(函数(元素){ 元素。风格显示=“无”; }); // 获取类为“cart-product-feedback-btn”的元素 var反馈按钮=文档。查询选择器('.购物车-产品-反馈-btn'); // 改变属性值 反馈按钮。setAttribute('数据类型', '结帐'); 反馈按钮。innerText = '结帐'; } 别的 { var learnmore = 文档。查询选择器全部('.购物车产品-了解更多'); 了解更多。forEach(函数(元素){ 元素。风格显示=“无”; }); var 删除按钮 = 文档。查询选择器全部('.购物车产品删除按钮'); 删除按钮。forEach(函数(元素){ 元素。风格显示=“无”; }); } // 获取所有 cart-product-like-dislike 元素 var cartProductLikeDislikeElements = 文档。查询选择器全部('.购物车产品喜欢不喜欢'); // 迭代每个 cart-product-like-dislike 元素 购物车产品喜欢不喜欢元素。forEach(函数(元素){ // 获取当前元素内的喜欢和不喜欢按钮 var likeButton = 元素。查询选择器('.类似购物车产品'); var dislikeButton = 元素。查询选择器('.购物车产品不喜欢'); // 为点赞按钮添加点击事件监听 喜欢按钮。addEventListener('点击', function () { // 将“active”和“liked”类添加到like按钮 喜欢按钮。类列表。添加('活跃','喜欢'); // 从不喜欢按钮中删除“active”类 dislike Button。类列表。删除('活动');不喜欢按钮。类列表。删除('不喜欢'); // 将“空”类添加到不喜欢按钮不喜欢按钮。类列表。添加('空'); 喜欢按钮。类列表。删除('空'); }); // 给dislike按钮添加点击事件监听 dislike Button.addEventListener('click', function () { // 将“active”和“disliked”类添加到dislike按钮 dislike Button.类列表。add('活跃', '不喜欢'); // 从“like”按钮中删除“active”类,如Button。类列表。删除('活动'); // 从不喜欢按钮中删除“空”类(如果存在)不喜欢按钮。类列表。删除('空'); 喜欢按钮。类列表。添加('空'); }); }); 文档。查询选择器('.购物车-产品-反馈-btn')onclick = 函数 (e) { e.防止默认(); //文档。查询选择器(“#ask2”)。风格显示=“无” //文档。查询选择器(“#ask3”)。风格显示=“块” 安慰。log('发送反馈'); 如果这。getAttribute('数据类型') == '反馈') { 文档。查询选择器('#ask2')。风格显示=“无”; 文档。查询选择器('#ask3')。风格显示='块'; 窗户。滚动到(0, 0); var getFeedBackDiv = 文档。查询选择器全部('.购物车-产品-单'); //购物车产品单 让反馈数据 = []; for (让 getFeedBackDiv 的反馈) { 让 tmp = { 购物车项目:反馈。查询选择器('.购物车产品反馈')。getAttribute('数据 ID'), 反馈意见反馈。查询选择器('.购物车产品反馈')。价值, 喜欢:反馈。查询选择器('.评论积极的')类列表。包含('喜欢')? 1:0, 不喜欢:反馈。查询选择器('.评论积极的')类列表。包含('不喜欢')? 1:0, }; 反馈数据。推(tmp); 购物车 ID = 反馈。查询选择器('.购物车产品反馈')。getAttribute('数据卡'); } 常量请求数据 = { 类型:'保存反馈', 用户ID:用户ID, 额外:{}, 数据: { 评论者ID:用户ID, 购物车 ID: 购物车 ID, 购物车令牌: 购物车令牌, 反馈数据:反馈数据, }, }; 安慰。日志(reqData); fetch('/apps/询问朋友', { 方法:'POST', 标题:{ '内容类型':'应用程序/json', }, 正文:JSON。字符串化(reqData), }) 。然后((响应)=>响应。json()) 然后((数据)=> { 安慰。日志(数据); // 初始化自定义页面(数据) // 处理来自服务器的响应 }) 。捕获((错误)=> { 安慰。error('发送请求时出错:', error); }); } 别的 { 安慰。log('已调用结账'); 窗户。地点。href = `${window.Shopify.routes.root}结账`; } }; 文档。querySelector('#askbtnlast').onclick = 函数 (e) { 安慰。log('最后点击的按钮'); e.防止默认(); 如果(文档。querySelector('#askbtnlast').getAttribute('数据完成')) { 窗户。地点。href = 窗口.购物。路线。根; 返回假; } //文档。查询选择器('#ask1')。风格显示=“无”; //文档。查询选择器('#ask2')。风格显示='块'; var AskButton = 文档。querySelector('#askbtnlast'); 询问按钮。禁用=真; 询问按钮。内部文本 = '正在处理。'; 让 Askname = 文档。querySelector('#thankyouname'); 让askemail = 文档。querySelector('#thankyouemail'); var getFeedBackDiv = 文档。查询选择器全部('.购物车-产品-单'); //购物车产品单 让反馈数据 = []; for (让 getFeedBackDiv 的反馈) { 让 tmp = { 购物车项目:反馈。查询选择器('.购物车产品反馈')。getAttribute('数据 ID'), 评论者姓名:询问姓名。价值, 评论者电子邮件:askemail。价值, }; 反馈数据。推(tmp); 购物车 ID = 反馈。查询选择器('.购物车产品反馈')。getAttribute('数据卡'); } 常量请求数据 = { 类型:'更新反馈', 用户ID:用户ID, 额外:{}, 数据: { 评论者ID:用户ID, 购物车 ID: 购物车 ID, 购物车令牌: 购物车令牌, 反馈数据:反馈数据, }, }; fetch('/apps/询问朋友', { 方法:'POST', 标题:{ '内容类型':'应用程序/json', }, 正文:JSON。字符串化(reqData), }) 。然后((响应)=>响应。json()) 然后((数据)=> { 安慰。日志(数据); 文档。查询选择器('#thankyouname')值=''; 文档。查询选择器('#thankyouemail')值=''; // 禁用按钮并更改文本 var AskButton = 文档。querySelector('#askbtnlast'); 询问按钮。删除属性('禁用'); 询问按钮。innerText = '我们去购物吧'; 询问按钮。setAttribute('数据完成', true); 文档。查询选择器全部('.询问朋友部分第一个框')。forEach(函数(元素){ 元素。风格显示=“无”; }); 文档。查询选择器('.谢谢您输入容器')。风格显示=“无”; // 初始化自定义页面(数据) // 处理来自服务器的响应 }) 。捕获((错误)=> { 安慰。error('发送请求时出错:', error); }); }; var allclose = 文档。查询选择器全部('.询问朋友部分关闭图标'); 全部关闭。forEach(函数(元素){ 元素。onclick = 函数 (e) { 安慰。log('点击关闭按钮'); e.防止默认(); 窗户。地点。href = 窗口.购物。路线。根; }; }); }