streams/doc/webpage-element-import.md

2 KiB

Webpage element import

There are two methods of importing webpage elements: uploading a zip file or referencing a local cloud files folder. Both methods require that the webpage elements are specified using a specific folder structure. The import tool makes it possible to import all the elements necessary to construct an entire website or set of websites. The goal is to accommodate external development of webpages as well as tools to simplify and automate deployment on a hub.

Folder structure

Element definitions must be stored in the repo root under folders called

/pages/
/blocks/
/layouts/

Each element of these types must be defined in an individual subfolder using two files: one JSON-formatted file for the metadata and one plain text file for the element content.

Page elements

Page element metadata is specified in a JSON-formatted file called page.json with the following properties:

  • title
  • pagelink
  • mimetype
  • layout
  • contentfile

Example

Files:

/pages/my-page/page.json
/pages/my-page/my-page.bbcode

Content of page.json:

{
	"title": "My Page",
	"pagelink": "mypage",
	"mimetype": "text/bbcode",
	"layout": "my-layout",
	"contentfile": "my-page.bbcode"
}

Layout elements

Layout element metadata is specified in a JSON-formatted file called layout.json with the following properties:

  • name
  • description
  • contentfile

Example

Files:

/layouts/my-layout/layout.json
/layouts/my-layout/my-layout.bbcode

Content of layout.json:

{
	"name": "my-layout",
	"description": "Layout for my project page",
	"contentfile": "my-layout.bbcode"
}

Block elements

Block element metadata is specified in a JSON-formatted file called block.json with the following properties:

  • name
  • title
  • mimetype
  • contentfile

Example

Files:

/blocks/my-block/block.json
/blocks/my-block/my-block.html

Content of block.json:

{
	"name": "my-block",
	"title": "",
	"mimetype": "text/html",
	"contentfile": "my-block.html"
}