自定义块(布局?)在Concrete5中包含其他块


Custom block (layout?) containing other blocks in Concrete5

我为客户做了一些网站,他们是…不懂技术…需要一种简单的方法来编辑他们的网站,在我为他们做了之后。为此,我一直在用Concrete5编写我的许多网站。

最近我收到了一个将http://www.windowfashionsonwheels.com翻译成Concrete5的项目。快速浏览一下源代码就会发现,它只不过是表中的表……太可怕了。我一直在努力用最少的HTML和CSS来重建确切的外观和结构,但我遇到了一个小问题。

在主页上,如果你稍微向下滚动,在主体的左侧会有一个浅灰色的框,其中包含四个不同的内容块。这个部分有不同的背景色,圆角,甚至渐变边框,只是为了让我的工作更难一点。

我可以通过在Concrete5中创建单个Content块并应用自定义设计(背景色,CSS3圆角和CSS3图像边框)来模拟这个框的外观。然而,由于这在很大程度上依赖于CSS3,它不能正常显示在旧的浏览器或Internet Explorer,加上它只允许我一个单一的内容块工作(不理想,如果我想有文本和幻灯片或其他块在同一浅灰色的正方形)

我可以很容易地将这个浅灰色的正方形添加到主题本身,但是它不会出现在所有页面上。创建两种不同的页面类型似乎也太麻烦了,一种用于有灰框的页面,另一种用于没有灰框的页面。

我还可以为生成这些<div>对象的Content块创建一个自定义模板,允许我将它们放置在我想要的任何页面上的任意位置-但是这只允许浅灰色框包含单个Content块。它不允许我在同一个框中放置一个Content块和一个Slideshow块。

我也可以添加一个HTML块,但我希望假设我的客户不懂HTML,我希望她能够编辑自己的页面。

理想的解决方案是创建一个生成这个新的背景和边界的块(使用多个<div>对象来创建圆角和老式的方式),然后允许在这个块内放置块,这样我就可以有我想要的任何类型的内容。然而,据我所知,Concrete5不允许块内块。然而,它确实允许布局内部的块-但据我所知,布局是为多列页面设计的,而不是专门的边框。

如果有人有使用Concrete5的经验,并且有解决我的问题的方法,请帮助。

对于您的具体情况,创建新的页面类型似乎是理想的解决方案。你说"似乎太多的工作",但创建一个页面类型是所有选项中最简单的(方式在大多数情况下比创建自己的块更容易,尽管更多的细节见下文)。你所要做的就是复制你当前的模板文件,重命名它,为这个灰框添加一个新的HTML,并把这个"区域"代码放在你的新灰框HTML(当前内容所在的位置):

<?php
$a = new Area('Grey Sidebar');
$a->display($c);
?>

然后进入仪表板->页面和主题,点击当前主题旁边的"检查"按钮,你会看到新页面类型旁边有一个复选框——点击"安装"按钮(或者叫什么,我不记得了,但当你看到它的时候很明显)。

现在,看看你链接到它的网站似乎灰色框内的内容是相当"设计"的,并坚持一致的格式(标题,缩略图,段落)。如果你想确保保持这种格式,同时仍然让非技术用户很容易编辑内容,我已经为这种情况创建了一个块生成器插件:http://concrete5.org/marketplace/addons/designer-content

如果我正在构建这个网站,我会结合这两种技术(为周围的灰色框HTML设置页面类型,并为每个内部块使用Designer Content制作自定义块)。但也许在你的情况下,你实际上不希望灰框的内容总是看起来一样(就像它们现在在你链接到的网站上一样)——在这种情况下,只需要使用灰框的页面类型,并尽你最大的努力将内部内容与这种风格"隔离"开来,这样用户添加的任何块都不会意外地干扰灰框周围的环境(基本上要确保有一个大的

并在周围的HTML/CSS中设置明确的宽度或任何你需要的内容)