【问题标题】:Is it possible to pre-define the content blocks for an area in Concrete5 CMS?是否可以在 Concrete5 CMS 中预先定义一个区域的内容块?
【发布时间】:2012-10-30 13:50:57
【问题描述】:

我正在为我的一个客户项目使用 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 的特定结构中强制插入块。

感谢人们为我提供的所有帮助。

【问题讨论】:

  • 我不是 100% 确定我明白你的问题 - 你不是在谈论 嵌套 区域,而是每页多个区域,对吗?您在 HTML 中显示的内容肯定是可能的,但您在文本中所说的内容却不是
  • 抱歉,Pekka,我已经编辑了我的示例以(希望)更清晰。

标签: html content-management-system block concrete5


【解决方案1】:

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

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

【讨论】:

  • 谢谢,我已经在使用 Designer Content add on ;) -- 我想现在必须这样做。 TBH 我很惊讶 C5 背后的团队从一开始就没有将它构建为能够嵌套内容,毕竟 HTML 是一种嵌套语言(Doh!)。
  • 是的,我明白你的意思...另一方面,我认为他们为我们提供了几个不错的选择...技术要求的程度取决于您需要它的可重复性在一个页面内。
  • 例如,如果用户可编辑区域不需要重复,您可以在页面模板中定义所有这些元素,然后在页面模板设置中定义块类型默认值。但是,如果您希望用户能够即时添加一堆块元素,那么您拥有 Designer Content 插件和最终的块创建框架......无论如何,我认为该框架非常灵活,这很棒。
  • 我认为 C5 的底层架构围绕页面上的块展开,因此这始终是首选解决方案(就核心团队而言)。但当然,在某些情况下,您只需要一个块中的一些重复数据。我有一个长期项目,我希望在其中提供该功能,因为您不是唯一遇到此问题的人。不能说什么时候会完成(可能暂时不会)。
【解决方案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>

【讨论】:

  • 感谢 BrianJM,您可能是对的,也许我有点过于迂腐,不够客观。我确实以这种方式开始使用它,也许我应该回到它。
  • @Chris 我认为您将区域与块以及每个区域的预期功能混淆了。上面代码中定义的区域包含块。区域内不能包含区域,块也不能包含块。区域可以包含多个块。通常,当区域要求发生变化时,会设置多个模板。希望这会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-02
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多