2012-10-30 62 views
1

我使用Concrete5 CMS作爲我的客戶端項目,但有問題(理想情況下)我希望能夠嵌套HTML結構,以便內容編輯器能夠編輯該網站而無需知道或寫任何HTML。一個例子結構...是否可以預先定義Concrete5 CMS中某個區域的內容塊?

<header class="page-header"><!-- Defined as a GlobalArea --> 

    <div class="site-meta"><!-- Defined as a Block Group (Stack?) --> 
     <p class="contact-info"><!-- Defined as a Block --> 
      <!-- User editable content --> 
     </p> 
     ....other content... 
    </div> 

    <div class="branding"><!-- Defined as a Block group --> 
     <div class="logo"><!-- Defined as a Block --> 
      <!-- User editable content --> 
     </div> 

     <hgroup><!-- Custom wrapper of sub-blocks --> 
      <h1 class="brandname"><!-- Defined as a Block --> 
       <!-- User editable content --> 
      </h1> 

      <h2 class="tagline"><!-- Defined as a Block --> 
       <!-- User editable content --> 
      </h2> 
     </hgroup> 
    </div> 

    <p class="description"><!-- Defined as a Block --> 
     <!-- User editable content --> 
    </p> 
</header> 

正如你可以看到我需要一個定義的內容「區」(或分組區域)內,以更大的「元」塊劃分單獨的用戶可編輯的內容「塊」。雖然我的理解是Concrete5不能以這種方式運行 - 即區域不能包含其他區域,並且塊不能包含其他區塊。

在這種情況下,我想知道如何使用原始的php代碼從數據庫手動加載特定的內容塊。這樣我希望能夠預先定義給定區域的內容塊,並希望在特定的HTML結構中強制插入塊。

感謝您提供給我的任何和所有幫助。

+0

我不是100%確定我明白你的問題 - 你不是在談論*嵌套*區域,而是每頁只有多個,正確嗎?您在HTML中顯示的內容絕對有可能,但是您在文本中說的內容不是 –

+0

對不起Pekka,我編輯了我的示例(希望)會更清楚。 – Chris

回答

2

看看免費的設計器內容插件...您可以創建嵌入了標記的自定義模塊。這將使您獲得您正在創建的標記的大部分路徑。如有必要,您可以使用它創建的塊代碼並更精確地自定義您的自定義塊。

http://www.concrete5.org/marketplace/addons/designer-content/

+0

謝謝,我已經在使用設計器內容添加;) - 我想它現在必須做。 TBH我很驚訝,C5背後的團隊從一開始就沒有建立起能嵌套內容的能力,畢竟HTML是一種嵌套語言(Doh!)。 – Chris

+0

是的,我明白你的意思......另一方面,我認爲他們已經爲我們提供了幾個很好的選擇......技術要求的程度取決於你需要在頁面內的可重複性。 – tofraser

+0

例如,如果不需要重複用戶可編輯區域,則可以在頁面模板中定義所有這些元素,然後在頁面模板設置中定義塊類型默認值。但是,如果您希望用戶能夠即時添加一堆塊元素,那麼您擁有Designer Content插件並最終創建塊創建框架......無論如何,我認爲該框架非常靈活,這很棒。 – tofraser

2

是否真的有業務需求的上層區域組,嵌套的地方?這通常由模板處理。例如:

<header class="page-header"> 

    <div class="site-meta"> 
     <p class="contact-info"> 
      <?php 
       $a = new Area('Contact Info'); 
       $a->display($c); 
      ?> 
     </p> 
     <!-- ....other content... --> 
    </div> 

    <div class="branding"> 
     <div class="logo"> 
      <?php 
       $a = new Area('Logo'); 
       $a->display($c); 
      ?> 
     </div> 

     <hgroup> 
      <h1 class="brandname"> 
       <?php 
        $a = new Area('Brand Name'); 
        $a->display($c); 
       ?> 
      </h1> 

      <h2 class="tagline"> 
       <?php 
        $a = new Area('Tag Line'); 
        $a->display($c); 
       ?> 
      </h2> 
     </hgroup> 
    </div> 

    <p class="description"> 
     <?php 
      $a = new Area('Description'); 
      $a->display($c); 
     ?> 
    </p> 
</header> 
+0

感謝BrianJM,你可能是對的,也許我太過於迂腐,不夠客觀。我已經開始用這種方式來處理它,也許我應該回到它。 – Chris

+0

@Chris我認爲你是混淆區塊與每個塊的目標功能。在上面的代碼中定義的區域包含塊。區域中不能包含區域,也不能包含區塊。區域可以包含多個塊。通常情況下,當面積需求發生變化時,會設置多個模板希望這可以幫助。 – BrianJM

相關問題