Gregory's Blog

Fine tuning your theme with Kendo Theme Builder

Galaxie Blog is built from scratch to be fully themeable, and using the Kendo theme builder in addition with the built in theme settings allows you to have full control over the look and feel of your own theme.

It was my goal to have dozens of themes and interfaces built into Galaxie Blog that would help to allow you to build a theme that you love- or to get you 95% of the way. If the theme does not perfectly match the look and feel of your site, using the Kendo UI Theme builder should be able to take you the rest of the way there.

The Kendo UI Theme Builder enables you to modify Kendo UI themes to perfectly match the look and feel of your website or application. Without scripting or using HTML, you will have complete control over the design of the buttons, backgrounds, windows, widgets, such as the calendar and HTML5 media player, dialog's, and even alternating color schemes with an easy to use interface.

To modify the .less based theme file, first preview and choose one of Galaxie Blog default themes that comes close to the look and feel of your site. The base Kendo theme can be found by either looking at the URL, or on the settings page in the administrative interface.

Once you jot down the name of your desired theme, head over to the Kendo UI Theme Builder.

On the far left of the interface, click on the Kendo theme that you have chosen. Here, you have hundreds of different options to choose from, but first start out by changing the accent and widget base colors. You'll notice that any changes that you have made will be shown to you on the right immediately. The first dozen or settings are important, you don't need to check out the series colors, most of these are for various charts. Investigate and set everything as you would like, and when you're ready, click on the download button at the top of the page.

After downloading the files and extracting the .zip file, you should see 3 different files: kendo.custom.css: kendo.custom.dataviz.json, and kendo.custom.less. Upload the two .css and .less files to your server. I suggest saving these two files in a new folder named 'myStyles' in the /common/libs/kendoCore directory, but you can save them anywhere on your server that you would like.
Note: you don't need to do anything with the .json file.

After uploading the file to your server, jot down the path that you uploaded the kendo.custom.css file to, and head over to Galaxie Blog administrative interface and click on the settings link.

In the settings page, look for the Customize Kendo Themes section. Click on the modify themes checkbox, and type in the path and file name that you uploaded the kendo.custom.css file to. Don't worry about the mobile theme location setting, the mobile settings should work with the custom .css file. Leave the rest of the forms as is, and click on the save button at the bottom of the page. You may have to iterate through the same steps again if you want to continue to dink around with the look and feel of the theme.

Happy Theming!

This entry was posted on June 28, 2019 at 8:42 PM and has received 2107 views.

Using a dynamic variable to set a dynamic path variable when dropping a cookie

ColdFusion sometimes drives me a bit wonky when I try to set a dynamic variable inside a tag. Most ColdFusion tags support embedded dynamic variables, but quite a few tags don't support this. Probably the most frustrating issue is when you want to use a dynamic variable to extend an applicationin a sub-folder using two or more application.cfc templates. It seems that every other time I do this I slap my head and think 'Oops! its time to set up proxy extensions', sigh... but this frustrating issue requires a very long blog entry for a different day. Back to my point... If you try to use a dynamic variable using a cfcookie tag, you will get the following nasty error:

<cfcookie name="isAdmin" value="true" path="#application.baseUrl#" expires="never"></cfcookie>

Attribute validation error for tag CFCOOKIE. It has an invalid attribute combination: expires,name,path,value. Possible combinations are: Required attributes: 'name'. Optional attributes: 'domain,encodevalue,expires,httponly,preservecase,secure,value'. Required attributes: 'domain,name,path'. Optional attributes: 'encodevalue,expires,httponly,preservecase,secure,value'. To get around this, simply use the cookie scope instead in order to set the dynamic path value.

<!-- Using the cfcookie tag does not work with dynamic vars in the path. --->
<cfset cookie.isAdmin="{" value="true" ,="" path="#application.baseUrl#" expires="30" }=""/>

Both cfcookie and the cookie scope do the same thing, send a cookie to the client, but at least the cookie scope allows you to embed dynamic variables for in the path name.

This entry was posted on June 28, 2019 at 2:11 PM and has received 1203 views.

Theme Settings in the administrative web interface.

Galaxie Blog has 14 different beautiful default themes that you can choose from. Each theme can be easily customized using a web interface. You can have as many themes as you want, or design a single theme, but you should first choose a default theme from which to start with. All of the default themes can be viewed by clicking on the themes link at the top of each page. Once you choose a theme, you can adjust the settings of the theme, such as changing the header properties, page display settings, changing Logos, etc. After modifying the default theme to your liking, you can further fine tune the look and feel using a web based theme builder interface. I will cover how to use the theme builder in later posts.
Once you have selected your preferred theme, you can disable the other themes by deselecting the Use theme? checkbox under the Default Themes section in the administrative settings interface. Don't worry about losing a theme, you can always enable any theme by checking the checkbox next to the disabled theme.

There are 39 unique theme settings that can be independently applied to each theme. Theme settings are applied using the Settings page in the Blog administrative site. I will briefly go over each new setting here. It it safe to play around with these settings. If you make a mistake, you can always reset the default settings for the particular theme by clicking on the reset theme button at the bottom of the settings administrative page. Notes: this blog is highly optimized for mobile, and some of these settings will not apply. I have indicated what settings are not available to mobile devices in the notes section below. The following three settings are global, and affect all themes.
  1. Parent Site Name and Link: The parent site name and parent site link form elements controls the behavior of the menu found at the top of the header. It allows the user to add an option in the menu that links to their home site.
  2. The Parent Site Name will display the title of the site within the menu. On my site, the text is Gregory Alexander - Web Design. The Parent Site Link can be any link to another site. The link is triggered when a user clicks on the menu option. On this site, the link is
  3. Default Font Size will set the font size for the blog content. You can choose any value between 8 and 26 points. Note: the Default Font Size will not change the size of the text in the header. I manually set the header text to be at 16 point in the menu on desktop devices, and 12 points for mobile devices.

All of the settings below can be set by theme. Each theme operates independently, and can have its own unique settings. You can modify or create 14 different themes.
  • The Modify Default Themes checkbox is used when the owner of the blog is ready to modify the default themes. Until this button is checked, the site will operate as it is intended here, with the default settings intact.
  • The Kendo Base Theme allows the blog owner to review all of the default blog settings. Blog owners can look and see where the current images are stored, what library paths are used, and determine the element properties of the containers on the site. It is recommended that you browse the existing themes, and choose the theme that is closest to the theme that you want to create. In order to modify a theme, click on the default theme that you are interested in, and modify the settings that are displayed in the form.
  • Kendo Theme .css Location (string): if you want to create your own Kendo less based theme and replace the existing .less based theme, use the Kendo Theme Builder to modify the base theme, upload it, and change the default path and point it to the new .less file that you created using the Kendo theme builder.
  • Kendo Mobile Theme .css location (string): when you create your own Kendo theme, make sure to also specify the new path of the mobile theme as well.
  • Custom Theme Name (string): provide the theme name that you want others to see when they look at your own site. This setting has no effect on the 1.1 version, but is a placeholder for the next major release.
  • Dark Theme (true/false): Galaxie Blog has built in logic to pull in different resources depending upon the overall color of the theme. If the theme has a dark background for example, Galaxie Blog will pull in a different version of the code highlighter. There are quite a few different adjustments that are made, but it is up to you to determine whether Galaxie Blog should adjust its logic for to adapt to a light or a darker screen background. You can see this in action by comparing the following two default themes: Blue Wave (a light theme with dark text) and Blue Wave Dark, a dark theme with white text.
  • Blog Content Width (numeric): The current blog content is set at 66% of the screen and should be left at this setting unless you set it much higher. When you're looking at the blog, you can see that the blog content portion in the center of the screen. The blog content section may contain the header (we will go over this later), the blog content that contains the blog posts, the side bar to the right which contains the links to the various parts of the site (such as the subscribe interface), and the footer. The blog owner can adjust this as they see fit, they can set it to 100% if they don't want any background image at all. However, unless you want to set this quite a bit higher, it is strongly recommended to leave this particular setting at 66%. If this setting is set at 66%, the background width is programmatically optimized and will change depending upon the screen width of the device. Note: this setting has no effect on mobile devices. To illustrate, the blog content width set at 100% is shown below (the 'Main Container' and 'Pod Container' widths were kept at default settings (65% and 35%)).
  • Main Container Width (numeric): the main container holds all of the blog posts. It is currently set at 65% of the Blog Content Width (see above). If you set this higher, or lower, the side bar (also known as the 'pod width') to the right will also be adjusted accordingly. This setting has no effect on mobile devices. Note: the Main Container Width plus the Pod Container width will always equal 100. The following image has the following settings:
    1. Blog Content Width: 50%
    2. Main Container Width: 50%
    3. Pod Container Width: 50%
  • Pod Container Width (numeric): the pod container is the section to the right of the main container. It contains the subscribe interface, tags, recent posts, etc. The current setting is set to 35%, but you can adjust it as you see fit. Notes: if you change this setting, the Main Container Width will be adjusted accordingly. This setting has no effect on mobile devices. The Main Container Width plus the Pod Container width will always equal 100.
  • Opacity (numeric): If you look carefully at the site, you can see a faint trace of the background image underneath. I prefer this look as it creates visual interest. The opacity settings are different depending upon the theme, but you can change this setting to your own liking. You can set it at 100% to eliminate the opacity, or set it lower than the current setting if you want the background to bleed through. The image to the left has opacity set at 80%, and the right image is set at 99%.

  • Background Image (string): enter the absolute path to the image that you want shown as the background image for the desired theme. If you prefer the look of a clean site without any background, or don't want any background at all, leave this blank. Additionally, you can specify an image that will create a background pattern, and use the next variable, Background Image Repeat .css, to create a unique pattern as a background. The image below does not have a background image set
  • Background Image Repeat .css (string): you can use any valid background image repeat .css. This was built into the themes as a blog owner may want to create sophisticated pattern objects for the background. The pattern shown below image has the following settings:
    1. Background Image Repeat: repeat
  • Background Image Position .Css (string): setting your favorite background 'hero' image using the default 'center center' is not always the best approach. The background image position rule allows you to set the background image to exact coordinates to make sure that it looks good on all screen sizes. See background position for more information.
  • Stretch Header across Page (true/false): if you want your header to consume the entire width of the page, set this to true. The default setting is false. On mobile devices, this setting is automatically set at 100%. The image below is set to true.
  • Align Header with Content (true/false): the default setting is true for all of the current default themes, but setting this to false allows the header to be set at the far left or right of the page, or the absolute center. Leaving this to true adjusts the size of the header to fit the width of the content width (see Blog Content Width).
    The image below has the Align Header with Content set at false with menu align center.
    Note: this setting is only relevant if the Stretch Header across Page is set to true.
  • Menu Align (left, center, right): you can align the header to the left, center, or right. Use this in conjunction with the Align Header with Content and Stretch Header across Page properties to create the look that you like.
  • Header Background Image (string): currently, I use simple images with various gradient fills that are used as the header background. You can set the header background to use any image. You can get creative here, perhaps you want an image that is filled with a pattern, or a header that displays lots of floating bubbles, it is your call.
  • Cover Menu with Menu Background Image (true/false): this setting is a bit complex. For my personal Zion and Orion themes, I wanted a the color scheme on the menu to match the color scheme of the background images and the .less theme file that controls the forms and widgets. In order to have the selected menu item match the orange color scheme, I 'covered' the Kendo menu with the background image that I used on the header with .css. This setting allows the menu background image to be shown within the Kendo menu itself. All of the other current themes have this setting set at false. Setting this to false should be sufficient in most cases; the menu is already tailored to the .less based theme that is set. However, there are reasons that a blog owner may want to set this to true on occasion. For example, if a blog owner creates a menu image with a lot of little floating bubbles, setting this to true will also allow the menu items to show these little bubbles as well.
  • Mobile Logo Image (string): You will want your mobile logo image to be much smaller than the logo image for desktop devices. Enter the absolute location of the image.
  • Mobile Logo Image Width (numeric (pixel width): this typically is set to be 60 pixels or less.
  • Desktop Logo Image (string): enter the absolute path pointing to the location of your logo that will be shown on desktop devices.
  • Logo Padding (top, right, bottom, left)': you can fine tune the logo placement with these settings. The default settings are left at 0px.
  • Blog Name Text Color (hexadecimal string): this setting controls the text color of all of the items in the menu. Use any valid hexadecimal or valid HTML color value. If using a hexadecimal value, make sure to put a pound in front of the hexadecimal string it as well.
  • Header Divider Image (string). This is the horizontal image divider that separates the header and the blog content, and the blog content and the footer. Currently, it is a little grey bar, but you can design your own and specify it here using an absolute path.

This entry was posted on June 24, 2019 at 6:40 PM and has received 1339 views.

Installing Galaxie Blog on your own website.

You will need to have a hosting provider that supports ColdFusion. I have tested the software on both ColdFusion 2016 and 2018 and the software should work on all recent ColdFusion servers. However, if you want to use captcha to prevent spam, you should be running on ColdFusion 2016. Peter Farrel used sun Java classes which are deprecated in ColdFusion 2018 and Java 7. I will rewrite Peter's logic in a future version. You will also need to have a database. It is recommended that you use Microsoft SQL Server, or MySql, but this blog should also work with Oracle and Microsoft Access. Download the installation zip file
The installation package is found near the top right section of Galaxie Blog. Click on the download button, and a new window will open. The content within the window will have a brief installation instructions along with credits and license information. Please read through it and click on the download button at the very bottom of the window. The browser should download the file, be patient, it may take several minutes for the zip file to download.
Once the file has been downloaded, you need to extract the zip package to a directory that you will upload the files to your server using an FTP client.
Decide your blog structure
After downloading and extracting the installation package, you will see the Apache 2.0 license and two folders, blog and install. You now need to step back and make a choice what folder structure you want on your own blog. Do you want the blog in the root directory, or in a different folder? This is an important consideration before you move forward. If you don't plan this correctly and change your mind at a later time, you're going to have to start everything over. For example, I have two installations of Galaxie Blog, one installation is found under where I have other sites. My own personal site takes precedence and is installed in the root directory, and Galaxie Blog is stored in the folder. However, my test blog site is installed under the URL. Here, it makes no sense to create a blog folder- typing in is redundant, so I store the blog in the root directory. When a user navigates to the URL, they immediately see the blog without having to type in an extraneous folder. Once you determine the structure of your blog, rename the blog folder to anything that you would like. If you want to install the blog in your root folder, copy and paste all of the files outside of the blog folder- and then remove the blog folder. You don't need to keep the same structure that was in place that you downloaded. Galaxie Blog will adjust the paths as necessary when running the web based installer. Upload the files
After you have the structure that you want, upload all of these files to your web server using your preferred ftp client. It is a large package, and it will take some time. Run the installer
Once the files have been uploaded to your own web server, you need to navigate to the installer. Unless you have renamed or removed the blog folder, the default path would be '/blog/installer/'. If you changed the default structure, navigate to the 'installer' folder on your website. Once you have navigated to the installer, A 'welcome' screen should appear. Read through it and click on the 'get started' button at the end of the page. You will be asked whether to continue or cancel. Unless you know what you're doing and have a previously installed version of BlogCfc or Galaxie Blog, click on the continue link inside this page. After clicking on the continue link, you will be asked to enter the DSN and Crypto settings. You will need to get the database information from your hosting provider, or server administrator. Unless you have a really good reason to change the security algorithms, leave the 'Crypto' settings as is. Once the DSN information is entered, click on the 'Verify and continue' button.
Run scripts
Step 3 will ask you a question. If you have never installed BlogCfc or Galaxie Blog, click on the 'set up my database'. If you have a working BlogCfc or Galaxie Blog database, click on the 'move to settings' button.
The next screen is more complex. Here you will be asked to provide additional settings. The 2nd setting is important. Enter the name of the the exact URL that points to your blog, along with the index.cfm page that is placed by default into the /blog/ folder (domain name + /blog/index.cfm). In my installation on the site, the URL is On my test server, where I eliminated the 'blog' folder and put everything in the root directory, the URL is http://www.gregorysblog/index.cfm. If you only allow SSL, replace 'http' with 'https'. You will have to contact your hosting provider or server administrator in order to enter the email settings. Keep the default settings in the drop down menu's, and click on the 'save settings' button.
After the installation process, you will need to delete the installer folder (the installer disables it once everything is installed, but it is best to delete the installer folder from the server as well) and fine tune the settings using the blog's administrative interface. The default administrative interface is found under /blog/admin/' There are articles on this web site that explains the settings in detail. If you have a problem, please email me, or make a comment on this website, and I will try to help you.

This entry was posted on June 10, 2019 at 2:30 PM and has received 1232 views.

Using the Kendo pager anywhere within a page.

The kendoPager is a beautiful widget that typically allows the user to navigate through a Kendo grid. It has fast forward and forward buttons to go to the first item and the previous item, displays the current page, which you can click to select another page, and forward and fast forward buttons to select the next and the last grid page. It is an intuitive control that is adaptive and themable.
Although there is no official documentation on this, we can also use this control in anypage. You're notlimited to only using this in the grid!
I'll show you my approach. You can see this Kendo pager in action by scrolling to the very bottom of this pagebelow.

First create an element for the pager.
2) Create the datasource. Provide the URL in the pagerUrl element, and the page number.
3) Instantiate the pager control, and provide a change method. We will pass the complete datasource to the change method that we will invoke next.
4) Read the datasource to populate the kendoPager control.
5) Invoke the onPagerChange method, extract the values from the passed datasource, and redirect the user using javascript.

Here is the code:

<div id="pager" data-role="pager" class="k-pager-wrap k-widget k-floatwrap k-pager-lg">
	// Create the datasource with the URL and page number.
	var pagerDataSource = new{
		data: [
			{ pagerUrl: "&startRow=0&page=1", page: "1" },
			{ pagerUrl: "&startRow=10&page=2", page: "2" },
			{ pagerUrl: "&startRow=20&page=3", page: "3" },
			{ pagerUrl: "&startRow=30&page=4", page: "4" }
		pageSize: 1,// Leave this at 1.
		page: 4 // Specify the currently selected page using a server side language.

	var pager = $("#pager").kendoPager({
		dataSource: pagerDataSource,
		// Pass the datasource to an onChange method outside of this function.
		change: function() {
	// Read the datasource.;

	// Extract passed data from the datasource and redirect the user.
	function onPagerChange(data){
		// Get the current page of the pager. The method to extract the current page is 'page()'.
		var currentPage =;
		// We are going to get the data item held in the datasource using its zero index array, but first we need to subtract 1 from the page value.
		var index = currentPage-1;
		// Get the url that is stored in the datsource using our new index.
		var pagerUrl = "?" + data[index].pagerUrl;
		// Open the page.
		window.location.href = pagerUrl;

This entry was posted on June 8, 2019 at 1:48 AM and has received 1722 views.

Footer Logo

Your input and contributions are welcomed!

If you have an idea, BlogCfc based code, or a theme that you have built using this site that you want to share, please contribute by making a post here or share it by contacting us! This community can only thrive if we continue to work together.

Images and Photography:

Gregory Alexander either owns the copyright, or has the rights to use, all images and photographs on the site. If an image is not part of the "Galaxie Blog" open sourced distribution package, and instead is part of a personal blog post or a comment, please contact us and the author of the post or comment to obtain permission if you would like to use a personal image or photograph found on this site.


Portions of Galaxie Blog are powered on the server side by BlogCfc, an open source blog developed by Raymond Camden. Revitalizing BlogCfc was a part of my orginal inspiration that prompted me to design this site.


Galaxie Blog Version 3.0 (Toby's Edition) June 14th 2022 Pillars Of Creation theme