2012-07-30 50 views
1

我對錶達式引擎相對來說比較新,而且當我學習它時,我看到一些WordPress缺少的東西。對我來說最重要的是簡碼,因爲我將使用它們來允許CMS用戶使用其他內容放置更復雜的內容。Expression Engine中的任何方式來模擬Wordpress的短代碼功能?

除了即將推出的內置測試版外,我在EE中看不到任何真正的等價物。

作爲初始測試,我試圖通過在內容字段中使用分隔字符串(例如#foo#)來僞造shortcodes,然後使用正則表達式將其拉出並將它們傳遞給可以檢索內容的函數EE的數據庫。

這使我想到了第二個問題,即在查看EE的API文檔時,似乎沒有一種簡單的方式來以編程方式檢索通道條目(考慮類似WP的內置get_posts函數)。

所以我的問題是:

一)可以這樣做? b)如果是這樣,我的方法是否合理?還是在我的方法中缺少一些愚蠢的明顯東西?

重申一下,我的主要目標是讓一些管理內容的人在他們的內容中放置一段代碼,以取代頻道內容。

感謝您的任何建議或幫助您可以給我。

+0

我完全理解你是否想用另一個字段的圖像或數據替換一些#foo#標籤(請參閱其他答案:nsm-transplant,low_replace)。但是,給編輯器訪問短代碼就像編寫一個模板引擎來生成ee-template代碼。 – GDmac 2012-10-29 17:11:33

回答

0

我聽到你,我也懷念WP的簡碼 - 儘管他們工作的原因如此輕鬆,但無處不在the_content()。 EE的巨大靈活性帶來了更少的整體解決方案。我想建議看看NSM Transplant。它應該適合你的賬單。

+0

謝謝 - 這是一個有趣的視頻,用於高級示例。然而,在這個例子中,他們表明他們正在使用NSM Transplant從渠道領域獲取數據,這是他們展示的條目的一部分。 NSM移植支持是否支持抓取任意內容?從文檔來看,我不清楚這是否屬實。 – jtwg 2012-07-30 23:07:16

+0

啊,是的,你是對的。它不適用於從另一個Channel Entries循環中抓取(因爲無法在Channel Entries循環中安全地嵌套Channel Entries循環),並且嵌入也不起作用(因爲嵌入在所有其他標記之後被解析*)。 – 2012-07-31 01:40:16

3

下面是您正在尋找的功能的一個簡單示例。

1)首先安裝Low Replace

2)分別創建兩個名爲gv_hello和gv_goodbye的值爲「Hello」和「Goodbye」的全局變量。

3)將這個文本到一個項目的本體:

[say_hello]

很高興見到你。

[say_goodbye]

4)將這個到您的模板,包裹不足更換你的身體周圍場的標籤。

{EXP:low_replace 查找= 「[say_hello] | [say_goodbye]」 替換= 「{gv_hello} | {gv_goodbye}」 多個= 「是」 } {體} {/ EXP:low_replace }

5)應輸出到這個瀏覽器:

你好

很高興見到你。

再見

顯然,這是一個非常簡單的例子。您可以將完整的HTML放入您的全局變量中。例如,我們使用它來渲染複雜的交互式圖形,該圖形不可編輯,但可以由任何編輯器輕鬆放入頁面。

不幸的是,由於解析順序問題,EE標籤在全局變量內不起作用。如果您在短代碼輸出中需要EE標籤,則需要使用Low Variables插件而不是全局變量。

0

還有一個叫簡碼插件,你可以在 Devot-ee 從網頁A報價在這裏找到:

簡碼的目的是允許由作者和 編輯器的更多動態內容的使用,使用於注射的內容,甚至 全功能件可重複使用的比特到任何領域EE

1

從註釋續:

您是否有想要支持/包含的短代碼類型的示例?因爲我懷疑從文本字段或wysiwyg字段控制頁面佈局是否可行。

如果您希望編輯者能夠調整佈局或在頁面上顯示/隱藏額外的部分,讓他們訪問頻道中的一些額外字段,(imo)更易於管理和麪向未來。例如,某些選擇字段,關係(或playa)字段或矩陣,以便讓他們選擇要在頁面上包括/排除哪些部分,或從另一個頻道的哪個條目拉取內容。

正如在評論中所說:我完全理解你是否想用某個#foo#標籤替換來自其他字段的圖像或數據(請參閱其他答案:nsm-transplant,low_replace)。但是,讓編輯訪問短代碼並挑選它們就像編寫一個模板引擎爲ee-template-engine生成ee-template代碼。

使用一些自定義字段讓編輯挑選和選擇要嵌入的部分,我認爲,更易於管理。這就是說,你可以製作一個插件來解析textareas內容的短代碼,然後編程很多,從你想要支持的其他模塊中獲取數據。對於頻道條目,您可以通過objectiveHTML構建出頻道數據庫。 https://github.com/objectivehtml/Channel-Data