2012-10-30 30 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

相关问题