Development and customization
File architecture
The file structure is organized in a way that the core files of the ZCMS are isolated in separate folders so that it can be easily upgraded to the latest compatible version.
logic #here are located the files that contain all the business logic used in the application's modules
root/module/core #this is the core modules folder
root/public_html/core #it contains the client side files like CSS and JS
You have to keep the files contained in these folders untouched. Instead you can override the core modules by creating
new modules in root/modules
for example, and place your client side files in root/public_html
folder
Customizing the appearance
If you need to customize the front end user area appearance of the website, then you can do that by creating new module,
named lets say root/module/ApplicationOverride
. This module will contain only the view files from Application
module
that you want to override plus the file root/module/ApplicationOverride/Module.php
. It'll also contain
a root/module/ApplicationOverride/config/module.config.php
file, that will actually map the files to be overridden.
It's content might look like the following:
return array(
'view_manager' => array(
'template_map' => array(
'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
'application/index/index' => __DIR__ . '/../view/application-override/index/index.phtml',
),
'template_path_stack' => array(
__DIR__ . '/../view',
),
),
);
Then you need to create or copy paste the corresponding view .phtml
files respectively
from root/module/core/Application/view/layout/layout.phtml
to root/module/ApplicationOverride/view/layout/layout.phtml
and
from root/module/core/Application/view/application/index/index.phtml
to root/module/ApplicationOverride/view/application-override/index/index.phtml
and after that you may customize the newly created files according to your needs. You can update the CSS & JS file references
in root/module/ApplicationOverride/view/layout/layout.phtml
to point to your newly created client-side files in root/public_html
folder.
Extending the CMS
In order to extend ZCMS you have to be experienced in the development of applications using Zend Framework 2 and Doctrine 2 ORM.
The ZCMS file structure contains various modules located in the folder root/module/core
and the most important
are Application
containing the front-end (user area) files and Admin
containing the administration area files.
The JavaScript and CSS code is located in the public_html/core
folder. It is recommended to consult and stick with
the best practices described in the Zend Framework's documentation
and Doctrine ORM's documentation while
developing and changing the functionality.
In order to add/extend/override some of the logic in root/module/core/Application/Module.php
you can write some code in the newly created root/module/ApplicationOverride/Module.php
and or in ApplicationOverride/src/ApplicationOverride/Controller/YourController.php
. You have to register the new module in root/config/application.config.php
, listing the new module after the module being overridden:
return array(
'modules' => array(
'Application',
'MainMenu',
'Admin',
'Languages',
'AdminLanguages',
'ApplicationOverride',
),
'module_listener_options' => array(
'module_paths' => array(
'./module/core',
'./module',
'./vendor',
),
'config_glob_paths' => array(
'config/autoload/{,*.}{global,local}.php',
),
),
);