0.7.9 (Release Date: Dec 15, 2023)
@Copyright© 2026 assigned by Vincent Hallberg of custodiancms.org and modusinternet.com
License (MIT)Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Custodian CMS (CCMS), designed for websites that need to provide content in more than one language but without being split up into multiple domains or templates. If you live in a multilingual country, provide information, or sell products/services internationally CCMS's simple templating system can help you build a website your visitors can understand.
CCMS is not a WYSIWYG system or set of pre-built templates for building quick and dirty blogs. It is a tool for real website developers and people that would like to build their own secure, portable, multilingual, websites without a lot of confussing and bloated foundation work in the way.
We do as much as humanly possible to make sure the CCMS parser and automated services are secure and SEO compliant, but nothing on the Internet seems to be bulletproof these days so we're not going to make any claims here. For now, all we're going to say is that we are always looking for things that can be improved or optimized in CCMS. The Internet is a vast and complex virtual environment. Building a fast, secure, and flexible content management system requires access to people with years of experience in multiple disciplines. So if anyone wants to help, please let us know at info@custodiancms.org, because we don't claim to know everything and are always willing to learn something new.
In the meantime, here are a couple of screenshots of results from some online tests we regularly do that help us make sure the CCMS code base and these example templates are working as desired.
The following section demonstrates how to build links in your HTML to expose translated content found in the database.
"Der schnelle braune Fuchs sprang über den faulen Hund."
"Wenn Pat ankommt, fax schnell an Richter Zombie."
"Jede gute Kuh, jeder Fuchs, jedes Eichhörnchen und jedes Zebra springt gerne über glückliche Hunde."
"Packe meine Kiste mit fünf Dutzend Schnapsgläsern."
"Platzieren Sie hier die Beschreibung Ihrer Website und Ihrer Dienstleistungen."
Content specific images based on browser language codes are even easier to work with. Each of the images below are saved on the server in 5 different languages and as you change your desired language using the links above the images below will reflect that change.
The following links are to example pages of translated static content. FYI: Translation provided by Google so forgive me if its a little off. (Any tranlation assistance would be greatly appreciated.)
Seite #1 | Seite #2 | Seite #3
The templates you are looking at now can be found in /ccmstpl/ and the /ccmstpl/index.html file is currently configured in your /ccmspre/config.php file to be your default starting template. (The first template CCMS parses when nothing else is specified) For the purposes of this demonstration there is only one template, besides a few error templates, found in the /ccmstpl/ directory which you can read and overwrite when you are ready. All other resources related to what you see here now are located in the /ccmstpl/examples/ directory. When you are ready you can delete this folder and all of its contents as-well.
CCMS does not come with an admin system yet, it won't be ready till the next big release. Fortunately its not needed to take advantage of CCMS's features, for now you need to use tools like phpMyAdmin to add, remove or update your database inserts.
The following is a guide on how to add new languages and content to the database using phpMyAdmin. Once the new admin system is ready this will become trivial.

Add the browser language codes you want your site to support to the ccms_lng_charset table above and set one of them to default (1). Visit www.fincher.org/Utilities/CountryLanguageList.shtml for a full list of browser language codes. You do not need to keep all the languages codes that are installed by the /ccms-setup-db.sql file. They are just there as an example for you and to help demonstrate what a site supporting a large number of languages and pointer languages might look like. (If you change the languages you wish to support in the ccms_lng_charset table remember to add or remove language columns as needed in the ccms_ins_db table aswell.)
If you are adding a new pointer language (ptrLng) you do not need to include the character direction (dir) or a language column in the ccms_ins_db table. Only languages which are not pointers require the dir field be filled in and a column in the ccms_ins_db table.


Add columns for each of your new language codes to the ccms_ins_db table. Accept for ptrLng records.

Add records to the ccms_ins_db table containing the grp, name and content for each language you would like to view in your website.
Place the CCMS_DB_PRELOAD tag at the top of your html to preload all the ccms_ins_db grp records into memory that you might need for a given page.
e.g.:
{CCMS_DB_PRELOAD:index}<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
Then use the CCMS_DB tag to display database content. CCMS will automatically determine if the prefered language of the visitors browser is even supported by your website and display content from your database in the correct language, if available. Otherwise the websites default language will be displayed.
e.g.:
<p>{CCMS_DB:index,para1}</p>
The template you are currently viewing is /ccmstpl/index.html which leads off to others using this call {CCMS_TPL:/examples/index.html}. You can alter the name of the template which acts as your default index file by changing the $CFG["INDEX"] variable inside your /ccmspre/config.php file.
e.g.:Once you have chosen the name of your primary index page you can either re-write the name of this template to match or create a new one and place it in the /ccmstpl/ folder.
NOTE: You do not need to specify the extension of the file in the config, CCMS will attempt to figure this out on it's own. Here are the extensions it will look for and in what order. (.php, .html) In the case of .php templates it is parsed by PHP first and the CCMS parser second. In the case of .html they are only parsed using the CCMS parser.
Templates can have 1 of 2 possible extensions, .html or .php. HTML templates are parsed by the CCMS parser before returning output to the browser and automatically have a header of Content-Type: text/html attached. PHP templates are parsed by the PHP parser first and the CCMS parser second. No header is auto attached in the case of .php templates, allowing developers to set this to whatever they choose.
The CCMS parser looks for 5 possible CCMS tags when parsing templates.
e.g.:Now build your website. Remember, this is a template driven CMS which means if you want to add pages to your site you need to add them yourself. As you complete each page copy content into the ccms_ins_db database table, add multilingual versions of content to each record and replace original content in your template with a CCMS_DB tag. For more information, community assistance or example code visit: https://custodiancms.org.
Copyright © 2026 assigned by Vincent Hallberg of CustodianCMS.org and ModusInternet.com
Click here to review our Cookie & Privacy Policy page.