cms

A modern and lightweight CMS module fit for any Yii project
93 followers

Current version 0.9.0

NordCms is a stand-alone module developed by Nord Software Ltd. This extension provides the core content management system functionality such as multilingual content and in place editing of content to any Yii project. NordCms is licensed under the New BSD License, please see the LICENSE file.

This extension was developed under a period of two weeks and there is definitely still room for improvement here and there. However, I wouldn't have released it to the public unless I was satisfied with it. I will continue working on improving this module in the future as well.

Links

What's included?

  • In place content editing using MarkItUp
  • Custom tags for dynamic content
  • Rendering of nodes as pages and/or widgets
  • Attachments such as images and other files
  • Multilingual content
  • Search engine optimization for pages
  • Support for both internal and external links
  • Email address obfuscation
  • Theme that uses my Bootstrap extension

For more detailed information please read the Usage section.

Setup

Unzip the extension under protected/modules/cms and add the following to your application configuration:

'imports'=>array(
    .....
    'application.modules.cms.CmsModule',
),
'modules'=>array(
    .....
    'cms',
),
'components'=>array(
    .....
    'urlManager'=>array(
        .....
        'rules'=>array(
            .....
            'page/<name>-<id:\d+>.html'=>'cms/node/page', // clean URLs for pages
        ),
    ),
    'cms'=>array(
        'class'=>'cms.components.Cms'
    ),
),

Next you need to create the necessary database tables by running the schema.sql in the data folder.

Configuration

The cms application component supports the following configuration parameters:

'cms'=>array(
    'class'=>'cms.components.Cms'
    // the names of the web users with access to the cms
    'users'=>array('admin'),
    // the langauges enabled for the cms
    'languages'=>array('en_us'=>'English'),
    // the default language
    'defaultLanguage'=>'en_us',
    // the types of files that can uploaded as attachments
    'allowedFileTypes'=>'jpg, gif, png',
    // the maximum allowed filesize for attachments
    'allowedFileSize'=>1024,
    // the path to save the attachments
    'attachmentPath'=>'/files/cms/attachments/',
    // the template to use for node headings
    'headingTemplate'=>'<h1 class="heading">{heading}</h1>',
    // the template to use for widget headings
    'widgetHeadingTemplate'=>'<h3 class="heading">{heading}</h3>',
    // the template to use for page titles
    'pageTitleTemplate'=>'{title} | {appName}',
    // the application layout to use with the cms
    'appLayout'=>'application.views.layouts.main',
    // the name of the error flash message categories
    'flashError'=>'error',
    'flashInfo'=>'info',
    'flashSuccess'=>'success',
    'flashWarning'=>'warning',
),

Please note that this is the component configuration, NOT the module.

Usage

Creating a page

Pages are created by linking to them. To create a page add the following to one of your views:

Yii::app()->cms->createUrl('foo');

What the above code does it creates a node with the name 'foo' (if it doesn't already exist) and returns the URL to that node.

You can also set the following page properties: URL, page title, meta title, meta description, meta keywords.

Creating a block

Blocks are used for displaying Cms content within views and they can be created using the CmsBlock widget. To add a block, add the following code to one of your views:

<?php $this->widget('cms.widgets.CmsBlock',array('name'=>'bar')) ?>

Adding content to a node

If you have permissions to update Cms content an 'Update' link will be displayed below the content. Nodes have a set of properties that can be specified per language:

  • Heading - the main heading
  • Body - the content
  • Stylesheet - stylesheet associated with the content
  • URL - the page URL (page/{url}-{id}.html)
  • Page Title - the page title
  • Breadcrumb - the breadcrumb text
  • Meta Title - the page meta title
  • Meta Description - the page meta description
  • Meta Keywords - the page meta keywords

Please note that the page properties are only used with pages.

It is possible to create relations between nodes by setting the parent. This will help you organize your content and it will also automatically set the correct breadcrumbs.

Editing content

You can use various tags within the body-field:

  • {{heading}} - the main heading
  • {{image:id}} - displays an attached image
  • {{node:name}} - _displays an inline node
  • {{file:id}} - creates a link to an attached file
  • {{email:address}} - creates a mailto link
  • {{name|text}} - creates an internal link
  • {{address|text}} - creates an external link

Please note that you cannot render inline nodes using the block widget.

Using NordCms with Bootstrap

NordCms comes with a theme that can be used with my Bootstrap extension.

To enable the bootstrap theme you first need to download and setup Bootstrap. When you have Bootstrap up and running you need to copy the files in themes/bootstrap/views to you themes/views folder. If you're not familiar with Yii's theming, read more about it here.

What's next?

  • Improving the interface for attachments
  • Further SEO optimization
  • Content revisions ?

Changes

May ?, 2012

  • Release 2.0.0
    • Polished UI using Twitter's Bootstrap
    • Functionality for creating menus
    • Page and blocks as separate models
    • Added page types to distinguish content
    • Database migrations
    • Requires Yii-Bootstrap
    • Changed to use Bootstrap as default
    • Removed themes

Stay tuned for the release!

Dec 15, 2011

  • Initial release

Total 20 comments

#11813 report it
Alegbe Bamidele at 2013/02/05 11:02am
Please When us the version 2. 0 coming out?

i am working on a project, i am using yii bootstrap i think i would like to use nordCMS.. pls i am waitin for your reply...

#11667 report it
Tariq Aziz at 2013/01/25 11:20am
unable to access the module

I have configured and copy the module Now when I run the URL

localhost/webapp/index.php/cms

It says unable to solve the request "cms"

#11414 report it
rooney10 at 2013/01/12 09:13am
Version 2.0

Just wanted to know if the new announced version will come online, or has the work stopped? Thx :)

#10076 report it
WebDevPT at 2012/10/03 10:15am
Good job!

Keep up the good work.

Looks very cool and easy to change pages within the admin area.

#9830 report it
Hesam Khaki at 2012/09/13 06:07pm
about V 2.0

hi, thank you for your great extensions, including rights ans Bootstrap. I'm currently about to start a new project, is it worth to wait for V 2.0 to release? is there going to be any release in near future at all? :)

#9326 report it
abajja at 2012/08/03 06:46am
Try out version 2.0

clicking on Try out version 2.0 and got:

Cms: Failed to create page. Name "вася" is invalid.
#8958 report it
Tomas L at 2012/07/09 06:40pm
Looking forward

Hey, really good job! Demo online is already V2.0 - correct? So you have it prepared? When could you put files on Bitbucket? Or maybe you could email ziped files?

#8897 report it
barcelona23 at 2012/07/06 07:47am
V2.0

Exc extension.

Where is V2.0??

#8814 report it
ibo_s at 2012/06/29 04:13pm
2.0

Hey,

where and when can we get V2.0 ? Is it not release ready yet ?

I would also like to contribute in any way.

Thx :)

#8585 report it
pckabeer at 2012/06/13 02:41am
Good Work

Great works guys.Keep the Spirit Going ......

#8475 report it
andyofb at 2012/06/06 08:20am
When is Release 2.0.0 set for?

Any ideas when the release will be?

#8159 report it
peili at 2012/05/13 05:54pm
Please Fix the Demo

Please Fix the Demo -- Thank you!

#8045 report it
Lastik at 2012/05/05 07:58am
Demo not working

Demo not working :-(

#7043 report it
Tibor Katelbach at 2012/02/21 02:13am
use view files as cmsWidgets

I want to add this into a node {{nodeFile:pathtoview}} which would simply render a view file as part of the nodes render I'm wondering if maybe someone had this running ?

#7017 report it
Tibor Katelbach at 2012/02/19 11:10am
multi lingual

Hi Guys Thanks for the great module , it's promissing I was trying to play with internationalisation but as I change locale, the content disapears? it only works when local is empty I set up my 2 languages in the components configs is there something else to set up ? The Admin tool give the Languages to ttranslate which is fine but the front end reacts strangely I noticed the module stops working if sourcemessage and language parameters are used in the config file

could you show us how to use localisation for Node or widget Rendering ? in your demo I see http://www.cniska.net/cmsdemo/index.php/languages/default/changeLanguage/language/sw is this a language module ? self Answer : The module uses Yii::app()->language set up programaticaly or from the main config 'language' => 'en_us' The Module will then render the content localised to the active language

#6767 report it
Chris83 at 2012/02/03 10:48am
@qstyler

Yes it definitely would but it's not that simple. Do you have any suggestion on how to achieve this?

#6766 report it
Chris83 at 2012/02/03 10:47am
@morten

The Controller class is not a part of Yii, it's just a class generated by the webapp command. Not everyone uses that command so you cannot rely on that the class actually exists in every application.

#6618 report it
qsrtlwe at 2012/01/22 05:08am
Would be nice...

... to have custom URLs (not page/xxxx) and a good menu manager.

#6602 report it
morten at 2012/01/20 08:01am
CmsController to extend Controller not CController?

Shouldn't the CmsController extends Controller and not CController for it to include changes to the Controller one may have made - for instance doing stuff on init?

CmsController.php line 14

class CmsController extends CController

to

class CmsController extends Controller

Great extention - thanks! :)

#6361 report it
Chris83 at 2012/01/03 02:12am
@rhertogh

Thanks for noticing this issue. I've fixed this and it will be included in the next release.

Leave a comment

Please to leave your comment.

Create extension
Downloads