在Silverstripe的后端管理动态,响应迅速的内容

时间:2014-01-27 10:47:41

标签: responsive-design content-management-system silverstripe

我目前正试图通过让内容更具吸引力来为SilverStripe网站添加爵士乐。该网站是响应式的,但所有这一切意味着当前导航栏/标题在达到移动断点时会捕捉到更具移动性的风格。

它的长短是,我的主要page.ss就是这样:

<html>
    <head>
        <title>$Title</title>
    </head>
    <body>
        $Header
        $Layout
        $Footer
    </body>
</html>

使用$Layout呈现基本页面的一些变体。我们有几个布局旨在让我们的网站管理员页面更具吸引力 - 例如我们有一个手风琴类型页面,其中有许多手风琴部分DataObjects,它将页面显示为带有开放的手风琴页面/关闭javascript功能。

但这还不够。我想让网站管理员在CMS中更灵活地创建有趣的页面,而不必创建数百种不同的页面类型。

我正在考虑创建一个模块来摆脱所有页面的主$Content字段,而是插入一种网格系统管理字段。网站站长可以添加行(DataObject),然后将这些行拆分为多个部分(另一个DataObject)。这些部分将有一个由TinyMCE管理的内容字段,就像页面一样。然后在前端我将这些行和部分映射到响应式网格系统。

对于各个部分的变体,我将添加稍微不同的类(有点像具有不同的页面类型)。这些部分将有.ss和.css(以及可能的.js)来控制自己的外观。

我的问题是,其他人如何处理这个问题?我的想法听起来有点矫枉过正吗?或者对于模块来说这听起来不错?

-

对于我想要实现的一些例子,这个页面就是一个很好的例子:

http://www.wingsforlife.com/en/research/

内容分为不同的部分,可以在调整页面大小时更好地控制。在整个网站中,内容也是多种多样的,有时它会在一个列中,有时则是两列,当窗口较小时,它会捕捉到一列。

在主页上,如果向下滚动,则圈内会显示4个链接,其中包含数字和部分文字:http://www.wingsforlife.com/en/

这是我在TinyMCE中看不到的东西(这很公平,因为TinyMCE只是一个基本的内容编辑器,而不是网页设计工具)。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

这可以通过一些GridField替换链接到数据库中的Content字段的HTMLEditorField来轻松实现,管理构成你可能称之为'ContentParts'的DataObjects。我们已经在一些项目中使用了这种方法,以允许更多内容元素的呈现灵活性。

只需将一些DataObject绑定到Page类:

private static $has_many = array(
    'ContentParts' => 'ContentPart'
);

然后,使用GridField在getCMSFields中管理它们:

$gridFieldConfig = GridFieldConfig_RecordEditor::create();
$field_ContentParts = new GridField('ContentParts', 'Content Parts', $this->ContentParts(), $gridFieldConfig);

在模板中呈现它们的最简单方法如下:

<% loop ContentParts %>
<section>...</section>
<% end_loop %>

当然,您希望拥有不同的内容部分,因此您可能希望使用自定义字段创建ContentPart的子类,并使用GridFieldAddNewMultiClass组件将它们添加到GridField(它是GridFieldExtensions模块,可在此处找到:https://github.com/ajshort/silverstripe-gridfieldextensions

HTH