CMSIMPLE Content Management System Installer's Manual

tiredbeginnerInternet και Εφαρμογές Web

8 Δεκ 2013 (πριν από 3 χρόνια και 11 μήνες)

77 εμφανίσεις


CMSIMPLE Content Management System 
http://www.cmsimple.dk/ 
Installer's Manual 
INSTALLING CMSimple 
­ 
An overview. 
These pages explain how you install CMSimple on your clients machine. They explain how to 
download the distribution, customise the layout and upload the files to a remote server. They 
explain how to use the scripting language and how to include some well known and reliable add 
ons. 
Users contribute to a support forum and a selection of commonly asked qu
estions are answered in 
the FAQs. 
CMSimple is designed to run on many browsers, under many versions of PHP under two operating 
systems. Not surprisingly CMSimple cannot anticipate all the changes and restrictions that may be 
imposed on you by your webserv
er. 
Please report any bugs you may find to 
http://www.cmsimple.com/forum/viewforum.php?f=8 
Please give full details of your server, php, and browser version. 
Submenu


Uploading the files


Updating to newest


File permissions


Security issues


WWW
­Authenticate


The editing environment


The configuration


The online 
editor


Creating your pages


Creating a multi
­
language site


Changing the layout


Getting XHTML output


CMSimple Scripting


Literature


FAQ Uploading the files
 
Download the ZIP­file found here on the 
downloads page 
onto your local machine. 
Unzip it, and FTP all the folders and files to your webserver. 
You will usually put the files into the 'html' files directory. This may be called htmldoc or something 
similar. Some ISPs may require you to use a a 'cgi' files directory. 
The files and folders are: 
index.php 
­ a small script calling the file cmsimple/cms.php 
FOLDER: cmsimple 
(also used for backup files) 
.htaccess 
­ makes the folder unavailable through h
ttp ­ but ONLY on Linux!

config.php 
­ the configuration of the site 
image.php 
­ the images used for the menu and editor buttons 
log.txt 
­ the login log 
cms.php 
­ the content management system 
With CMSimple 2.6 cms.php 
has been split up into these files: 
cm
s.php 
­ it is possible to run as a stand alone application with no admin interface etc. 
adm.php 
­ admin interface 
login.php 
­ login 
procedures 
mailform.php 
­ the build­in mailform 
gbook.php 
­ the build­in guestbook ­ NOT SPAMPROOF! 
oedit.php 
­ 
the build­in editor 
search.php 
­ search procedures 
SUBFOLDER: cmsimple/languages 
Here, the language files are kept. Each language is given a two letter name with the extension 
'php', ie. en.php. The default language for the site is English, but this may be changed in the 
config.php
. Each of these files contains language specific text strings, such as error messages, 
and text stubs for the editor. 
FOLDER: content 
content.htm 
­ the content is stored in this file. 
guestbook.txt 
­ the content of the guestbook 
.htacces

­ makes the folder unavailable through http ­ but ONLY on Linux! 
Later, a series of backup files will be stored in this directory­ they will have names like 
20040111003159 ­ the time of their creation. 
FOLDER: 
downloads 
­ the folder to place files availa
ble for download. The files here will 
automatically be available through the link select box in the editor. 
FOLDER: images 
­ the folder to place the images for the site. The files here will automatically be 
available through the image select box in the editor. 
SUBFOLDER: images/
flags 
needed for a multi­language setup. 
SUBFOLDER: images/editor 
(optional) If a subfolder editor 
is setup in images, the editor 
will try to get its button images from this folder; otherwise the editor will get the images 
stored in cmsimple/image.php. 
FOLDER: 
templates 
The layout templates are kept here. To create your own template, make a copy of the default 
template folder and rename it to something else. You now edit the new files. You may also 
download templates from third party sources. You may select the new template by editing the 
cmsimple/config.php 
file. This can also be changed online by selecting the [SETTINGS] Edit 
Configuration, or even dynamically using CMSimple scripting. 
SUBFOLDER: templates/default 
­ the default layout 
stylesheet.css 
­ the stylesheet for the template 
template.htm 
­ the HTML layout template 
SUBFOLDER: SUBFOLDER: templates/default
/images 
Layout specific images. 
SUBFOLDER: SUBFOLDER: templates/default/menu 
Used for the (TOC) table of content 
graphics.If the subfolder Updating to newest
 
To update from 2.0­2.5 to to a version higher than version 2.5 you will need to replace 
./cmsimple/cms.php with these files, which cms.php has been split into: 
cms.php 
­ it is possible to run as a stand­alone application 
with no admin interface etc. 
adm.php 
­ admin interface 
login.php 
­ login 
procedures 
mailform.php 
­ the build­in mailform

gbook.php 
­ guestbook ­ NOT SPAMPROOF! Removed from v. 2.8. 
oedit.php 
­ 
the build­in editor 
search.php 
­ search procedures 
functi
ons.php 
­ additional functions (From version 2.8) 
With time there has been added and removed some optional variable settings to the config.php 
file: 
Version 2.4: 
$cf['editor']['external'] ­ may be set to tinymce, htmlarea or fckeditor 
$cf['xhtml']['endtags'] ­ to turn on asign "true" 
$cf['xhtml']['amp'] ­ to turn on 
asign "true" 
In version 2.4 $cf['htmlarea']['folder'] was removed from default config.php 
In version 2.5 $cf['meta']['imagetoolbar']="no"; was removed from default config.php 
Version 2.6 
$cf['uri']['length'] ­ Max uri (set to 200) 
$cf['scripting']['regexp'] ­ It is possible to change the regular expression used for CMSimple 
scripting ­ if not set, this is used: "\#CMSimple (.*?)\
#" Other changes with 2.6:
 
Readable URLs for other charsets: May be set with $tx['urichar']['new'] and $tx['urichar']['org'] in 
language file. 
Click here for more info

Updating from 2.7 to 3.1 
There are lots of changes between version 2.7 and 2.8. 
You may easily update from 2.7 by overwriting the files in ./cmsimple­folder except 
config.php 
(the file with your settings ­ there are no changes in this file in the new version). 
There are several things which should be changed manually in your config.php 
­ 
read more here 
about the changes in config file

Variables not used anymore ­ to be deleted in language files: 
$tx['menu']['guestbook'] 
$tx['title']['guestbook'] 
$tx['guestbook']['maxlength'] 
$tx['guestbook']['posted'] 
$tx['guestbook']['dateformat'] 
$tx['guestbook']['from'] 
$tx['guestbook']['sendbutton'] 
$tx['filetype']['guestbook'] 
$tx['help']['guestbook_maxlength'] 
$tx['help']['security_wwwaut'] 
$tx['help']['files_ftp'] To be added in language files (see en.php for location):
 
$tx['mailform']['message'] To be added in $tx['editor']['buttons'] in language files (see en.php for location):
 
["inserthorizontalrule","Horizontal Rule","Insert Horizontal Rule"], 
["removeformat","Remove Format","Remove font style formats"], 
Updating from 
2.8/2.9/3.0 to 3.1

You may easily update from 2.8/2.9/3.0 to 3.1 by overwriting the files in ./cmsimple­folder except 
config.php 
(the file with your settings ­ there are no changes in this file in the new version). File permissions
 
All folders you wish to be able to edit from CMSimple, has to be set writable. The content folder(s) 
has to be set executeable in order to create backup. 
For Linux: If you give full rights (chmod 777 ­ or in WS_FTP both read, write and execute for 
Owner/Group/All) to both the folders and the files placed in these folders
: cmsimple

cmsimple/languages, content 
(also subfolders to localized folders) and the 
templates/default, 
everything should work fine. Also images 
and 
downloads 
sh
ould have full 
rights if you want the user to be able to do file management. 
On Win32 the user IUSR_[SERVERNAME] must have full rights to the files and folders listed above. 
REMEMBER: 
Change the login settings in the config.php file ­ this can be done under [SETTINGS] 
after login. The default login is 'test' (if wwwaut is set true, the login is admin/test). Security issues
 
PASSWORD 
Change the login settings in the config.php 
file! 
The first time you log in, change the login settings in the config.php 
file. 
From the editor, choose [SETTINGS], choose edit configuration 
find the correct box and type in 
your changed password and username. [SAVE] 
Note: password is before user name. 
When available, you should use wwwaut to get the best protection available ­ 
read more about 
wwwaut

LOGIN LI NK 
For security reasons, you could remove the 
'login'­link 
in the HTML­template. When you want to 
edit, you then type '&login' at the end of the URL. i.e. 
http://yoursite?yourpage&login 
This makes it less apparent, that you are working with an online editing system. 
As it is now, the login information is stored in a 
cookie in clear text, and it could, in theory, be 
misused by some evil person monitoring your internet traffic. 
Security is to be improved in future releases, ie. password encryption. 
.htaccess 
For Apache users: Please check, that the folder /cmsimple/co
nfig.php 
is protected by the 
.htaccess 
file! 
On Win32 you will have to configure Apache to use .htaccess
. It is NOT
 
possible to use .htaccess 
on MS IIS. 
SUGGESTIONS 
Suggestions on how to improve security on different systems will be
5 WWW­Authenticate
 
For better password protection it is advised to use security type wwwaut. 
On Linux where PHP is installed as an Apache module (not a CGI), this feature will work just by 
setting security type to wwwaut 
under the configuration settings of CMSimple. 
With CMSimple 2.7 it is also possible to make wwwaut work on:


When PHP is installed as CGI/FastCGI 
and RewriteEngine is on


On Microsoft Internet Information Services (IIS) when PHP > 4.3.3, only "Anonymous 
access" is set and "Custom Errors" is set to Default. (Also cgi.rfc2616_headers in php.ini 
must be deafult). 
How to check Server API 
You can check that PHP is installed as an Apache module, by looking at phpinfo. Download 
phpinfo.php 
or create a php­file with this content: 
<?php echo phpinfo(); ?> 
Run the file over the webserver, by calling ie. http://www.yourdomain.com/phpinfo.php 
The line "Server API" in the resulting page must look like this: 
Server API 
Apache 
Wwwaut when Apache module 
Set 
security type to wwwaut 
under the configuration settings of CMSimple and save. You'll need 
to login again afterwards, using both the defined username and password. 
The same thing may be achieved by setting $cf['security']['type']="wwwaut"; (before version 2.8: 
$cf['security']['wwwaut']="true";) in cmsimple/config.php. 
Wwwaut when 
CGI/FastCGI 
In the CMSimple basefolder, you should create a .htaccess file with this content: 
RewriteEngine on 
RewriteRule .* ­ [E=REMOTE_USER:%{HTTP:Authorization},L]
 
Set wwwaut to 'true' u
nder the configuration settings or by setting 
$cf['security']['wwwaut']="true"; in cmsimple/config.php. 
If it gives an error on the website or it does not 
allow you to login, you are probably not allowed to 
use .htaccess files and/or the RewriteEngine at your webhotel. 
Wwwaut when ISS 
1. In webserver admin goto Web Site Properties ­> File/Directory Security ­> Anonymous Access 
dialog box ­ check the "Anonymous access" checkbox and uncheck any other checkboxes (uncheck 
"Basic authentication," "Integrated Win
dows authentication," and "Digest") 
2. In webserver admin under "Custom Errors" select the range of "401;1" through "401;5" and 
select "Set to Default". 
3. Set security type to 
wwwaut 
under the configuration settings of CMSimple and save. 
If it does not work, check that PHP > 4.3.3 and in php.ini that "cgi.rfc2616_headers = 0"
6 The editing environment
 
CMSimple includes a Integrated Editing Environment that is revealed when the user successfully 
logs on. 
In the main panel appears the a row of choice buttons and below them, full WYSIWYG editor. 
The choice buttons are


Normal Mode : to toggle back to the Normal View.


Validate Links : to check the site for broken links


Images: Used to see all the images you have uploaded (and the page that uses them), 
giving an option to delete unwanted images and the chance to upload more.


Downloads: Lists files you have available to download, with an option to delete unwanted 
files and the chance upload further files.


Settings: Gives a way to edit system files 
o
 
Edit configuration 
o
 
Edit language 
o
 
Edit stylesheet 
o
 
Edit template 
o
 
Edit guestbook 
o
 
View log


Content view edit download


Help: Displays these pages.


Logout 
Validate links. 
The whole site is parsed and checked and a single report is generated. There are no further 
options. 
Images 
This option allows you to view all the graphic files you have uploaded. 
Further Options.


You can delete files on the server.


You can browse your local machine, and select a files. These may be uploaded. 
Downloads 
The Downloads folder stores all the files you wish to make available for the user to download. This 
option lists all the files you have uploaded. 
Further Options.


You can delete files on the server.


You can browse your local machine, and select a files. These may be uploaded. 
Sett
ings: Edit Configuration 
Please see 
The configuration

Settings: Edit Lang 
CMSimple is a multilingual product­ all the text that you see will change when you change 
language. To give even greater flexibility you can edit all the text strings in your current language 
by selecting this option. 
Make the changes you want, save using the button at the very bottom of the page. 
View Log 
This shows a text file of the logons. There are no options. The configuration
 
The settings for the CMSimple installation can be set in the file ./CMSimple/config.php or by using 
the "Edit configuration" form which is found under the menu item "SETTINGS" (only visible when 
logged in). 
The settings names refer to variable names in the config.php, ie. security_password is same as 
$cf['security']['password'] 
Explanation of the variables 
$cf['security']['password']="test"; 
This is the login password, default set to "test". If you change it, when you are logged in, you need 
to log in again using the new password. If your browser's cache is turned on, you may need to 
empty the browser's cookie cache. 
$cf['security']['type']="page"; 
(Only available from version 2.8 ­ replaces the 
$cf['security']['wwwaut']) 
There are 3 options for security type: 
1: page 
­ gives a login page (default)
 
2: javascript 
­ gives a javascript login prompt 
3: wwwaut 
­ 
gives an 
WWW­
Authenticate 
prompt ­ 
do not 
use this, unless you know, what you 
are doing. 
In all instances, the login process is started by adding 
&login 
to the URL and hitting ENTER. Please note: To make it easier to upgrade from previous version of CMSimple to version 2.8 and higher this variable is defined in cms.php if it is not set in config.php. This may not be the case in later versions of CMSimple, so please update it in your configuration file.
 
$cf['security']['username']="admin"; 
(Optional and not included by default from version 2.8) 
The username only used for security type wwwaut ­ if not set, the default username defined in 
login.php is admin 
$cf['site']['title']="The name of the site"; 
Used for the title bar and for some templates as part of the top logo. 
$cf['site']['template']="defa
ult"; 
The chosen design template ­ see 
Changing the layout 
$cf['language']['default']="en"; 
The language for the main site.

$cf['meta']['keywords']="CMSimple, Content Managem
ent System, php"; 
Keywords for Search Engine Optimization. 
$cf['meta']['description']="CMSimple is a simple content management system for smart 
maintainance of small commercial or private sites. It is simple 
­ small 
­ smart! It is Free 
Software licensed un
der AGPL"; 
Description of the site ­ used by some search engines. 
$cf['backup']['numberoffiles']="5"; 
The number of old content files to be stored in the ./content folder as back­up. Please note, 
that 
backup is only activated, when you hit "LOGOUT" in the edit menu. 
$cf['images']['maxsize']="150000"; 
The maximal size of images allowed to be uploaded by the upload function under 
"IMAGES" (only admin). Specified in bytes ­ the default setting equals to 150 KB. 
$cf['downloads']['maxsize']="1000000"; 
The maximal size of files allowed to be uploaded by the upload function under "DOWNLOADS" 
(only admin). Specified in bytes ­ the default setting equals to almost 1 MB. Server restrictions 
may also apply ­ both in php.ini and in Apache setttings (
more info
). 
$cf['mailform']['email']=""; 
If this is set, the mailform will be set active. A few webhotels do not allow mailing through PHP. 
$cf['guestbook']['maxlength']=""; 
(Not used anymore from version 2.8) 
$cf['edi
tor']['height']="(screen.availHeight)
­
400"; 
The height of the inbuild WYSIWYG editor (OEdit) specified in javascript as the height of the 
browser window minus 400px. 
$cf['editor']['external']=""; 
If you want to use an external editor, it must be specified here ­ 
read more here

$cf['menu']['color']="000000"; 
If you use the images for the Table of Contens stored in the file /cmsimple/images.php you can set 
the color of the icons by a HEX value here. The 'default' template in CMSimple distribution uses this 
feature. (In stylesheet, look for url(../../index.php?image=doc)

$cf['menu']['highlightcolor']="808080"; 
Same as above ­ this is the color for the icon for the selected page. 
$cf['menu'][
'levels']="3"; 
(Only available from version 2.8) 
The heading levels to split into seperate pages. CMSimple was created to only split into 3 
levels, 
and normaly this is also the most recommendable. Making a deep tree structure may not be 
good usability. If you change from 3 to 4, you will have to replace all your H4 headings used for 
internal headings to some other heading formating. Additional H­
buttons for build in editor 
can be 
added under editor_buttons in language configuration. Please note: To make it easier to upgrade from previous version of CMSimple to version 2.8 and higher this variable is defined in cms.php if it is not set in config.php. This may not be the case in later versions of CMSimple, so please update it in your configuration file.
 
$cf['
menu']['levelcatch']="10"; 
(Only available from version 2.8) 
If you have ie. an H3 page is following an H1 page, it will be hidden from navigation in CMSimple 
(TOC, submenu), only available in next/pevious page and search result, unless this variable is set. 
If you keep your counting right, you can set it to 0. Please note: To make it easier to upgrade from previous version of CMSimple to version 2.8 and higher this variable is defined in cms.php if it is not set in config.php. This may not be the case in later versions of CMSimple, so please update it in your configuration file.
 
$cf['menu']['sdoc']=""; 
(Only available from version 2.8) 
Can be set to 
parent 
if you want the ancestor headlines get the stylesheet class sdoc/sdocs 
instead of the normal doc/docs
.

$cf['uri']['seperator']=":"; 
The character used for seperate page names in URL. 
$cf['uri']['length']="200"; 
The length of the URI to match ­ this is set to make it easier to get hold of a page, if you by 
mistake format the entire contents of a page to a heading. 
$cf['xhtml']['endtags']=""; 
Set to true 
if you want endtags in CMSimple generated output. This is NOT applied to the contents generated in editor.
 
$cf['xhtml']['amp']="true"; 
Set to true 
if you want &s in CMSimple generated output to be written as &amp; ­ ie. in URLs. This is NOT applied to the contents generated in editor.
 
$cf['plugins']['folder']=""; 
To activate an add­on or plugin loader you must specify the plugins folder, normally with the value 
plugins 
$cf['functions']['file']="functions.php"
; 
(Only available from version 2.8) 
Backward compatibility for DHTML menus (from before version 2.8) and functions geturl, geturlwp, 
autogallery and newsbox. 
This can variable may be set empty or/and file be deleted for optimization, if none of these 
functions are used. 
$cf['scripting']['regexp']="
\
#CMSimple (.*?)
\
#"; 
The regular expression used for 
CMSimple Scripting
. Please note: To make it easier to upgrade from previous version of CMSimple to version 2.8 and higher this variable is defined in cms.php if it is not set in config.php. This may not be the case in later versions of CMSimple, so please update it in your configuration file. This is how the configuration form looks like:
10 The online editor
11 
How Header Tags <h1> 
­ 
<h4> are used. 
<H1>, <H2>, <H3> 
In CMSimple <H1>, <H2>, <H3> are used to create new virtual pages, subpages and 
subsubpages. When you save the page, a new virtual page is created. The text in the tag becomes 
the page title and appears in the table of content and the internal links list. This text must all 
appear on the same line. 
<H4> 
<H4> is a normal sub heading format, which does not have any special meaning. <h5> <h6> are 
not provided by the editor but may be entered in HTML mode. Be aware, In these examples dashes have been added to the tags to fool the parser, to stop them reformatting these pages.
 
Issues This editor lacks table editing, and some formatting, if you need these facilities then you must install an alternative editor. The online editor works with most browsers but not all. Look at the Requirements. Mozilla prevents the paste functions in the editor but the [Edit][Paste] option on the browsers top bar works. All styles are controlled by the current stylesheet. Creating your pages
 
All the text content of CMSimple is stored in a single HTML file. CMSimple delivers the relevant 
page to your user's browser. 
The heading tags < H1>,< H2>and < H3> are used to split up the content file. It might be a little 
hard to get used to this concept, but when you do, it is really easy to create new pages and 
subpages. 
U
sing the headings 
A H1, H2 or H3 heading will dynamically split the text into 'virtual pages' and put a new item into 
the menu at the correct level. 
A list of the subpages is displayed at the bottom of that page. The menu is displayed as a table of 
contents. 
A H4­heading is used as a heading within a page. No other tags have special meanings
12 Be aware: When you delete a document's heading or an entire page, an 'empty heading' message is sometimes left in the document. This can be very frustrating! Remove this, by highlighting the text and using the paragraph button. Alternatively, use the HTML/Layout button to get hold of the raw HTML­code, and delete the entire line. A emergency fix is to type this line of CMSimple scripting beneath this message 
#CMSimp
le remove# Creating a multi­language site
 
Please note: When using the download at CMSimple.COM you define the languages to be 
setup in the download process and the instruction on this page is not relevant. 
If you want pages in other languages, copy the 2
lang 
folder to the root of the CMSimple 
installation. Rename the folder to a two letter name of the target language. Check there is a 
language file in cmsimple/languages folder with the same two letter name and a flag file in 
images/flags. 
The 2lang folder also has a index.php 
that calls cmsimple/cms.php and a subfolder named 
content 
which acts like the content folder in the root of CMSimple. 
Once this is done CMSimple will automatically find the new content file and you can start adding 
the text. Changing the layout
 
The look and feel of your site is controlled by a file template.htm and its associated stylesheet.css. 
Many users are happy to use the default template, but you can choose other templates or write 
your own. The name of the selected template is stored in the config.php 
file. Choose [SETTINGS] 
choose edit configuration

You can make small changes by editing an existing template. Choose [SETTINGS] choose edit 
stylesheet
, or edit template

You can write a template from scratch using your favourite HTML editor. 
Find inspiration for developing templatesand particularly menus look at 
http://css.maxdesign.com.au/listamatic2/index.htm 
­ 
(please note, that the CMSimple UL does not 
have an DIV around it). 
When you develop a really good looking layout, please make the template and the stylesheet 
available to other users. 
Be aware: Template names and template folders must use lower case characters only, i.e all small 
letters! Be aware: It is a legal reqirement to include the Powered by CMSimple link in your template source code ­ unless a licence has been purchased.
13 
template.htm 
The template is p
ure HTML ­ 
built using tables,and with PHP function calls to the cms.php. Be aware: Several functions have their own stylesheet class, which is set both in the table cell (TD) in the template and in links (A HREF). The classes are defined in the stylesheet.
 
Function calls 
Some of the function calls are important and can't be left out ­ ie. the head(), onload(), toc(), 
editmenu() and content(). But if you prefer not to have a document sitemaplink(), printlink(), 
locator(), submenu() or previouspage()/top()/nextpage() you may remove some of these codes. 
head()         : necessary:  prints link to stylesheet, meta information 
and page title 
onload()       : necessary:  required in the body tag in order to make the 
editor function 
toc()          : necessary:  prints the table of contents 
editmenu()     : necessary:  in admin mode prints the menu of the available 
admin functions 
content()      : necessary:  the main page content 
loginlink()    : advised:    if not logged to the system, displays a login 
link 
languagemenu() : advised:    prints links for changing the language 
lastupdate(    : advised:    writes the date and time the content was last 
edited 
sitename() 
: optional:   prints the sitename 
searchbox()    : optional:   prints a search box 
sitemaplink()  : optional:   prints the site map in the content field 
printlink()    : optional:   displays the page in a printer friendly format 
legallink()    : required:   displays the CMSimple Legal Notices 
mailformlink() : optional:   prints a link to a mailform for giving 
feedback 
submenu()      : optional:   prints a link to the following pages if 
available 
previouspage() : optional:   prints a link to the previous page 
top()          : optional:   prints a link to #TOP 
nextpage()     : optional:   prints a link to the next page 
locator()      : optional:   prints the location thread 
newsbox()      : additional: prints the contents of a named hidden page
 
toc(
) function (Table Of Contents) 
toc() returns all levels in TOC 
toc(x) returns only level x from TOC, ie. toc(1) 
toc(x,y) returns only x­y levels in TOC, ie. toc(2,3) 
lastupdate() function 
lastupdate(null,4) returns string with 4 hours time zone correction 
lastupdate("true") returns the lastupdate string without linebreak 
A Template Example 
Below, is an example that shows the cells of a table and where the functions can be placed. Tip: Study the templates that come with the distribution before you start to design your own. top.jpg is stored in the variable
 $pth['folder']['templateimages']
14 
In head: insert head(). 
In bodytag: insert onload() 
sitename() 
top.jpg 
searchbox() 
toc() 
sitemaplink() 
printlink() 
mailformlink() 
guestbooklink() 
langua
gemenu() 
loginlink() 
lastupdate() 
locator() 
editmenu() 
content() 
submenu() 
Powered by 
CMSimple 
previouspage() 
top() 
nextpage() Be aware: Template names and template folders must use lower case characters only, i.e all small letters! Be aware: It is a legal reqirement to include the Powered by CMSimple link in your template source code ­ unless a licence has been purchased.
 
stylesheet.css 
The stylesheet is located in template folder for the layout. It is u
sed to handle all the styles on the 
site. 
The stylesheet defines the font properties of existing tags. 
body, td, p, a, hr, 
H1, H2, H3, H4 
input, textarea, select 
ul, li
 
New classes are defined. These are the ones found in in default stylesheet. 
.sitename 
.locator 
.navigator 
.menulevel1, .menulevel2, .menulevel3 
.sitemaplevel1, .sitemaplevel2, .sitemaplevel3 
.submenu 
.menu 
.login 
.edit 
.search 
.copyright
 
These container classes are used.
15 
.bodyline 
.cmsline 
.innerline
 
There are many good css tutorials o
n the web that will help you understand stylesheets. Try to 
take a search on 
http://www.google.com/search?q=css+tutorial 
Two skeleton templates 
A template using tags. 
This template serves as a starting point for anyone who wishes to write a template from scratch. It 
contains snippits of text that will appear in a browser if it is run on your local machine. There are 
many html tutorials and html editors on the web. 
Table1 
Table2 
Sitename: 
Table3 Search 
Table4 
toc: 
sml: 
prl: 
mfl: 
gbl: 
lan: 
log: 
lup: 
Table5 
edit:­ 
cont:­ 
subm:­ 
Powered 
by 
CMSimple 
Table6
16 
A template not using tags. 
If you wish to do all your formatting in css this template is a starting point. The css code is 
included but would later be removed to the stylesheet file. 
<pre> 
... 
<  style> 
body { 
margin:9px 9px 0 9x; 
padding:0;} 
#level0 { 
background:#FC0;} 
#level1 { 
margin­left:143px; 
padding­left:9px; 
background:#FFF;} 
#level2 { 
background:#FFF3AC; 
<span class="note">position:relative;</span>} 
#level3 { 
margin­right:143px; 
padding­right:9px; 
background:#FFF;} 
#main { 
background:#CCC} 
#topBar{ 
background:#FC0;} 
#advBar{ 
background:#FFF3AC;} 
#tipDay{ 
float:right; 
width:175px; 
background:#FFF3AC;} 
#lftBar { 
position:absolute; 
width:143px; 
top:9px; 
left:9px;} 
#rgtBar { 
position:absolute; 
width:143px; 
top:0; 
right:0;} 
< /style> 
... 
<body> 
<div id="lftBar"> 
This is the left navigation ... 
</div> 
<div id="level0"> 
<div id="level1"> 
<div id="topBar"> 
This is the top navigation bar. 
<div id="advBar"> 
This is the advertisement bar. 
</div> 
</div> 
<div id="level2"> 
<div id="rgtBar"> 
This is the right navigation... 
</div> 
<div id="level3"> 
<div id="main"> 
<div id="tipDay">
17 
This is the "Tip of the day"... 
</div> 
The code you are reading. 
</div> 
</div> 
<span class="note">"rgtBar" could go here using the same 
style</span> 
</div> 
</div> 
</div> 
</body> 
... 
</pre> Getting XHTML output
 
With CMSimple 2.4 you may set xhtml_endtags and xhtml_amp to 'true' in order to get valid 
XHTML output. This is to be set under Settings ­
> Configuration (or in config.php). 
Please note, that in admin mode some normal HTML­
code is still used. CMSimple Scripting
 
What is CMSimple Scripting 
This allows you to add scripting to your content pages. The script is written on a single line 
enclosed between 
#
CMSimple 
and #
. The code used for 'CMSimple scripting' is normal PHP. 
Two techniques are commonly used, the replacement of a variable, and the use of the preg_match 
function. Exceptions are the hide and remove commands, which are hardcoded into the cms.php 
source code. 
The CMSimple code will be shown only in the editing 
mode, but on these help pages the parser has 
been tricked by inserting a font tag around the first '#' numsign. The executing code is not shown 
in Normal mode, or on the finished page. 
Normally, only one #CMSimple 
string can be used in each page­ though the contents of several 
scripts may be merged into one script. 
How do I use CMSimple scripting 
In the editor, switch to 'edit mode(layout)' and on a single line type 
#
CMSimple 
­­­­­some code
­­­­­­­
; # 
CMSimple detects the string 
'#
CMSimple' 
and interprets all the code until the final '#'

Many useful examples are shown on the next few pages­ copy and paste them and then remove 
the tags. 
For example, the code below has changed the site title to 'hi dude' (but only on this page). 
#CMSimple $GLOBALS['cf'
]['site']['title']='hi dude!'; #
18 
Cut and paste this line into your page, remove the two <­font­> tags­ save­ and change to normal 
mode and see how it looks for you. Important. When you copy'n'paste CMSimple code from these pages, you must remove the font tags! Do this in editing (HTML) mode Please be aware: The CMSimple Scripting code on these pages is written for the build­in editor and may not work with other editors, ie. HTMLArea. Most editors have some auto­ entity­conversion functionality, which might mess up the CMSimple Scripting code.


Changing global variables


Meta tags


Hide page


Remove page


Last update


Placing a Function


Counter


geturl()


Insert from fi
le


Insert from php file


Entire content


Banner rotation


Changing the heading


Changing the template on the fly


Custom mailform


Photogallery


Calendar


Relocate 
Changing global variables 
The code on this page has changed the site title to 'hi dude' (but only on this page). 
#CMSimple $GLOBALS['cf']['site']['title']='hi dude!'; #
 
It is possible to change almost all variables used in CMSimple this way! 
Look at the file config.php 
and languages/en.php
. Further global variables are defined at the top of 
the cms.php 
source code. 
Meta tags 
A common asked feature is the ability to make page specific meta tags. For this purpose you may 
set the variables $keywords and $description with CMSimple scripting. 
#CMSimple $keywords='some,words'; $description='A page description'; #
 
Hide page 
The following code hides this page from the table of contents and 'the navigation bar' on the 
finished page. The p
age may still be accessed by typing in the full url: 
#CMSimple hide#
 
The page will not be searched and it will not be shown in the sitemap. The page will be visible to
19 
edit, but not in the editor's normal mode. 
The 'locator bar' only shows the title of that page. 
The title of that page will still be part as the URL for subpages. You may want to 'hide' all subpages 
as well. 
While in edit mode, the page still appears in the 'table of content'. 
It is normally not possible to use two CMSimple Scripting tags on the same page, however 
#CMSimple hide#
 
will work with another tag, if it is placed as the first tag on the page. 
Here is a page containing the CMSimple Scripting code using the geturl() function. 
#CMSimple hide# 
#CMSimple $output.=geturl('http://www.harteg.dk').chr(35). 'CMSimple 
hide'.chr(35);#
 
The first part of the code ensures that the page will be hidden from the TOC when viewed. 
Remove page 
The page is totally removed in 'normal mode'. It can be accessed in edit mode, should you wish to 
reinstate it: 
#CMSimple remove# Be aware that the URL of all subpages will change!
 
Last update 
You may include a function like lastupdate() from cms.php like this: 
#CMSimple $output.=lastupdate(); #
 
Please also see 
Placing a function

The latupdate() function is documented at the page about 
template.htm
. Please notice: If you copy'n'paste the CMSimple code from this page, please remember to remove the font tag!
 
Last update: 
July 18. 2008 09:29:15 
Placing a Function 
To place the output from the CMSimple Scripting function at a specific place within a page, you 
code 'CMSimple Scripting' like this: 
#CMSimple 
$output=preg_replace("/".chr(35)."CMSimple.*".chr(35)."/",lastupdate(),$c[$s]);#
 
In this case the 
#
CMSimple .... # is replaced by the output from lastupdate()
20 *­­­Target­­>
Last update: 
July 18. 2008 09:29:15 <­­­Target­­*
 
Counter 
To place a page counter a specific place within a page, you could insert a code like this: 
Number of hits: #CMSimple $t="./count/".$u[$s].".inc"; 
if($fh=fopen($t,"a+")){$i=fread($fh,filesize($t));fclose($fh);if($i<1)$i=0;$i++;if($fh=fopen($t,"w 
")){fputs($fh,$i);fclose($fh);$output=preg_replace("/" .chr(164) ."CMSimple .*" .chr(164)."/", 
$i,$c[$s]);}}# 
You must create the folder "./count" and give it 777 permission in order to make it work. 
If that doesn't work, change "a+" to "r". 
Number of hits: 
­­ 
NOTE: On one server (PHP 4.3.9, CGI, Linux) there is a strange error when using fopen without a 
space between fopen and ( ­ also preg_replace does not work ­ instead this code may be used: 
#CMSimple $t="./count/".$u[$s].".inc"; if($fh=fope

($t,"a+")){$i=fread($fh,filesize($t));fclose($fh);if($i<1)$i=0;$i++;if($fh=fopen 
($t,"w")){fputs($fh,$i);fclose($fh);$output.='Number of hits: '.$i;}}# 
geturl() 
Some functions have been written into CMSimple so CMSimple scripting may use them, ie. the 
geturl() which grabs a external located webpage and adds it to the output: 
#CMSimple $output.=geturl('http://www.cmsimple.com/index.php?&print');#
 
allow_url_fopen must be enabled in php.ini for this to work. 
There is also a similar function named 
geturlwp(

which gets the url with given parameters (eg. 
used for the 
Photogallery
). 
From CMSimple version 2.8 this function is located in the file functions.php, which is defined by 
$cf['functions']['file'] in 
the configuration

Insert from file 
To place the contents from a file a 
specific place within a page, you could 
insert a code like this: 
#CMSimple 
$t="index.php";if($fh=fopen($t,"r 
")){$output=preg_replace("/".chr( 
35)."CMSimple.*".chr(35)."/",frea 
d($fh, 
filesize($t)),$c[$s]);fclose($fh);} #
 
(To make the contents of this php­script viewable, there has been a textarea tag set around it:)
21 
I
nsert from php file 
To place the output from a php­file a specific place within a page, you could insert a code like this: 
#CMSimple $output= preg_replace("/".chr(35)."CMSimple.*".chr(35)."/", 
geturl('http://www.cmsimple.dk/demo/?&print'),$c[$s]);#
 
This example returns the frontpage of the CMSimple demo at 
http://www.cmsimple.dk/?Demo 
Entire content 
To display the entire content of the site as a single page, you should insert this CMSimple code: 
#CMSimple 
$output.=rf($pth['file']['content']);#
 
If you don't want it to eat CMSimple code, use: 
#CMSimple 
$output.=preg_replace("/".chr(35)."/s",chr(38).chr(35)."35;",rf($pth['file' 
]['content']));#
 
Banner rotation 
To place a banner rotator a specific place within a page, you could insert a code like this: 
#CMSimple 
$t=array(array("bp_cmsimple.png","http://www.cmsimple.dk"),array("cms_powered.png", 
"http://www.cmsimple.dk/demo/"),array("cmsimple80x20.png","http://www.cmsimple.com/ 
forum"));$i=rand(0,count($t)­ 
1);$output=preg_replace("/".chr(35)."CMSimple.*".chr(35)."/",chr(60).'a 
href="'.$t[$i][1].'"'.chr(62).chr(60).'img 
src="./images/'.$t[$i][0].'"'.chr(62).chr(60).'/a'.chr(62),$c[$s]);#
 
New heading 
#CMSimple $output=preg_replace('/(<h[1­3]>).*?(<
\/h[1­3]>)/i', '\\1New heading\\2', 
$output);# 
Prior to version 2.4 this code should be used: 
#CMSimple $output=preg_replace('/('.chr(60).'h[1­3]'.chr(62).').*.('.chr(60).'\/h[1­ 
3]'.chr(62).')/i', '\\1New heading\\2', $output);# 
Changing the template on the fly 
Make a complete tem
plate.htm and a stylesheet, put this in a separate directory in the templates 
folder. 
e.g. Make a directory 'dandare' with its subfolders and the two files­ template.htm and 
stylesheet.css. Design and save your images. 
At the pagewhere you want the differ
ent lay­out, use this code: 
#CMSimple $cf['site']['template']="dandare"; 
$pth['folder']['template']=$pth['folder']['templates'].$cf['site']['template'].'/'; 
$pth['file']['template']=$pth['folder']['template'].'template.htm';$pth['file']['st 
ylesheet']=$pth
['folder']['template'].'stylesheet.css';$pth['folder']['menubuttons' 
]=$pth['folder']['template'].'menu/';$pth['folder']['templateimages']=$pth['folder' 
]['template'].'images/'; #
 
You have to change "dandare" to the name of your own folder.
22 
Custom mailform 
A simple mailform function is provided in CMSimple ­ 
you need to insert an e­mail address under 
Settings to activate it. This CMSimple Scripting code was written for the build­in editor and may not work with other editors.
 
If you wish to code your own, insert this in HTML­mode: 
<TEXTAREA style="WIDTH: 101.34%; HEIGHT: 275px" rows=14>#CMSimple // Custom mailform 
for CMSimple version 2.4 
$reciever='somebody@somedomain.dk'; 
$message="\n\
nThis is an automatic generated mail.
\n\nSincerely\nThe Webmaster"; 
$reci
evermessage="\n\
nThis is an automatic generated mail."; 
// Define your field names and add extra lines for select options 
// Use _ for spaces 
$fields=array('name','adress','zip','Define_your_own','email'); 
$select['adress']=array('none','elephant','cow','tiger'); 
$tx['mailform']['recieptnotsend']="Could not send reciept."; 
// DO NOT CHANGE CODE BELLOW! 
function mtr($tk){if (is_array($GLOBALS['select'][$tk]))$t=select($tk); else $t='<input 
type="text" class="text" name="'.$tk.'" value="'.$GLOBALS[$tk].'">'; 
return '<tr><td>* '.ucfirst(preg_replace('/\_/',' ',$tk)).'</td><td>'.$t.'</td></tr>';} 
function select($tk){$t='';foreach($GLOBALS['select'][$tk] as $i){$t.='<option value="'.$i.'"'; 
if($GLOBALS[$tk]==$i)$t.=' selected'; 
$t.='>'.$i.'</option>';} return '<
select class="text" name="'.$tk.'">'.$t.'</select>';} 
$t='';$mailbody=''; 
if($action=='send'){foreach($fields as $i){initvar($i);if($GLOBALS[$i]=='')$e.='<li>You need to 
write '.$i;else $mailbody.=$i.': '.$GLOBALS[$i]."\n";}if(!(eregi("^[_a­z0­9­]+(\.[_a­z0­9­ 
]+)*@[_a­z0­9­]+(\
.[_a­
z0­9­]+)*(\
.([a­ 
z]{2,4}))+$",$email)))$e.='<li>'.$tx['error']['mustwritemail'].'.';else 
if($e==''){initvar('txtarea');$mailbody.=$txtarea;if(!(@mail($reciever,'Mailform from 
'.sv('SERVER_NAME'),$mailbody.$recievermessage,"From: ".$email."\r\n"."X­Remote: 
".sv('REMOTE_ADDR')."\r\n")))$e.=tag('li').$tx['mailform']['notsend'];else 
{$t=tag('p').$tx['mailform']['send'].tag('/p');if(!(@mail($email,'Copy of mailform from 
'.sv('SERVER_NAME'),$mailbody.$message,"From: ".$reciever."\r\n"."X­Remote: 
".sv('REMOTE_ADDR')."\r\n")))$e.='<li>'.$tx['mailform']['recieptnotsend'];}}}if($t==''||$e!=''){ 
$t='<form action="'.$sn.'" method="post"><input type="hidden" name="selected" 
value="'.$u[$s].'"><input type="hidden" name="action" value="send"><table cellpadding="5" 
cellspacing="0" border="0">'; 
foreach($fields as $field)$t.=mtr($field); 
$t.='<tr><td colspan="2">Message:<br><t'.'extarea rows="6" cols="40" 
name="t'.'xtarea"></t'.'extarea></td></tr>'; 
$t.='</table><p><input type="submit" class="submit" 
value="'.$tx['mailform']['sendbutton'].'"></p></form>'; } 
$output=preg_replace('/<textarea.*textarea>/is',$t,$c[$s]);# 
</TEXTAREA> 
Photogallery 
#CMSimple $output.=autogallery('http://www.cmsimple.dk/autogallery/'); #
 
allow_url_fopen must be enabled in php.ini for this to work. 
Autogallery is available from 
http://www.circle.ch/scripts/ 
The autogallery readme file gives installation instructions ­ these have been copied and customised 
for CMSimple use. 
1) Installation 
­ download and unpack the autogallery.zip archive 
­ delete any files in /cache. 
­ upload the files to /. give write access to the folder /cache 
­ open a browser window and point to the index.php
23 
­ wait shortly, while the thumbs get created at first run. you will find them in /cache. 
2) Configuration 
­ add your own images to one of the existing folders, e.g. 2001­
12­10 and run index.php again. 
the thumbs will be added automatically. 
­ remove some of the original images in 2001­
12­10 and point to the index.php again. obsolete 
thumbs will be deleted. 
­ now you can add your own folders. start with a name "my_birthday_2002" and add your images. 
­ edit index.album and add something like: 
./cache# ./my_birthday_2002# 
./templates/frame.jpg# "Birthday", 3.10.2002
 
­ point to index.php and have a look at the gallery. 
­ modify the count of rows (6) and columns (3) of thumbs in the index.php file: 
$content = array( 
// set rows and columns of images per page 
"htm_content"   => $ag­>thumbnail_table(6, 3, $multiple ), 
... 

 
From CMSimple version 2.8 this function is located in the file functions.php, which is defined by 
$cf['functions']['file'] in 
the configuration

Calendar 
Copy this textarea in WYSIWYG­
mode: 
#CMSimple // CALENDAR 
// LIST YOUR CALENDAR ITEMS BELOW IN THIS FORMAT: 
// DD­MM­YY Description 
// USE <BR> (SHIFT+ENTER) FOR LINEBREAK IN DESCRIPTION 
// ITEMS OLDER THAN CURRENT DATE WILL NOT BE LISTED 
// Do not change in code below unless you know what you are doing! 
// setlocale (LC_TIME, 'da_DK'); 
$empty=tag('p').'The calender is empty.'.tag('/p'); 
$t=''; 
$reg="/((d*)­(d*)­(d*)(.*))/"; 
$out="%A %e. %B %Y"; 
function tag($s){return chr(60).$s.chr(62);} 
$arr=preg_split($reg,$c[$s],­1,PREG_SPLIT_DELIM_CAPTURE);reset ($arr);while 
(list($key,$value) = each ($arr)) {if(preg_match($reg,$value)){ 
$d=mktime(0,0,0,$arr[$key+2],$arr[$key+1],$arr[$key+3]);$n=time()­86400;if(!preg_match("/­ 
/",$d­ 
$n))$t.=tag('h4').ucfirst(strftime($out,$d)).tag('/h4').tag('p').preg_replace($reg,"$5",preg_replace 
("/".tag('[/]?p')."/i","",$value)).tag('/p');}}
24 
if($t=='')$t=$empty; 
$output=preg_replace('/'.tag('textarea.*textarea').'.*/is',$t,$c[$s]);#</body> 
</html></HTML> 
Relocate 
Relocate 
How can I automatically redirect a visitor to page x when he visits page y? Both, page x and page 
y, are CMSimple pages. 
Answer: 
On page y set 
#CMSimple header('Location:index.php?x'); # 
as line just after name of page 
Sample1: 
<H1>From here</h1> 
#CMSimple header('Location:index.php?To_here'); # 
Sample2: 
This will bring 'Current_News' in the Newsbox 
#CMSimple header('Location:index.php?News:Current_News'); # Literature
 
Online articles 
Clem Rutter: CMSimple. Maintaining the school web site ­ and an excuse to play with css! 
Published in the 
ACITT 
journal, Teaching ICT, No 5 : Winter 2004. 
Download as PDF 
(185.5 KB) 
Printed material 
Britt Malka: Byg et website med CMSimple. Forlaget Libris. 
Purchase
. (In Danish Only) FAQ
 
Here are are answers to some of the questions that have been asked at the 
CMSimple support 
forum

Submenu


Changing the menu


Stopping users changing the settings


Hiding the login


Including files


Making a newsbox


Adding a forum to a site.


Icons for print links


It doesn't 
work!


Pricing
25 
Changing the menu 
How does the toc() function work? 
From version 2.3 you use toc($start,$end) ­ that means toc() gives level 1­3, but you may just 
write toc(1) if you only want level 1 ­ or toc(2,3) to get level 2­3 ­ or toc(1,2) to get level 1­3. 
How you get rid of the images or change it to something 
else in the menu? 
With CMSimple version 2.3 you are able to change icons used in the table of contents (TOC) in the 
stylesheet definitions (the file 
stylesheet.css
). Examples:

li.doc{line­height:1.4;padding­left:15px;background­image: url(menu/document.gif);background­repeat:no­repeat;}

li.docs{line­height:1.4;padding­left:15px;background­image: url(menu/documents.gif);background­repeat:no­repeat;}

li.sdoc{line­height:1.4;padding­left:15px;background­image: url(menu/sdocument.gif);background­repeat:no­repeat;}

li.sdocs{line­height:1.4;padding­left:15px;background­image: url(menu/sdocuments.gif);background­repeat:no­repeat;}
 
The URL is relative to the templates path, eg. templates/mytemply/menu/document.gif. 
The images are normally located in the subfolder menu 
in layout folder, ie. 
templates/default/menu

If the subfolder menu 
is deleted from the layout folder, the default menu images stored in 
cmsimple/image.php will be used for the table of contents. 
If you wish to use cmsimple/image.php images, delete the menu folder and change the colors of 
the document icons in the configuration. 
The HTML for the images is set in the tr function in cms.php and may be edited there, ie. if you 
don't want any images at all. 
Use this PHP code to get the binary values of all gif­pictures 
placed in the same directory as the 
script ­ and insert the binary values in the image function in image.php: 
$localdir='.'; 
if ( is_dir($localdir) ) { 
$fd = @opendir($localdir); 
while ( ($part = @readdir($fd)) == TRUE ) { 
if (preg_match("/\.gif$/i", $part)) { 
$file_handler = fopen($part, "r"); 
$contents = fread($file_handler, filesize($part)); 
fclose($file_handler); 
echo 'if ($image==\''.$part.'\') return \''.bin2hex($contents).'\';';}} 
if($fd == TRUE) { closedir($fd); } 
} else { echo "Could not open dir"; }
 
Get the 
binimg.php script 
(0.4 KB) 
Also ­ you may find this interesting: 
http://php.holtsmark.no/base64img/ 
Stopping users 
changing the settings 
Can I stop my user damaging the setup? 
You can't stop another user with admin rights from changing the settings, but you can make it 
difficult for them by hiding the settings button.
26 
In your language file find 
$tx['title']['settings']="Settings";
 
and change it in: 
$tx['title']['settings']="";
 
You can still go to the settings with 
http://www.domain.com/?&login&settings 
Hiding the login 
Can I hide the login prompt 
from viewers of the site? 
There are many techniques for doing this.


Hide it in the template by using the same text and background color. (sic)


Change the text 'menu_login:' in settings/language to a '.' or '*', and the roll­over text too.


In the template, move the login() function somewhere far less obvious.


Remove the login function from the template, then access it directly typing the url ­ (the 
url may be different) 
http://www.yourdomain.com/index.php/Welcome&login


Create a hidden page and place this code on it.
 
<form id="login" action="index.php" 
method="post"><input type="hidden" name="login" 
value="true"><input type="text" name="passwd" 
value=""><input type="submit" value="Login"></form> 
Including files 
Is there a way to include other scripts in 
the page 
contents? 
Yes, it is possible to grab a page from the internet and insert the contents into a page using 
CMSimple scripting
. See 
Inserting a file. 
Furthermore you can 
insert a php file

Making a newsbox 
Can I 
include a news box? 
There is a newsbox() 
function in cms.php (From CMSimple version 2.8 this function is located in 
the file functions.php, which is defined by $cf['functions']['file'] in 
the configuration
.). Call it with in 
the template. 
The newsbox function simply returns the contents from a specified page (which may be 
hidden
) ­ 
you mus
t rewrite the template to ensure correct formatting.
27 
How to make a newsbox: 
In CMSimple create a page named 
News
. Write some stuff on this page and save it. 
If you wish to keep this page hidden, add an 
CMSimple hide 
to this page. 
Add this in template.htm: 
<?php echo newsbox('News');?> 
Adding a forum to a site. 
Sorry. CMSimple was not designed for this please check out 
phpnuke 
which may be suitable. 
It doesn't work! 
I can't get the editor to work, I use Firefox or Opera. 
These browsers do not have a necessary javascript function and no inbuilt editor will work with 
them. Konqueror and early MS IE also don't work. Change to another browser such as the full 
version of Mozilla 1.7.1. 
I get a white page with nothing on it 
This usually means something wrong with the a .php file in the installation, like a syntax error or a 
mising bracket. replace your .php files with clean ones from the initial download. 
Functions in template do not execute! 
On some systems you'll have to change the extension of file_content from .htm to .shtml or .php in 
order to get CMSimple to work. 
No matter which page I select, it does not change the 
page! 
For some r
eason the free PHP hosting at 
portland.co.uk 
does not return 
$HTTP_SERVER_VARS['QUERY_STRING'] 
The solution is to add: 
if ($s=='QUERY_STRING') return $GLOBALS['QUERY_STRING'];
 
in the beginning of function sv($s) 
My editor has disappeared 
Check your header statements <­h1­
><­h2­
><­h3­
>, etc. in content.htm. If you have a linefeed 
character there, it can upset the Editor. This often happens when cut & pasting text from another 
program, or switching mode after having pasted text. 
My file has disappeared 
Windows machines are case insensitive FOO.PHP in ths same as foo.php. Your remote host could 
be running Linux which is case sensitive. foo.php is different from FOO.PHP. 
I get a MISSING HEADER ERROR on my first page 
You are using an old version of CMSimple and should install the latest version. A quick fix is to go 
to that page and add the line of script 
#CMSimple remove#
28 
Pricing 
Is this script totally free? 
"Yes, It doesn't matter to me if only ten persons are using it, or hundreds ­ I like free software. 
I couldn't find a good free CMS for my needs " ;­) 
Purchase of licences 
are really appreciated, though, and it will support the future development of 
this simple CM
S. 
However, if you wish to remove the "Powered by CMSimple" link from the software, then you must 
purchase a licence

CMSimple is free software, and the link encourages a larger user base, which in turn encourages 
future development.