在无头CMS (或解耦CMS)中,前端检索的内容需要被识别(以某种方式)。这就是我被困的地方。我可以描述我对平台不可知论的内容如何被识别的猜测(参见下面的猜测)。但是,我在任何地方都找不到尝试和测试方法的真实确认,详细说明解耦后的前端如何以一种有意义的、可识别的方式从内容存储库请求内容。
在哪里可以找到对无头CMS (或解耦CMS)体系结构的这一核心方面的直接描述?
最近我对“无头CMS”这个词很感兴趣。
似乎不乏文章和博客文章解释:
但是,这些解释似乎总是指向打算开始使用无头CMS的读者,而不是那些想尝试编写无头CMS的工程师。
最后,在反复尝试阅读我正在阅读的文章之后,我抓住了构建在无头CMS中的单一的、根本性的创新:
网络开发的一种传统方法是在以下几个方面保持实质性的分离:
在这个模型中,书面和媒体内容没有被列为(第四)单独的关注点,因为它在整个结构中隐式地交织在一起。
HTML标记:<button type="button">Launch Jaguar Slideshow</button>CSS显示一个下拉阴影。Javascript的动画幻灯片。但是,传统上不能将文本内容分开:
从标记结构中:
<button type="button">…</button>但是--如果我正确理解--这就是无头CMS所能实现的:
<button type="button"> . </button>可能包含:启动美洲虎<button type="button"> . </button>可能包含:启动Leopard<button type="button"> . </button>可能包含: Launch等。到目前为止,我甚至不确定我是否正确地理解了一切--我也从未使用过模板语言--但是,我的第一个(附带的)问题是:
另外,虽然上面的模板语言倾向于只使用HTML,但无头CMS中的模板引擎类型会将内容插入到任何结构中(即。不仅在web文档中进入HTML,而且也进入RSS提要的XML,或者进入社交媒体平台组件,或者进入本机应用程序的UI结构等等)。
我的第二个主要问题是:
我最好的猜测是类似于下面的JSON,其中我尝试只表达内容与自身的关系(因此它在结构上是不可知的,并且可以被查询并返回到任何结构中)。
{
"Summary":{
"Title":"Apples",
"Created":"[TIMESTAMP HERE]",
"Last Modified":"[TIMESTAMP HERE]",
"ShortDesc":"An 8-10 word description of Apples here",
"LongDesc":"A 20-30 word intro to Apples here."
},
"Related":{
"Parents":[
"Woodland_Fruit"
],
"Siblings":[
"Blackberries",
"Cherries",
"Pears"
],
"Children":[
"Granny Smith",
"Braeburn",
"Gala",
"Red Delicious"
]
},
"Media":{
"Images":{
"Hero_1":{
"Sizes":[
],
"URL":"[URL HERE]",
"Title":"Title Here",
"Alt":"Alternative text here",
"Created":"[TIMESTAMP HERE]",
"Credits":{
"Photographer":""
},
"Licence":{
"Type":"",
"URL":"",
"Holder":""
}
},
"Primary_1":{
"Sizes":[
],
"URL":"[URL HERE]",
"Title":"Title Here",
"Alt":"Alternative text here",
"Created":"[TIMESTAMP HERE]",
"Credits":{
"Photographer":""
},
"Licence":{
"Type":"",
"URL":"",
"Holder":""
}
},
"Associated_1":{
"etc.":"etc."
},
"Associated_2":{
"etc.":"etc."
}
}
},
"Editorial":{
"Primary":{
"Title":"Hesperides and Beyond",
"Author":"Ann Onne",
"Created":"[TIMESTAMP HERE]",
"Last Modified":"[TIMESTAMP HERE]",
"Last_Modified":"[TIMESTAMP HERE]",
"Sections":[
{
"Paragraphs" : [
{
"Paragraph": "[SECTION 1, PARAGRAPH 1 HERE]",
"Pull_Quotes": [
"PULLQUOTE HERE"
]
},
{
"Paragraph": "[SECTION 1, PARAGRAPH 2 HERE]",
"Pull_Quotes": [
"PULLQUOTE HERE",
"PULLQUOTE HERE"
]
}
]
},
{
"Section_Heading" : "[SECTION HEADING HERE]",
"Paragraphs" : [
{
"Paragraph": "[SECTION 2, PARAGRAPH 1 HERE]"
}
]
}
]
},
"Secondary_1":{
"Sections":[
{
"Section_Heading" : "[SECTION 1 HEADING HERE]",
"Paragraphs" : [
{
"Paragraph": "[SECTION 1, PARAGRAPH 1 HERE]"
}
]
},
{
"Section_Heading" : "[SECTION 2 HEADING HERE]",
"Paragraphs" : [
{
"Paragraph": "[SECTION 2, PARAGRAPH 1 HERE]"
}
]
},
{
"Section_Heading" : "[SECTION 3 HEADING HERE]",
"Paragraphs" : [
{
"Paragraph": "[SECTION 3, PARAGRAPH 1 HERE]"
}
]
}
]
}
}
}(嗯嗯。在您看来,这开始看起来像JSON-LD + Schema.org的伪版本吗?因为这对我来说.)
上面的JSON描述了主题Apples:
Summary,Related,Media,EditorialApples具有父主题、同级主题和子主题。到现在为止还好。
但这大部分感觉都像是猜测。
我想确认一下,这种做法是正确的。
这就是我在构建无头CMS时应该如何从结构中分离内容的方法吗?
发布于 2020-04-27 14:00:28
内容有结构,标记有结构,网站有结构。这些并不一定是相关的,但在传统的CMS中,它们往往是相互交织的。无头CMS只关注内容,但内容仍然具有结构。对于某些类型的内容,JSON是该内容结构的可行表示。通常会有一个元结构来描述内容如何被构造,CMS的用户将能够定义他们自己的内容结构(或者内容模型、内容类型等等)。基于这个。
这不是无头CMS的工作,插入内容到您的网站或其他任何事情。它只是提供内容,通常是通过一个API,而不需要知道它是如何使用的。因此,与传统的CMS相比,无头CMS不会有模板语言。
https://softwareengineering.stackexchange.com/questions/409353
复制相似问题