Kooboo development concepts

All Kooboo concepts are based on many years of web development experience. Our idea is that we should keep the learning curve as low as possible, allowing you to use your existing web development knowledge directly. In this article, I will explain how you can match Kooboo concepts to a standard web development experience.

Take a look at the Kooboo CMS, you should find the followings. 

kooboo_concept_start.png

In the left menu, you should find the following sub menus under “Development” tab. We will explain them below. 

Layouts

Views

Labels

Scripts

Themes

Custom files

Page Mapping

Plug-ins and Modules

Layout

Layout is part of the graphic design of your web page that is responsible for two things. 

Defines the page styles, script and Meta information. 

Defines positions for future elements like text content or widgets. 

Look at most of the webpages; you can see clearly the layout structure of it. One common example of it might be looks like below: 

Kooboo_layout_sample.png

Above is a typical two columns layout. Most of current websites use one, two or three columns, in each of the layout; there will be many varieties as well. In the two column layout, you can expect to see a lot of different types as below. 

kooboo_two_column.png

In the sample site we provide, you can also see very clearly the layout of it. 

 

Kooboo_layout.png



View

A View is used to accept data from data model or other source and generate an output representation of the data. In Kooboo CMS, the data can come from plugin or Datarule. 

For example, the list page or the detail pages of articles are views. 

 Kooboo_View.png



Labels

Labels are small text of the website.

Kooboo_label.png




Scripts

Scripts folder contains the JavaScript that will be used on your website; you can put all your JavaScript files in the folder. 

To make the scripts available for pages to use, use the following commands in the related layout. 

@Html.FrontHtml().RegisterScripts()

This will register all JavaScript files found on the scripts root folder into the layout, in some pages, you may not need to have all the script files, you can add reference to one script file by using the following API

@Url.FrontUrl().ScriptFileUrl(string relativeScriptFilePath)

Some people are afraid that loading all scripts files into all pages will be a waste of bandwidth. This is not really such an issue, because all JavaScript files should only be loaded once. The next request to the same file, most of modern browsers will use the existing local cache copy of that JS file. 

By default, the expiration date of JavaScript and Style sheet files is one month. However, if you modify any files in the Scripts or Theme folder, Kooboo CMS use a new version number for that file, which will result in cleaning of browser cache. 




Theme

Theme works identical same as Scripts, only the API are slightly different. 

@Html.FrontHtml().RegisterStyles()

@Url.FrontUrl().ThemeFileUrl("images/header-bg.png")

And Theme has an additional Theme.rule file that determines the rendering order or tag of css files in that folder. For example, you can define below code in the rule file. 

<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="ie.css" /><![endif]-->



Custom files

Custom files is a file storage location where you can just upload or create files in it and then refer to it using API, for example: 

<img src="@Url.FrontUrl().FileUrl("kooboo.png")" />


Page Mapping

This is for the missing page link in the MVC routing, once you change the page URL or one of the action URL is not available, you can find the missing routing here and reconnect them manually. 


Plugins and modules

Plugin and module are more advanced add-ons to your websites. Both can contain complex business logic inside, the difference between Plugins and Modules is that Plugin does not have UI while Module can contain UI for both front end website and back end CMS management. 

Kooboo CMS provides you Visual Studio.NET templates to build your plugins or modules. More information about plugins and modules will be explained in another chapter.