是否可以在Concrete5 CMS中预定义区域的内容块?

时间:2012-10-30 13:50:58

标签: html content-management-system block concrete5

我正在使用Concrete5 CMS作为我的客户端项目但是存在(理想情况下)我希望能够以这样的方式嵌套HTML结构的问题,即内容编辑器将能够编辑网站而不用必须知道或写任何HTML。一个示例结构是......

<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结构中插入一个块。

感谢人们为我提供的任何帮助。

2 个答案:

答案 0 :(得分:2)

查看免费的Designer Content插件......您可以创建嵌入了标记的自定义块。这将使您获得要创建的标记的大部分内容。如有必要,您可以使用它创建的块代码并更精确地自定义自定义块。

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

答案 1 :(得分: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>