【问题标题】:How To Add Hash To Slug in apostrophe-cms?如何在撇号 cms 中向 Slug 添加哈希?
【发布时间】:2019-08-13 01:25:02
【问题描述】:

Apostrophe-cms 自动将哈希 (#) 转换为 (-),如下例所示,

我的蛞蝓是 /aboutdvld/dvldprofile/inspiringwords#anything

它会像这样自动转换 /aboutdvld/dvldprofile/inspiringwords-anything ?!

有什么方法可以在不制作自定义模块的情况下解决这个问题!

提前致谢

【问题讨论】:

  • 您是否试图破坏浏览器的哈希锚功能?
  • 我有 jquery 标签,我想运行这个功能!所以我需要在浏览器中拥有带有哈希的 div id

标签: apostrophe-cms


【解决方案1】:

由于网络服务器在设计上永远不会看到 URL 的“#”部分,除非经过修改,否则 Apostrophe 不可能在其 slug 中提供带有“#”的页面。

在我看来,您正试图将您的页面细分为标签。但是出于 SEO 的目的,它仍然是一页。

因此,最好的方法很可能是在您的页面模板中创建一个名为“选项卡”的单例,它由一个自定义小部件提供支持,您可以在一个名为 tabs-widgets 的模块中定义该小部件。请参阅撇号文档中的 custom widgets。该小部件将具有 array 类型的 tabs 属性,并且数组中的每个选项卡都将具有 sluglabel 字段。

然后您可以编写一个小部件播放器(同样,请参阅该文档的页面),它利用 jQuery 选项卡或您选择的工具来实现选项卡行为,除非用户具有编辑权限。您可以通过检查data.widget._edit 标志在您的widget.html 文件中说明这一点。

widget.html 中,您将遍历data.widget.tabs 并为每个子区域输出子区域,使用data.widget 代替data.page 对象并传递tab.slug 作为名称。一个问题是区域名称不能包含连字符,因此您可能需要编写一个 nunjucks 辅助函数来帮助将它们转换为 camelCase:

// inside your module, server side index.js code in construct
self.addHelpers({
  camelName: function(s) {
    return self.apos.utils.camelName(s);
  }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多