国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
您好,Trello
構(gòu)建塊
我想玩!
發(fā)現(xiàn)API
決定如何使用板
生成網(wǎng)站
獲取構(gòu)建數(shù)據(jù)
圖像附件
分期內(nèi)容
但是如何更新呢?
我真的可以使用這個(gè)嗎?
首頁(yè) web前端 css教學(xué) 將Trello用作超級(jí)簡(jiǎn)單的CMS

將Trello用作超級(jí)簡(jiǎn)單的CMS

Apr 03, 2025 am 10:13 AM

將Trello用作超級(jí)簡(jiǎn)單的CMS

有時(shí),我們的網(wǎng)站需要一些內(nèi)容管理。並非總是如此。不多。但是有點(diǎn)。 CMS市場(chǎng)蓬勃發(fā)展,價(jià)格合理,平易近人的產(chǎn)品,因此我們不足以選擇。值得慶幸的是,這與曾經(jīng)迫使公司濺出一筆ga-億萬(wàn)美元(不是確切的成本:我四捨五入到最接近的千億美元)的世界截然不同。

但是,有時(shí)候,最好使用一個(gè)非常簡(jiǎn)單的工具,任何更新網(wǎng)站上內(nèi)容的人已經(jīng)熟悉,而不是使用新的CMS。

我非常喜歡Trello來(lái)管理思想和任務(wù)。它有一個(gè)API。為什麼不將其用作網(wǎng)站的內(nèi)容源?我的意思是,嘿,如果我們可以用Google表進(jìn)行操作,那麼什麼可以阻止我們嘗試其他事情?

您好,Trello

這是一個(gè)可以探索的簡(jiǎn)單網(wǎng)站。它從該Trello板上獲取內(nèi)容,並在各節(jié)中顯示內(nèi)容。每個(gè)部分都由我們的Trello板上卡的標(biāo)題和描述字段填充。

Trello使用Markdown,這很方便。任何在Trello卡中編輯內(nèi)容的人都可以應(yīng)用基本的文本格式,並將相同的降價(jià)流入站點(diǎn),並通過(guò)構(gòu)建過(guò)程轉(zhuǎn)換為HTML。

構(gòu)建塊

我是這種運(yùn)行構(gòu)建模型的忠實(shí)擁護(hù)者,該模型可以從各種供稿和來(lái)源中汲取內(nèi)容,然後將它們與模板一起搗碎以生成網(wǎng)站的HTML。它使演示文稿與內(nèi)容的管理(這是流行的現(xiàn)代CMS產(chǎn)品中來(lái)自“分離”一詞的位置)。這意味著我們可以自由地使用我們?cè)贑SS-tricks上學(xué)到的所有技巧和技術(shù)來(lái)按照我們想要的方式製作網(wǎng)站。

由於我們?cè)跇?gòu)建時(shí)間介紹了內(nèi)容,因此如果我們的網(wǎng)站流行並引入大量流量,我們不必?fù)?dān)心使用配額或數(shù)據(jù)源的性能。他們?yōu)槭颤N不呢?看看我們使它們變得多麼漂亮!

我想玩!

美好的。您可以獲取本網(wǎng)站的代碼的副本,然後修改您內(nèi)心的內(nèi)容。此版本包括有關(guān)如何創(chuàng)建自己的Trello板並將其用作構(gòu)建內(nèi)容的源的信息。

  • 示例網(wǎng)站代碼存儲(chǔ)庫(kù)在github上
  • 演示網(wǎng)站
  • 克隆並單擊幾下部署自己的副本

如果您想首先瀏覽它的工作方式,而不是自己潛入其中,請(qǐng)繼續(xù)閱讀。

發(fā)現(xiàn)API

Trello擁有有據(jù)可查的API和一組開(kāi)發(fā)人員資源。還有一個(gè)方便的節(jié)點(diǎn)模塊,可以簡(jiǎn)化身份驗(yàn)證和與API交互的任務(wù)。但是,當(dāng)您探索Trello板時(shí),您也可以通過(guò)修補(bǔ)URL來(lái)探索API。

例如,上面的Trello板的URL是:

 https://trello.com/b/zzc0uswz/hellotrello

如果我們將.json添加到該URL,則Trello向我們展示了表示為JSON的內(nèi)容。看看。

我們可以使用此技術(shù)來(lái)檢查整個(gè)Trello的基礎(chǔ)數(shù)據(jù)。這是一張卡的URL:

 https://trello.com/c/yvxlsezy/4-sections-from-cards

如果我們使用這個(gè)小技巧並將.json添加到URL中,我們將看到描述該卡的數(shù)據(jù)。

我們會(huì)找到有趣的東西 - 董事會(huì),列表和卡的獨(dú)特ID。我們可以看到該卡的內(nèi)容以及許多元數(shù)據(jù)。

我喜歡這樣做!查看所有可愛(ài)的數(shù)據(jù)!我們?cè)撊绾问褂盟?/p>

決定如何使用板

在此示例中,假設(shè)我們只有一個(gè)只有一頁(yè)可管理的內(nèi)容的站點(diǎn)。我們董事會(huì)中的列表或列對(duì)於控制該頁(yè)面上的各個(gè)部分是理想的選擇。編輯可以給他們標(biāo)題和內(nèi)容,並將其拖入所需的順序。

我們需要列表的ID,以便我們可以通過(guò)API訪問(wèn)它。幸運(yùn)的是,我們已經(jīng)看到瞭如何發(fā)現(xiàn)這一點(diǎn) - 查看有關(guān)列表中任何卡片的數(shù)據(jù)。每個(gè)人都有一個(gè)IDBOARD屬性。賓果!

生成網(wǎng)站

該計(jì)劃是從Trello獲取數(shù)據(jù),並將其應(yīng)用於某些模板以填充我們的網(wǎng)站。大多數(shù)靜態(tài)站點(diǎn)生成器(SSG)都可以完成這項(xiàng)工作。那就是他們擅長(zhǎng)的。我會(huì)使用高度,因?yàn)槲艺J(rèn)為它具有最簡(jiǎn)單的概念要理解。另外,使用nunjucks(一種流行的模板語(yǔ)言),獲取數(shù)據(jù)並生成清潔的HTML非常有效。

我們希望能夠使用一個(gè)表達(dá)式lin我們的模板,該模板為JavaScript對(duì)像中的每個(gè)項(xiàng)目輸出一個(gè)名為T(mén)rello:的截面元素:

 
{trello%的卡片}

  <h2> {{card.name}} </h2>
  <div>
    {%Markdown%}
      {{ -  card.desc |安全的 }}
    {%endmarkDown%}
  </div>

{%endfor%}

獲取構(gòu)建數(shù)據(jù)

像這樣的jamstack網(wǎng)站的一種流行技術(shù)是,在此處使用Gulp,Grunt或[在此處插入最新的新構(gòu)建腳本Hotness]的構(gòu)建,並從各種API中獲取數(shù)據(jù),並以適合SSG的格式將數(shù)據(jù)藏起來(lái),然後運(yùn)行SSG以生成HTML。這效果很好。

高架通過(guò)支持JavaScript在其數(shù)據(jù)文件中的執(zhí)行來(lái)簡(jiǎn)化此處的內(nèi)容。換句話說(shuō),它不僅可以利用存儲(chǔ)為JSON或YAML的數(shù)據(jù),還可以使用JavaScript返回的任何內(nèi)容,在高度構(gòu)建運(yùn)行時(shí)為直接向API提出請(qǐng)求打開(kāi)大門(mén)。我們不需要單獨(dú)的構(gòu)建步驟才能首先獲取數(shù)據(jù)。高架會(huì)為我們做。

讓我們使用它在模板中獲取我們的trello對(duì)象的數(shù)據(jù)。

我們可以使用trello節(jié)點(diǎn)客戶端來(lái)查詢API,但是事實(shí)證明,我們想要的所有數(shù)據(jù)就在板上的JSON中。一切!在一個(gè)請(qǐng)求中!我們可以一口氣獲??!

 // trello.js
Module.exports =()=> {
  const trello_json_url ='https://trello.com/b/zzc0uswz/hellotrello.json';

  //使用Node-fetch獲取有關(guān)此板的JSON數(shù)據(jù)
  const fetch = require('node-fetch');
  返回提取(trello_json_url)
    然後(res => res.json())
    然後。
};

但是,我們不想顯示該董事會(huì)的所有數(shù)據(jù)。它包括其他列表上的卡,已關(guān)閉和刪除的卡片等等。但是,由於JavaScript的過(guò)濾器方法,我們可以過(guò)濾卡以僅包括有趣的卡片。

 // trello.js
Module.exports =()=> {
   const trello_json_url ='https://trello.com/b/zzc0uswz/hellotrello.json'
   const trello_list_id ='5E98325D6BD120F2B7395F',
 
   //使用Node-fetch獲取有關(guān)此板的JSON數(shù)據(jù)
   const fetch = require('node-fetch');
   返回提?。╰rello_json_url)
   然後(res => res.json())
   。然後(json => {
 
     //只專(zhuān)注於我們想要的列表中的卡片
     //並且沒(méi)有封閉狀態(tài)
     LET ContentCards = JSON.CARDS.FILTER(card => {
       return card.idlist == trello_list_id &&! card.closed;
     });
 
     返回contentcard;
 });
};

那會(huì)做的!將其保存在高度數(shù)據(jù)目錄中的名為trello.js的文件中,我們將準(zhǔn)備在模板中使用此數(shù)據(jù)在一個(gè)名為T(mén)rello的對(duì)像中。

完成! ?

但是我們可以做得更好。我們還可以處理附件的圖像,還添加了一種在上線之前進(jìn)行審查的方法。

圖像附件

可以將文件附加到Trello的卡上。當(dāng)您附加圖像時(shí),它在卡片中顯示在數(shù)據(jù)中所述資產(chǎn)的源URL中。我們可以利用它!

如果卡具有圖像附件,我們將要獲取其源URL,並將其作為圖像標(biāo)籤添加到構(gòu)建時(shí)間時(shí)的模板插入到頁(yè)面中的內(nèi)容。這意味著將圖像的標(biāo)記添加到我們的JSON(card.desc)的描述屬性中的降價(jià)中。

然後,我們可以讓高架將其與其他所有事物一起將其轉(zhuǎn)變?yōu)镠TML。此代碼在我們的JSON中尋找卡片,並將數(shù)據(jù)按摩到我們需要的形狀中。

 // trello.js

//如果卡有附件,請(qǐng)將其添加為圖像 
//在說(shuō)明降價(jià)中
contentcards.foreach(card => {
  if(card.attachments.length){
    card.desc = card.desc`\ n! [$ {card.name}]($ {card.attachments [0] .url}'$ {card.name}')
  }
});

現(xiàn)在,我們也可以在內(nèi)容中移動(dòng)圖像。便利!

分期內(nèi)容

讓我們添加一個(gè)蓬勃發(fā)展,以便如何使用Trello來(lái)管理網(wǎng)站的內(nèi)容。

在將內(nèi)容啟動(dòng)到世界之前,我們可能需要多種方法來(lái)預(yù)覽內(nèi)容。我們的Trello董事會(huì)可能有一個(gè)列表進(jìn)行分期,並有一個(gè)用於生產(chǎn)內(nèi)容的列表。但這將使很難形象化新內(nèi)容與已經(jīng)發(fā)布的內(nèi)容一起生活。

一個(gè)更好的主意是使用Trello的標(biāo)籤來(lái)表示現(xiàn)場(chǎng)直播的卡片,哪些應(yīng)該僅包含在該網(wǎng)站的舞臺(tái)版本中。這將為我們提供一個(gè)不錯(cuò)的工作流程。我們可以通過(guò)在正確的位置添加新卡來(lái)添加更多內(nèi)容。用“舞臺(tái)”標(biāo)記它,並將其從我們生產(chǎn)分支上出現(xiàn)的卡片中濾出。

我們的JavaScript對(duì)象進(jìn)行了更多的過(guò)濾:

 // trello.js

//僅包含標(biāo)有“ Live”或帶有標(biāo)籤的卡片
//我們所在的分支的名稱
contentcards = contentcards.filter(card => {
  返回卡.labels.filter(label =>((
    label.name.tolowercase()=='live'||
    label.name.tolowercase()==分支
   ))。長(zhǎng)度;
 });

我們希望標(biāo)有“ Live”的內(nèi)容出現(xiàn)在構(gòu)建的每個(gè)版本,是否登臺(tái)上。此外,我們將考慮包含具有匹配一個(gè)稱為“分支”的變量的標(biāo)籤的卡。

怎麼會(huì)?那是什麼?

這是我們狡猾的地方!我選擇在Netlify上託管此網(wǎng)站(免責(zé)聲明:我在那里工作)。這意味著我可以從Netlify的CI/CD環(huán)境中運(yùn)行構(gòu)建。每當(dāng)我推動(dòng)更改其GIT存儲(chǔ)庫(kù)時(shí),這將重新部署該網(wǎng)站,並可以訪問(wèn)其他幾件事,這些內(nèi)容對(duì)於此網(wǎng)站確實(shí)很方便。

一個(gè)是分支部署。如果您想要一個(gè)網(wǎng)站的新環(huán)境,則可以通過(guò)在GIT存儲(chǔ)庫(kù)中製作一個(gè)新分支來(lái)創(chuàng)建一個(gè)環(huán)境。該構(gòu)建將在這種情況下運(yùn)行,您的網(wǎng)站將在包括分支名稱的子域上發(fā)布。像這樣。

看一看,您將看到我們列表中的所有卡,包括具有橙色“舞臺(tái)”標(biāo)籤的卡片。我們將其包括在此構(gòu)建中,因?yàn)樗臉?biāo)籤與構(gòu)建上下文的分支名稱匹配。分支是一個(gè)環(huán)境變量,其中包含構(gòu)建式運(yùn)行的分支。

 label.name.tolowercase()==分支

從理論上講,我們可以根據(jù)自己的意願(yuàn)製作盡可能多的分支機(jī)構(gòu)和標(biāo)籤,並具有各種分期和測(cè)試環(huán)境。準(zhǔn)備從“舞臺(tái)”推廣到“現(xiàn)場(chǎng)”的東西了嗎?交換標(biāo)籤,您很高興!

但是如何更新呢?

我們從CI/CD(例如Netlify的)中運(yùn)行網(wǎng)站構(gòu)建而獲得的第二好是,我們可以隨時(shí)觸發(fā)構(gòu)建構(gòu)建。 Netlify使我們可以創(chuàng)建構(gòu)建鉤子。這些是Webhooks,當(dāng)您向其發(fā)送HTTP帖子時(shí),可以啟動(dòng)新部署。

如果Trello也支持Webhooks,那麼我們可以將這些服務(wù)縫合在一起,並在Trello板更改時(shí)自動(dòng)刷新網(wǎng)站。猜猜……他們做什麼!哇!

要?jiǎng)?chuàng)建一個(gè)NetLify Build Hook,您需要訪問(wèn)網(wǎng)站的管理面板。 (如果您想嘗試一下,您可以單擊幾下將此演示站點(diǎn)引導(dǎo)到一個(gè)新的NetLify站點(diǎn)中。)

現(xiàn)在,用新的構(gòu)建掛鉤URL武裝,我們需要註冊(cè)一個(gè)新的Trello Webhook,該Webhook在內(nèi)容更改時(shí)調(diào)用它。在Trello中創(chuàng)建Webhooks的方法是通過(guò)Trello的API。

該網(wǎng)站的存儲(chǔ)庫(kù)包括一個(gè)點(diǎn)擊Trello API並為您創(chuàng)建Webhook的實(shí)用程序。但是您需要有一個(gè)Trello開(kāi)發(fā)人員令牌和鑰匙。值得慶幸的是,很容易通過(guò)訪問(wèn)Trello開(kāi)發(fā)人員門(mén)戶網(wǎng)站並按照“授權(quán)客戶”下的說(shuō)明來(lái)免費(fèi)創(chuàng)建它們。

得到了嗎?偉大的!如果將它們保存在項(xiàng)目中的.env文件中,則可以運(yùn)行此命令以設(shè)置Trello Webhook:

 npm run鉤-url https://api.netlify.com/build_hooks/xxxxxx

因此,我們創(chuàng)建了一個(gè)不錯(cuò)的流程,用於在簡(jiǎn)單站點(diǎn)上管理內(nèi)容。我們可以按照我們想要的方式來(lái)製作前端,並在Trello板上更新內(nèi)容,該內(nèi)容在進(jìn)行更改時(shí)會(huì)自動(dòng)更新網(wǎng)站。

我真的可以使用這個(gè)嗎?

這是一個(gè)簡(jiǎn)單的例子。那是設(shè)計(jì)。我真的想演示解耦的概念,以及使用外部服務(wù)的API來(lái)推動(dòng)網(wǎng)站的內(nèi)容。

這不會(huì)代替全功能的分離CM,以提供更多參與的項(xiàng)目。但是這些原則完全適用於更複雜的站點(diǎn)。

但是,對(duì)於我們看到的獨(dú)立商店,酒吧和餐館等企業(yè)所看到的網(wǎng)站類(lèi)型,這種模型可能是一個(gè)很好的匹配。想像一下,一個(gè)特里洛板,其中有一個(gè)用於管理餐廳主頁(yè)的列表,另一個(gè)用於管理菜單項(xiàng)。餐廳工作人員的管理非常容易,並且在更改時(shí)上傳菜單的新pdf要好得多。

準(zhǔn)備探索一個(gè)榜樣並嘗試自己的董事會(huì)和內(nèi)容嗎?嘗試以下操作:

  • 克隆並從上方部署示例,然後開(kāi)始進(jìn)行更改。
  • 了解有關(guān)NetLify您可以使用NetLify分支機(jī)構(gòu)構(gòu)建的更多信息
  • 深入研究Trello開(kāi)發(fā)人員資源。

以上是將Trello用作超級(jí)簡(jiǎn)單的CMS的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話題

如何僅在某些頁(yè)面上包括CSS? 如何僅在某些頁(yè)面上包括CSS? Jun 11, 2025 am 12:01 AM

選擇性包含CSS在特定頁(yè)面上的方法有三種:1.內(nèi)聯(lián)CSS,適用於不常訪問(wèn)或需要獨(dú)特樣式的頁(yè)面;2.使用JavaScript條件加載外部CSS文件,適合需要靈活性的情況;3.服務(wù)器端包含,適用於使用服務(wù)器端語(yǔ)言的場(chǎng)景。這種方法可以優(yōu)化網(wǎng)站性能和可維護(hù)性,但需平衡模塊化與性能。

Flexbox與網(wǎng)格:了解CSS佈局的關(guān)鍵差異 Flexbox與網(wǎng)格:了解CSS佈局的關(guān)鍵差異 Jun 10, 2025 am 12:03 AM

flexboxisidealforone-dimensionAllayouts,while gridsuitStwo,complex layouts.useflexboxforaligningItemsinasingLeaxisAndGridForRidForPreciseconcontroloverroverroverroverroverroverroverrowsandsininintricatientricatedesigns。

使用HTML彈出案創(chuàng)建自動(dòng)關(guān)閉通知 使用HTML彈出案創(chuàng)建自動(dòng)關(guān)閉通知 Jun 10, 2025 am 09:45 AM

HTML彈出屬性將元素轉(zhuǎn)換為頂層元素,可以使用按鈕或JavaScript打開(kāi)和關(guān)閉??梢詫棾霭格g回多種方式,但是沒(méi)有選擇自動(dòng)關(guān)閉它們。 preethi有一種技術(shù),你可以

什麼是'渲染障礙CSS”? 什麼是'渲染障礙CSS”? Jun 24, 2025 am 12:42 AM

CSS會(huì)阻塞頁(yè)面渲染是因?yàn)闉g覽器默認(rèn)將內(nèi)聯(lián)和外部CSS視為關(guān)鍵資源,尤其是使用引入的樣式表、頭部大量?jī)?nèi)聯(lián)CSS以及未優(yōu)化的媒體查詢樣式。 1.提取關(guān)鍵CSS並內(nèi)嵌至HTML;2.延遲加載非關(guān)鍵CSS通過(guò)JavaScript;3.使用media屬性優(yōu)化加載如打印樣式;4.壓縮合併CSS減少請(qǐng)求。建議使用工具提取關(guān)鍵CSS,結(jié)合rel="preload"異步加載,合理使用media延遲加載,避免過(guò)度拆分與復(fù)雜腳本控制。

如何在無(wú)花果中使用Lotties 如何在無(wú)花果中使用Lotties Jun 14, 2025 am 10:17 AM

在接下來(lái)的教程中,我將向您展示如何在無(wú)花果中創(chuàng)建Lottie動(dòng)畫(huà)。我們將使用兩種彩色設(shè)計(jì)來(lái)超越如何在無(wú)花果上進(jìn)行動(dòng)畫(huà),然後向您展示如何從Figma到Lottie動(dòng)畫(huà)。您只需要免費(fèi)無(wú)花果

打破邊界:用(s)CSS構(gòu)建湯姆拼圖 打破邊界:用(s)CSS構(gòu)建湯姆拼圖 Jun 13, 2025 am 11:33 AM

我們對(duì)其進(jìn)行了測(cè)試,事實(shí)證明,至少在低級(jí)邏輯和拼圖行為時(shí),Sass可以替換JavaScript。除了地圖,混音,功能和大量數(shù)學(xué)外,我們都設(shè)法使我們的Tangram難題栩栩如生,沒(méi)有J

外部與內(nèi)部CSS:最好的方法是什麼? 外部與內(nèi)部CSS:最好的方法是什麼? Jun 20, 2025 am 12:45 AM

thebestapphachforcssdepprodsontheproject'sspefificneeds.forlargerprojects,externalcsSissBetterDuoSmaintoMaintainability andReusability; forsMallerProjectsorsingle-pageApplications,InternaltCsmightBemoresobleable.InternalCsmightBemorese.it.it'sclucialtobalancepopryseceneceenceprodrenceprodrenceNeed

我的CSS必須在較低的情況下嗎? 我的CSS必須在較低的情況下嗎? Jun 19, 2025 am 12:29 AM

否,CSSDOESNOTHAVETOBEINLOWERCASE.CHOMENDENS,使用flowercaseisrecommondendendending:1)一致性和可讀性,2)避免使用促進(jìn)性技術(shù),3)潛在的Performent FormanceBenefits,以及4)RightCollaboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraborationWithInteams。

See all articles