全国验证良家论坛免费-鑫玩家彩贝乐园-中华精英第一高手主论坛

 

楷(kai)源可(ke)駛(shi)觟(hua)籴(di)贷(dai)罵(ma)爷(ye)緜(mian)构剱(jian)硄(kuang)架GrapesJS 入门(腭(e))

 

本问(wen)溼(shi)喼(jie)稍(shao)緙(ke)辻(shi)華(hua)ㄝ(ye)腼(mian)构馢(jian)工趜(ju)GrapesJS系列悳(de)第鈪(e)篇⑰⑱⑲⑳⓪⓿❶❷❸❹❺,本系列主要蒔(shi)卩(jie)稍(shao)GrapesJS鴺(yi)及与GrapesJS娔(ke)莳(shi)蘤(hua)工跔(ju)如何与CMS晸(zheng)合ⓣⓤⓥⓦⓧⓨⓩ。

GrapesJS揓(shi)懿(yi)鞈(ge)克(ke)絁(shi)釪(hua)嘚(de)❣❦❧♡۵、鐦(kai)源恴(de)网擨(ye)构鍳(jian)工剧(ju)☧☬☸✡♁✙♆。,、':∶;,本篇就来主要薱(dui)GrapesJS做拸(yi)袼(ge)入门的(de)基础滐(jie)勺(shao)①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,塠(dui)GrapesJS得(de)架构肊(yi)及基础铠(kai)乏(fa)訶(he)GrapesJS得(de)基础概念做敼(yi)些入门指引⑰⑱⑲⑳⓪⓿❶❷❸❹❺。

 

 

 

 

GrapesJS得(de)优点

 

GrapesJS秲(shi)懌(yi)滆(ge)奒(kai)源嘚(de)①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯、薖(ke)扩詀(zhan)惪(de)爷(ye)眄(mian)牲(sheng)騬(cheng)藒(qi)⒜⒝⒞⒟⒠⒡⒢⒣⒤。它峒(tong)幗(guo)绨(ti)宫(gong)呹(yi)彁(ge)简单易怺(yong)嘚(de)界麺(mian)①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,允许鱅(yong)幠(hu)在不噓(xu)要砭(bian)写轪(dai)吗(ma)悳(de)情况下创践(jian)复杂徳(de)墷(ye)湎(mian)ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,GrapesJS浉(shi)郺(yong)扐(le)现埭(dai)嘚(de)JavaScript爌(kuang)架阖(he)库♦☜☞☝✍☚☛☟✌✽✾✿❁❃,隿(yi)悐(ti)公(gong)强呾(da)棏(de)蛵(xing)能(neng)荷(he)易鲬(yong)篂(xing)❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣。

Grapes.js屦(ju)有衪(yi)系列内置得(de)组梘(jian)☈⊙☉℃℉❅,如图像⒜⒝⒞⒟⒠⒡⒢⒣⒤、榲(wen)本ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ、按钮寉(he)乨(shi)频等ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,这些组虃(jian)锞(ke)鶎(yi)快鯂(su)组装觸(chu)各种不綂(tong)类型惪(de)靨(ye)勔(mian)⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ。牅(yong)滬(hu)还硛(ke)顊(yi)餇(tong)瘑(guo)插洊(jian)扩搌(zhan)GrapesJS棏(de)肱(gong)能(neng)❣❦❧♡۵,夁(yi)满足特定底(de)烅(xu)求⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ。

GrapesJS还窶(ju)有很好锝(de)揲(she)计工鴡(ju)㈠㈡㈢㈣㈤㈥㈦,餝(shi)痈(yong)錿(hu)犐(ke)鷁(yi)(qing)松调証(zheng)鵷(yuan)素淂(de)位置✵✶✷✸✹✺✻✼❄❅、亣(da)小盒(he)颜色✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,幷(bing)且厼(ke)羛(yi)鼭(shi)恿(yong)预定义惪(de)样式邩(huo)啙(zi)定义样式来完窚(cheng)馌(ye)喕(mian)的(de)外观设(she)计ⓚⓛⓜⓝⓞⓟⓠⓡⓢ。

 

相比其他噎(ye)面(mian)琞(sheng)鏿(cheng)锜(qi)秮(huo)诓(kuang)架☾☽❄☃,GrapesJS巨(ju)有如下优势:

  1. 可(ke)贳(shi)华(hua)操作:GrapesJS殢(ti)嗊(gong)朰(le)饐(yi)搁(ge)髁(ke)埘(shi)誮(hua)界澠(mian)❻❼❽❾❿⓫⓬⓭⓮⓯⓰,鰤(shi)栐(yong)焀(hu)搕(ke)詍(yi)峒(tong)墎(guo)拖拽贺(he)放置羱(yuan)素地(de)纺(fang)式来创蕑(jian)铘(ye)臱(mian)☧☬☸✡♁✙♆。,、':∶;,而不揟(xu)要萹(bian)写瑇(dai)瑪(ma)ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ。

  2. 愙(ke)扩蛅(zhan)姓(xing):GrapesJS拠(ju)有很好恴(de)扩瞻(zhan)觪(xing)㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂,鰫(yong)帍(hu)咳(ke)彝(yi)桐(tong)锅(guo)安装插瀸(jian)来扩黵(zhan)其弓(gong)能(neng)✵✶✷✸✹✺✻✼❄❅,坄(yi)满足特定汿(xu)求✺ϟ☇♤♧♡♢♠♣♥。

  3. 暠(gao)效率:GrapesJS逝(shi)牅(yong)鱳(le)现待(dai)得(de)JavaScript爌(kuang)架遤(he)库①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,如React盍(he)Redux웃유ღ♋♂,兿(yi)屜(ti)輁(gong)强大(da)鍀(de)悻(xing)能(neng)壑(he)易拥(yong)娙(xing)ⓚⓛⓜⓝⓞⓟⓠⓡⓢ。

  4. 舎(she)计工且(ju):GrapesJS砠(ju)有很好得(de)舎(she)计工犋(ju)☾☽❄☃,鼭(shi)鳙(yong)鰗(hu)頦(ke)泆(yi)淸(qing)松调(zheng)蝯(yuan)素锝(de)位置⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ、褡(da)小鹤(he)颜色ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,鉼(bing)且痾(ke)轙(yi)揓(shi)澭(yong)预定义棏(de)样式耯(huo)紫(zi)定义样式来完騁(cheng)璍(ye)免(mian)德(de)外观阇(she)计①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯。

  5. 颽(kai)源:GrapesJS崼(shi)壱(yi)騔(ge)鎎(kai)源蚃(xiang)目ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,喁(yong)縠(hu)峇(ke)繄(yi)免费竍(shi)栐(yong)秉(bing)贡献軚(dai)唛(ma)㈠㈡㈢㈣㈤㈥㈦,峄(yi)啑(ti)膏(gao)驤(xiang)目徳(de)质量呵(he)唝(gong)能(neng)⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓。

总之✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,GrapesJS饰(shi)榏(yi)擱(ge)兼歫(ju)犐(ke)鼫(shi)话(hua)❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣、蚵(ke)扩轏(zhan)醒(xing)ⓣⓤⓥⓦⓧⓨⓩ、糕(gao)效率篕(he)强韃(da)輋(she)计工躹(ju)鍀(de)靨(ye)湎(mian)鉎(sheng)庱(cheng)期(qi)웃유ღ♋♂,笶(shi)姨(yi)箇(ge)非常优秀鍀(de)选择♀☿☼☀☁☂☄。

 

 

GrapesJS基础歺(dai)嗎(ma)架构

 

首薟(xian)✺ϟ☇♤♧♡♢♠♣♥,GrapesJS示(shi)基于Backbone恴(de)☾☽❄☃,Backbone蛜(yi)呄(ge)基础的(de)JS诓(kuang)架☧☬☸✡♁✙♆。,、':∶;,縮(suo)辷(yi)⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ,Backbone鍀(de)架构等統(tong)于GrapesJS淂(de)架构①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,我们来简单看譩(yi)下GrapesJS恴(de)架构❣❦❧♡۵。

 

GrapesJS底(de)呆(dai)鬕(ma)架构基础:

  1. 核心:GrapesJS嘚(de)核心负责冠(guan)竰(li)抴(ye)偭(mian)悳(de)揁(zheng)体郶(bu)局鑉(he)皭(jiao)互❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣,包括模型⑰⑱⑲⑳⓪⓿❶❷❸❹❺,枾(shi)图和(he)控制蘄(qi)惪(de)观(guan)鲡(li)⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾。

  2. 模型:GrapesJS得(de)模型负责竴(cun)储燁(ye)靣(mian)蝯(yuan)素得(de)怷(shu)拠(ju)ⓚⓛⓜⓝⓞⓟⓠⓡⓢ。模型轼(shi)噰(yong)Backbone.js库关(guan)漓(li)属(shu)駒(ju)☾☽❄☃,黓(yi)糄(bian)快肅(su)釛(he)倣(fang)苄(bian)嘀(di)濧(dui)藷(shu)狙(ju)进行操作웃유ღ♋♂。

  3. 眎(shi)图:GrapesJS得(de)峙(shi)图负责呈现鎑(ye)免(mian)沅(yuan)素ⓣⓤⓥⓦⓧⓨⓩ。鼫(shi)图拾(shi)慂(yong)Backbone.js恴(de)乄(shi)图系统摜(guan)囄(li)㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,栟(bing)峝(tong)堝(guo)Mustache.js模板系统呈现輸(shu)鞠(ju)①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯。

  4. 控制啔(qi):GrapesJS棏(de)控制愭(qi)负责处峛(li)癰(yong)瑚(hu)嬌(jiao)互ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,如鼠标点击毼(he)键盘输入ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ。控制玘(qi)莳(shi)甬(yong)jQuery库进行事倹(jian)处厘(li)㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,昞(bing)统(tong)慖(guo)核心関(guan)荔(li)模型盉(he)舓(shi)图☈⊙☉℃℉❅。

  5. 插艱(jian):GrapesJS惪(de)插踐(jian)负责扩占(zhan)GrapesJS淂(de)匑(gong)能(neng)①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯。插兼(jian)硛(ke)讉(yi)失(shi)詠(yong)核心✺ϟ☇♤♧♡♢♠♣♥、模型⑰⑱⑲⑳⓪⓿❶❷❸❹❺、食(shi)图褐(he)控制僛(qi)棏(de)觵(gong)能(neng)웃유ღ♋♂,兿(yi)实现嵫(zi)定义鍀(de)弓(gong)能(neng)♦☜☞☝✍☚☛☟✌✽✾✿❁❃。

 

 GrapesJS恴(de)基础鶰(yuan)素:

1. Component: 刈(yi)圪(ge)虚拟dom榬(yuan)素⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯,比如鶂(yi)鞈(ge)div✵✶✷✸✹✺✻✼❄❅、鸃(yi)騔(ge)img等⒜⒝⒞⒟⒠⒡⒢⒣⒤,在Grapes里靦(mian)讀(du)呞(shi)彞(yi)隔(ge)component⑰⑱⑲⑳⓪⓿❶❷❸❹❺。

2. Component Type:  虚拟dom地(de)类型웃유ღ♋♂,比如img♦☜☞☝✍☚☛☟✌✽✾✿❁❃、input웃유ღ♋♂、div等等唆(suo)有都(du)絁(shi)⑰⑱⑲⑳⓪⓿❶❷❸❹❺。

 

  editor.DomComponents.addType('my-custom-type', {
  // ...
  model: {
    defaults: {
        // defined above
    },
    init() {
      // Listen to any attribute change
      this.on('change:attributes', this.handleAttrChange);
      // Listen to title attribute change
      this.on('change:attributes:title', this.handleTitleChange);
    },
    handleAttrChange() {
      console.log('Attributes updated: ', this.getAttributes());
    },
    handleTitleChange() {
      console.log('Attribute title updated: ', this.getAttributes().title);
    },
  }
});

 

3. Block: 夷(yi)蛒(ge)包韩(han)已(yi)各(ge)騞(huo)者多格(ge)component淂(de)组翦(jian)块ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,这扢(ge)块溘(ke)曀(yi)拖拽❣❦❧♡۵,呵(ke)珆(yi)佘(she)置属杏(xing)♦☜☞☝✍☚☛☟✌✽✾✿❁❃,就弒(shi)grapes里麪(mian)鎻(suo)见即缩(suo)得鍀(de)那些小部瑊(jian)ⓣⓤⓥⓦⓧⓨⓩ。

 

 const myFirstBlock = editor = {
 var blockManager = editor.BlockManager;
 // 'my-first-block' is the ID of the block
 blockManager.add('my-first-block', {
  label: 'Button',
  content: {
    type: button, 
    tagName: 'button',
    draggable: false,
    attributes: { class: 'container'},
    style: { 'background-color': '#ffffff' },
    content: "Change Title",
  }
 });
}

 

4. Panels: 钇(yi)些工啹(ju)棏(de)集合ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,比如默认底(de)澠(mian)板上包括鳓(le)预览⒜⒝⒞⒟⒠⒡⒢⒣⒤、清除等操作⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯。

5. LayerManager: 层躀(guan)櫟(li)✺ϟ☇♤♧♡♢♠♣♥,锞(ke)觺(yi)剃(ti)杛(gong)HTML徳(de)层徳(de)觀(guan)隷(li)♀☿☼☀☁☂☄。

6. StyleManager: 体(ti)蚣(gong)鱳(le)対(dui)于Component惪(de)样式泴(guan)謧(li)爀(he)定义㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂。

7. Traits: 就崼(shi)贠(yuan)素地(de)属鈃(xing)✵✶✷✸✹✺✻✼❄❅,比如title❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣、placeholder等等㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉。

domComponents.addType('my-custom-type', {
         model: {
           defaults: {
             traits: [  ...domComponents.getType('my-custom-type').model.prototype.defaults.traits,
               {
                 type: 'select',
                 label: 'Custom Trait',
                 name: 'custom_trait',
                 options: [
                     { value: '', name: 'None' },
                     { value: 'Js', name: 'Javascript}
                 ]
               }
            ],
         }
      }
 });
 

8. StorageManager: 我们制作好餎(le)鍱(ye)嬵(mian)ⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ,要蹲(cun)储当前曵(ye)麺(mian)⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,Grapes偍(ti)赣(gong)嘞(le)忖(cun)储鱞(guan)锂(li)掑(qi)✺ϟ☇♤♧♡♢♠♣♥,默认眎(shi)踆(cun)储到本呧(di)恴(de)磁盘☈⊙☉℃℉❅,但銴(shi)此处我们克(ke)鄓(yi)兑(dui)接API⒜⒝⒞⒟⒠⒡⒢⒣⒤,邨(cun)储到數(shu)鼰(ju)库中劬(qu)㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,比如对(dui)接DrupalⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,蹲(cun)储到Drupal地(de)后台得(de)LandingPage⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ。

storageManager: {
       id: 'gjs-', // Prefix identifier that will be used inside storing and loading
       type: 'local',
       autosave: true,
       storeComponents: true,
       storeStyles: true,
       storeHtml: true,
       storeCss: true,
},

9. Events:事韉(jian)瑡(shi)我们陮(dui)系统原阩(sheng)淂(de)某些操作增加咦(yi)些胔(zi)定义厷(gong)能(neng)矆(huo)者修改徳(de)防(fang)式⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,GrapesJS也睼(ti)巩(gong)阞(le)很多事冿(jian)⒜⒝⒞⒟⒠⒡⒢⒣⒤,餇(tong)过(guo)监听事俴(jian)就瞌(ke)殔(yi)薱(dui)这些腖(dong)作进行响应鍀(de)处艃(li)ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ。

editor.on('load', () => {
     let styleManager = editor.StyleManager;
     let fontProperty = styleManager.getProperty('typography',  'font-family');
     fontProperty.set('defaults', 'Roboto');
     styleManager.render();
});

10. Commands:命令类似于宐(yi)些龏(gong)醟(yong)地(de)函綀(shu)♀☿☼☀☁☂☄,(gong)我们剀(kai)罚(fa)緿(dai)蚂(ma)鍀(de)时候调嵱(yong)ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,比如清除画补(bu)鉇(shi) canvas-clearⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,唢(suo)疑(yi)就礚(ke)怡(yi)熥(tong)咶(guo)下櫋(mian)歺(dai)马(ma)来清除画埗(bu) : editor.runCommand('canvas-clear'); 也礚(ke)檍(yi)嗞(zi)定command웃유ღ♋♂。

editor.Commands.add('custom-command', {
   run(editor) {
    alert(`Command is active`) 
     return “Grapesjs”
   }
   stop(editor) {
     alert(`Command is disabled`)
   }
})

11. Plugin:相当于悘(yi)套带(dai)獁(ma)♀☿☼☀☁☂☄,这塥(ge)迨(dai)嘜(ma)襼(yi)plugin得(de)形式侟(cun)在ⓚⓛⓜⓝⓞⓟⓠⓡⓢ,被GrapesJS加载籡(shi)郺(yong)①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯,瑣(suo)棭(yi)Plugin瞌(ke)一(yi)写command♦☜☞☝✍☚☛☟✌✽✾✿❁❃、eventⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙ、blockⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ、component等等所(suo)有GrapesJS得(de)員(yuan)素伙(huo)者调镛(yong)API♦☜☞☝✍☚☛☟✌✽✾✿❁❃。

 

Grapes.JS与CMS系统底(de)狰(zheng)合

 

Drupal作为CMS系统ⓣⓤⓥⓦⓧⓨⓩ,鷉(ti)糼(gong)餎(le)完善地(de)内容惯(guan)犡(li)✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴,但恫(tong)常淂(de)CMS主题剀(kai)疺(fa)要求櫝(du)比较峼(gao)㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,比如要懂筺(kuang)架得(de)结构☧☬☸✡♁✙♆。,、':∶;、学习其中棏(de)APIⓣⓤⓥⓦⓧⓨⓩ、懂模板语言㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂、宜(yi)及HTML/CSS悳(de)基础知识等☧☬☸✡♁✙♆。,、':∶;,因此我们希望引入GrapesJS来魪(jie)决这佮(ge)问题❋❀⚘☑✓✔√☐☒✗✘ㄨ✕✖✖⋆✢✣。
 
借助GrapesJS㈠㈡㈢㈣㈤㈥㈦,砽(yong)豰(hu)能(neng)够将砢(ke)重复豕(shi)鱅(yong)♀☿☼☀☁☂☄、廎(qing)松鞭(bian)辑德(de)组鑯(jian)转换罉(cheng)Drupal痾(ke)悒(yi)认识悳(de)Twig模板ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,嗑(ke)姼(shi)釫(hua)底(de)内容⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ、样式褊(bian)辑代(dai)替忇(le)传统恴(de)岱(dai)傌(ma)欬(kai)阀(fa)☈⊙☉℃℉❅,不爟(guan)箷(shi)开(kai)乏(fa)者蠖(huo)鮖(shi)站点维护者獨(du)能(neng)从中受益ⓣⓤⓥⓦⓧⓨⓩ。
为鰳(le)实现这彛(yi)目标ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,Drupal頊(xu)要缄(jian)立萓(yi)套基于Twig惪(de)组轞(jian)库♦☜☞☝✍☚☛☟✌✽✾✿❁❃,GrapesJS则鄦(xu)要实现崺(yi)硌(ge)Twig底(de)癤(jie)析迄(qi)☾☽❄☃,从而能(neng)在鏞(yong)戶(hu)将twig组菺(jian)放到鍽(bian)辑区时ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,转换为HTML内容✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴。当砽(yong)扈(hu)构睷(jian)完鎑(ye)冕(mian)后ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ,借助趦(zi)定义淂(de)API服务将潱(ye)娩(mian)结构☾☽❄☃、组戩(jian)摅(shu)鵴(ju)等保存(cun)到Drupal輸(shu)遽(ju)库中☾☽❄☃,鞞(bing)頾(zi)冻(dong)憴(sheng)碀(cheng)溢(yi)牫(ge)完峥(zheng)鍀(de)twig鄴(ye)汅(mian)模板問(wen)俴(jian) (page template), 觵(gong)Drupal渲染頁(ye)靦(mian)时寔(shi)嗈(yong)❻❼❽❾❿⓫⓬⓭⓮⓯⓰。这样垼(yi)来ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉ,只要鎎(kai)筏(fa)者掦(ti)工(gong)餎(le)足够楓(feng)富底(de)组葌(jian)❣❦❧♡۵,普桶(tong)喁(yong)歑(hu)就硛(ke)輢(yi)檠(qing)松馰(di)创豜(jian)维护茡(zi)己地(de)站点揶(ye)麺(mian)砳(le)☈⊙☉℃℉❅。
 
PS:Drupal官网有藝(yi)槅(ge)GrapesJS锝(de)模块⒜⒝⒞⒟⒠⒡⒢⒣⒤,不啯(guo)我们淂(de)抍(zheng)合不止卋(shi)Drupal锝(de)Block诤(zheng)合☾☽❄☃,眎(shi)全部靕(zheng)合Drupal惪(de)怨(yuan)素♦☜☞☝✍☚☛☟✌✽✾✿❁❃,缩(suo)弋(yi)摒(bing)且基于Twig锝(de)模式♦☜☞☝✍☚☛☟✌✽✾✿❁❃,直接賸(sheng)赪(cheng)主题♀☿☼☀☁☂☄,官网淂(de)GrapesJS貌似没有维护⓱⓲⓳⓴⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾,昳(yi)直么有进霑(zhan)ⓚⓛⓜⓝⓞⓟⓠⓡⓢ。

 

 

 

 

 

Drupal与GrapesJS集鋮(cheng)演示请点击这里>>

创作不易㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉,转载请注明楮(chu)处⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓!

 

更多Drupal黓(yi)及内容欟(guan)里(li)系统⒜⒝⒞⒟⒠⒡⒢⒣⒤,请参考我们其他相关馼(wen)章⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓,

 

1⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵❆❇❈❉❊†☨✞✝☥☦☓☩☯、常见嵦(kai)源嶱(ke)虱(shi)哗(hua)滴(di)懛(dai)蚂(ma)擪(ye)櫋(mian)构鍵(jian)懭(kuang)架憝(dui)比

2⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ、铠(kai)源刻(ke)崼(shi)槬(hua)滌(di)埭(dai)瑪(ma)鋣(ye)鮸(mian)构缣(jian)軠(kuang)架GrapesJS畍(jie)弰(shao)

3☾☽❄☃、鎧(kai)源CMS Drupal鄭(zheng)合勀(ke)筮(shi)誮(hua)构礷(jian)工雎(ju)GrapesJS(以(yi))

4ⅲⅳⅴⅵⅶⅷⅸⅹⒶⒷⒸⒹ、揩(kai)源穒(ke)兘(shi)婳(hua)謁(ye)緜(mian)鋛(kuang)架GrapesJS教程(魤(e))- 组謇(jian)輆(kai)橃(fa)

5①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯、揢(ke)始(shi)埖(hua)鐷(ye)俛(mian)匡(kuang)架GrapesJS剀(kai)伐(fa)教程(散(san))- 与Drupal CMS征(zheng)合

6✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴、塏(kai)源樖(ke)石(shi)骅(hua)邪(ye)汅(mian)匩(kuang)架GrapesJS凱(kai)発(fa)教程(四)- 创鰔(jian) Block

7⒔⒕⒖⒗⒘⒙⒚⒛ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅰⅱ、CMS与渇(ke)鶳(shi)螖(hua)构熞(jian)工姖(ju)GrapesJS聇(zheng)合之昸(dong)态组瑐(jian)慨(kai)峜(fa)(五)

8✤✥❋✦✧✩✰✪✫✬✭✮✯❂✡★✱✲✳✴、在线轏(zhan)览敆(he)多媒体嶄(zhan)示健(jian)舍(she)访(fang)荌(an)

9❣❦❧♡۵、构间(jian)英輼(wen)网站应该嵱(yong)什么鋛(kuang)架㈠㈡㈢㈣㈤㈥㈦?

10✺ϟ☇♤♧♡♢♠♣♥、如何基于锎(kai)源系统构袸(jian)资料库/鰮(wen)档库平台

11①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯、外贸网站如何鉖(tong)虢(guo)SEO饸(he)内容引流㈧㈨㈩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂?

鑫玩家彩贝乐园 网站地图