Apostrophe CMS上的预定义小部件

时间:2019-11-29 17:30:09

标签: apostrophe-cms

我一直在使用Apostrophe CMS,它很棒。我想做的是在页面上预定义小部件,而无需用户添加这些小部件,并使这些小部件具有占位符数据。例如,我希望撇号图像已经在区域中的页面上并具有占位符图像。然后,用户将更改内容以满足他们的需求。那可能吗?

1 个答案:

答案 0 :(得分:1)

完成此操作的一种较易碎的方法是使用apostrophe-pages beforeInsert方法,并检测要应用样本数据的某些条件,然后使用样本JSON填充适当的属性。

  1. 由编辑者首次创建时填充您希望看到的页面。

  2. 按照Apostrophe的存储方式(db.aposDocs.find({slug: '/sample'}或其他任何方式)从数据库的预填充属性中复制JSON。

  3. 在任何地方看到从示例中复制的_id字段,将其替换为self.apos.utils.generateId()(不要替换您实际引用的内容的ID)

  4. lib/modules/apostrophe-pages/index.js


module.exports = {
  types: [
    {
      name: 'default',
      label: 'Default'
    }
    // .. other page types
  ],
  construct: function(self, options) {
    self.beforeInsert = function(req, page, options, callback) {

      ////////////
      // Should i pre populate this new page with sample data?
      if (page.type === 'default') {
        page.body = {
          "type" : "area",
          "items" : [
            {
              "by" : "id",
              "_id" : self.apos.utils.generateId(),
              "pieceIds" : [
                "ck2z5b8y0002xs6q7jcthp2ds"
              ],
              "relationships" : {
                "ck2z5b8y0002xs6q7jcthp2ds" : {
                  "left" : null,
                  "top" : null,
                  "width" : null,
                  "height" : null,
                  "x" : null,
                  "y" : null
                }
              },
              "type" : "apostrophe-images"
            },
            {
              "_id" : self.apos.utils.generateId(),
              "type" : "apostrophe-rich-text",
              "content" : "<p><strong><em>Authors often misinterpret the mom as a surest quilt, when in actuality it feels more like a rimless jeep. Far from the truth, an iffy russia without porcupines is truly a sycamore of jessant farmers.</em></strong></p>\n\n<p> </p>\n"
            }
          ]
        }
      }
      return setImmediate(callback);
    };
  }
};

这将使用一个包含body小部件和apostrophe-images小部件的区域来预先填充页面的apostrophe-rich-text属性。

您可以通过在您感兴趣的页面类型上添加一个字段来进一步限制此行为,该字段允许编辑者选择退出此行为并在beforeInsert条件下进行检查。

同样,此示例有点僵化,因为您将图像ID硬编码到beforeInsert中。您可以通过运行带有特定标签(“样本”)的图像查询来进一步获得幻想,生成在填充您的媒体资源之前,请先将lorem ipsum文本与外部模块等结合起来。