On Thu, Sep 27, 2012 at 10:27 AM, Gour <
go...@atmarama.net> wrote:
> [...]
>
> a) Django-CMS
>
> b) FeinCMS and
>
> c) Mezzanine
>
> Some (FeinCMS & Mezzanine) offer CMS/blog/ecommerce in one or few
> closely related packages, while other (Django-CMS) can re-use 3rd party
> apps (here I'm thinking about Zinnia blog engine & djanho-shop).
>
> There are pro/cons for every approach, but we do not mind if
> combination allows us to achieve our goals.
Just as an example, FeinCMS' ApplicationContent allows the use of an
unmodified django-registration. What you say isn't wrong however, most
of the time some adaptation is required if you want to include apps via
ApplicationContent. That's not the only way to integrate 3rd party apps
though -- you always have the possibility to add
feincms.context_processors.add_page_if_missing to TEMPLATE_CONTEXT_PROCESSORS
to ensure the presence of a feincms_page variable in the template rendering
context so that you can use this page to render the navigation, the sidebar etc.
> I'm coming from Concrete5 (PHP CMS) where the page is divided
> into specific 'areas' and one can add as many as desired content type
> blocks to each page 'area' where content type blocks are like 'black
> boxes' encapsulating specific functionality (e.g. general content, form
> block, Google map, Image, RSS block, video player, download list etc.
> are some of the blocks available for re-use) and the end-user can use
> them like LEGO bricks to create customized content.
Yeah, that's exactly the way it's done in FeinCMS:
- We use the name `regions`, not `areas`, but that's exactly the same
- 'content type blocks': We use the same name for that
> Let's take simple page with the following template:
>
> header |
> --------------------------------- |
> | sidebar
> |
> main area |
> ----------------------------------|
>
> and I'd like to put together the following page:
>
>
> image |
> ----------------------------------|
> | RSS
> content (TinyMCE) | ------
> ----------------------------------|
> | Google map
> youtube video |
> ----------------------------------|
>
> iow. have image in the header, RSS & Google map displayed in the right
> sidebar and two blocks in the main are: content entered via tinyMCE
> editor as well as video player for youtube videos?
>
> I believe it's very close to the way Django-CMS do the things with
> their 'plugin placeholders'.
Yes.
> Otoh, it seems to me that Mezzanine cannot achieve the same thing (I did
> ask on their list about it and waiting for reply) easily due to "the
> idea of a content type is the same as a page".
>
> Is it possible to achieve such structure easily in the FeinCMS or how
> to do it?
Page.register_templates({
'title': _('Standard template'),
'path': 'feincms_base.html',
'regions': [
('main', _('Main region')),
('sidebar', _('Sidebar'), 'inherited'),
('header', _('Header'), 'inherited'),
],
})
This configuration assumes that you do not want to explicitly add
sidebar and header content to each and every page -- it's enough to
define some content on the root page, and all subpages which do not
override the sidebar and/or header region with their own content
automatically inherit the content type blocks of their ancestors.
> What if I'd like to swap order in .e.g main area having first 'block'
> with youtube video and then tinyMCE-generated content below?
>
> Does it require new custom structure to be defined?
No. All you have to do is drag the video (or the tinymce instance) to
the new place. All content type blocks have dragging handles with
which you can easily reorder inside one region.
> I really want to settle on *one* Django-based CMS framework which can
> solve all our web needs, so, please help me.
I think you wont be disappointed with FeinCMS. It does have a steeper
learning curve than the other Django-based CMSes, but it also offers
more flexibility. That may or may not be a good thing for your
particular use case -- that's your call to make.
Best regards,
Matthias