我正在使用Concrete5为页面创建自定义模板。我有三个块,包含在div类中,我想在一页中重复。例如:
<div class="block-wrapper">
<div class="title"><?php $a = new Area('Title'); $a->display($c);?></div>
<div class="description"><?php $a = new Area('Description'); $a->display($c);?></div>
<div class="autonav"><?php $a = new Area('Autonav'); $a->display($c);?></div>
</div>
CSS就是这样的:
.block-wrapper {
padding: 20px 5px 20px 5px;
border: 1px solid #e8e8e8;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.title {
float: left;
}
.description {
float: right;
}
我想要的是能够用里面3个可编辑的块重复块包装器。例如,生成的页面如下所示:
<div class="block-wrapper">
<div class="title">Steve</div>
<div class="description">Engineer</div>
<div class="autonav">Link A | Link B | Link C</div>
</div>
<div class="block-wrapper">
<div class="title">Betty</div>
<div class="description">Designer</div>
<div class="autonav">Link D | Link E | Link F</div>
</div>
......等等。我希望我足够清楚。这可能吗?我有什么选择?理想情况下,我可以尽可能自由地设置块和块包装器的样式。
答案 0 :(得分:2)
根据您的具体情况,有一些不同的解决方案。内置的Concrete5方法是在Area对象上使用setBlockWrapper
方法。例如:
<?php
$a = new Area('Main');
$a->setBlockWrapperStart('<div class="block-wrapper">');
$a->setBlockWrapperEnd('</div>');
$a->display($c);
?>
请注意,在编辑模式下不会显示块包装器。
另一种方法(如@BGundlach所提到的)是使用免费的Designer Content插件并创建一个自定义块类型,每个数据块都有单独的字段,并在每个字段周围提供相应的包装器HTML。但是,看看你的例子,我发现你有一个字段是各种各样的“autonav”......所以我不确定这个字体是如何填充的。
第三种方法是非免费Designer Content Pro插件,它允许您使用重复项创建自定义的封闭类型(这可能对您的导航字段有用...因此用户可以选择任意数量的导航链接想要...但这更像是一个“手动导航”而不是“自动导航”。)
免责声明:我是Designer Content和Designer Content Pro插件的作者(但是他们的创建是为了解决这个问题,所以我觉得这很适合)。
答案 1 :(得分:1)
如果我理解正确,可能的选择是以编程方式创建三个区域。例如,您可以使用句柄number_of_bio_blocks
创建一个新的Page属性,然后再创建类似
<?php
$num = intval(Page::getCurrentPage()->getAttribute('number_of_bio_blocks'));
if ($num) {
while ($num--) {
?>
<div class="block-wrapper">
<div class="title"><?php $a = new Area('Title ' . $num); $a->display($c);?></div>
<div class="description"><?php $a = new Area('Description ' . $num); $a->display($c);?></div>
<div class="autonav"><?php $a = new Area('Autonav ' . $num); $a->display($c);?></div>
</div>
<?php
}
}
?>
或者可能只设置10个任意数量的区域,因为那些未归档的区域将不会显示。据我所知,没有一种通过界面添加区域的方法。此外,创建这样的区域将使用其他未使用的区域填充数据库。我不确定你是否担心这一点。
建议使用Designer Content,现在有Designer Content Pro允许您在块中添加多个重复字段。这不允许任意块,但如果您需要富文本和图像等内容,那么这可能是一个不错的选择。
答案 2 :(得分:0)
为什么不使用一个区域和一个重复块类型?较少的区域可以更好地确保性能。
我不确定Jordanlev的设计师内容块中是否有autonav选项,但我确信它会为您完成所有这些操作。 http://www.concrete5.org/marketplace/addons/designer-content/我已将此作为我自己的许多块的基础。它使您可以控制所有标记。
说明中指出:
Designer Content是一个非常宝贵的工具,允许设计人员轻松创建自定义块类型。这样做的目的是使用户能够直接进行内容编辑,并确保维护样式 - 而不必依赖复杂且容易出错的TinyMCE样式。例如,假设您网站上的某些页面将包含有关公司员工的信息,每个员工都有一个名称,一个生物图像和一个简要说明 - 您可以创建一个带有文本框字段的自定义块用于名称,生物图像的图像选择器,以及用于描述的所见即所得编辑器。您还可以在html片段(例如,带有类的div)中包围每个元素,以确保内容将被正确设置样式,而无需用户处理挑剔的TinyMCE工具栏。