November 27, 2009 at 8:47 AM | 0 Comments
Release version 4.0.153 of TouchPointCMS adds a 301 (and 302) redirect module to allow for SEO-friendly redirects to new site URLs. The module works like a normal page with the addition of a field to enter the new URL.
Download TouchPointCMS.
November 13, 2009 at 11:25 PM | 0 Comments
Version 4.0.152 has been released and added to the downloads page. The release adds a (overdue) search module to the list of those pre-installed. The search module acts as a search field and search results page. An additional "mini" module is included to allow placement on your template, such as in headers or footers.
Currently, the search supports basic keywords, including literal phrases when wrapped in quotes. SQL Full-text search is planned for a future release.
Download TouchPointCMS.
November 12, 2009 at 7:21 PM | 0 Comments
TouchPointCMS has actually been around for a couple years. While the name is new, as well as the new features, the core code has been used for several client websites in my past two jobs. Recently I logged onto an old web host to see who is still using it. To my surprise, it has been used quite a bit. Some were left in the stock configuration while others were customized slightly to add new ones.
With that in mind, I added a list of past and current clients who are using TouchPointCMS (or at least the CMS in pre-TouchPoint days). Take a look!
See who is using TouchPointCMS!
November 11, 2009 at 8:44 PM | 0 Comments
Making good use of Topics in TouchPointCMS allow for bits-and-pieces of content to be used throughout your website. For example, if you have a call-out on your page that invites users to your twitter or facebook page and you want to use it throughout the site, you can do so easily. A topic may be invoked from within the WYSIWYG editor or directly in your HTML page template.
Topics by themselves are simply sections of HTML code. Formatted text, links, images, even YouTube content may be embedded for use in multiple places on your website. A topic can be disabled at anytime without having to remove it from your content or your code.
Invoking a topic in your editor
Once you have created your topic in the Topics section of the CMS, it may be invoked in either two ways: within your content (WYSIWYG) or on your template page as a control.
To invoke a topic inline, simply enter the following into your page:
(!topic = 'my topic'!)
PLEASE NOTE, extra spacing was added on each side of the equal sign so that a topic named "my topic" is not actually rendered inside this post! Be sure to remove the spaces on each side of the equal sign. Once this is done, if you have a topic of this name, it will display in place of the line above.
Invoking a topic on a template page
Now that you are able to invoke a topic inside your editor, your second option is to invoke it inside your template file. There are two ways to carry this out.
The first option is to place the same line used earlier directly on your page. This will render the topic the same way it does inside the editor. In fact, any time this line is written in the HTML source, it will render the topic.
The second option is to use a built-in control. This method is more advanced as it uses a .NET control. The advantage in this approach would be if you are customizing your template with logic and need to invoke a topic programmatically.
In the following example, I will show how to invoke a topic based on whether "Condition" is true or false. The code below is written inline for the sake of this example and the minimum set of controls are used.
<script runat="sever">
protected void Page_Load (Object s, EventArgs e)
{
if (Condition)
cntMyTopic.TopicName = "Topic 1";
else
cntMyTopic.TopicName = "Topic 2";
}
</script>
<asp:Content runat="server">
<!-- THE NEWLY ADDED TOPIC CONTROL -->
<tpc:Topic runat="server" ID="cntMyTopic" />
<!-- YOUR EXISTING PAGECONTENT CONTROL -->
<tpc:PageContent runat="server" />
</asp:Content>
That's it! For beginners, the first method is the way to go. If you're an advanced user or a developer, and you want to gain more control over how topics are displayed, the second option to dynamically render topics is the best approach.
Learn more about TouchPointCMS.
October 3, 2009 at 7:43 PM | 0 Comments
Back from vacation. I took a week off in OBX to get my eyes off computer screens for a while. We didn't have WIFI down there, which turned out to be a good thing since I was able to relax and only answer a minimal amount of work-related email (they had 2 PCs on site).
Anyway, I'm very excited about TouchPointCMS development. It's looking to be a very promising and solid CMS with endless add-on functionality. It's also amazing how much faster this version runs over the old adhoc'd versions. One of the last updates to TouchPointCMS was improving the caching mechanisms used throughout the site in order to decrease load times and save on server resources.

I'm also finding that writing add-on modules now is incredibly easy. For example, we're deploying TouchPointCMS for smart-spice.com and they want to include a spice manager. We can do this pretty quickly, considering a basic module consists of roughly 3 core files (5 if using code-behind):
- The user control that the end user sees (.ASCX and .CS)
- The user control that the CMS user sees for management (.ASCX and .CS)
- A meta.config file for SQL related to installation, deletion, generating instances, icon, etc.
Essentially, that's all you need for building a module. For the spice manager, I combined functionality from the included Blog and Photo Gallery modules to allow for a simple spice list manager with images. The front end user control is nothing more than a ASP.NET ListView control bound to the spices for that page.
The modules that you create are automatically loaded with the web page. If you want to customize the placement of the module, such as having a Events module off to the left or right sizes of your page, you can deselect the Render Inline Module option from the CMS. This will disable the automatic rendering of the module, allowing you to use the <tpc:Event runat="server" />instance to create a list of events wherever you like on your template file. If you want to use events from another page, just include the PageID="6"attribute, where 6 is the page ID you wish to pull from.
Check back later for updated CMS development and release!
Learn more about TouchPointCMS.
September 28, 2009 at 5:28 PM | 0 Comments
When most people think of a website template, they generally think of it as simply an overall look and feel of your website. It may have a predefined color scheme using CSS, a sprinkle of JavaScript here and there and some content filled in. Generally, a web developer will break down the template, utilizing the CSS and JavaScript objects inside what would now be a nearly bare shell, after removing all the pre-populated filler. If you're working with a CMS, you may have to do even more cutting up to work your new template styles into your dynamically generated content. Most pages may use the same template, others may have variations. It can become cumbersome and frustrating after a while, especially during maintenance.

TouchPointCMS hopes to alleviate this, at least to an extent. After all, if we had a perfect solution, we'd all be developers. TouchPointCMS contains template folders, inside a dedicated templates folder located at the root. Inside the templates section of the CMS, you will see the list of template folders available, along with the one that is currently active. Inside of each template folder is essentially your entire website. By this, I mean that you'll have any style or script folders, along with your content pages, such as home, interior, custom, etc (these pages must be ASP.NET pages ending in .ASPX).
The idea is that each content page will have a unique structure if needed. For example, your home page may contain a large introductory banner which will not be part of interior pages. You may have a page containing a sidebar of events or other content. Because TouchPointCMS is aimed at those who are even a little web savvy (and who isn't these days?), the idea is to use the built-in Controls and Modules inside of these templates where needed. An example of a module can be <tpc:PageContent />, which will automatically display any content for that page or any type (such as a gallery page, or a web form). You may also choose to display individual modules anywhere you like on your template, such as <tpc:Form /> to display the web form for that page. Specific controls such as RichNavigation to enable a rich drop-down navigation bar, BreadCrumbs, for showing your depth in the website, orTopic, for showing a reusable section of HTML content throughout your site.

Once your templates have these modules, they can then be assigned to pages in your site. On the templates page in the CMS, you may not only choose your overall template, but set a default template for all your pages. Individually for each page, you may assign a template (home, interior, etc) from those available when editing that page in the CMS.
There is one requirement however. All your pages must use an ASP.NET Master page. Before getting scared, this is simply a shell to be used around all your template files. For example, we can assume that all your templates will have basic HTML elements that can be used throughout, such as html andbody tags, as well as a list of included CSS and JavaScript files. Master pages are a good practice, as they enforce the re-use of content. You can have as much or as little repeated content in your Master page as you like. You may even have multiple Master pages. Also, in order to tie into the CMS, the Master page(s) must inherit from the TouchPointCMS.Core.Template class. Taking a look at one of the included modules will provide much insight to the basic structure.
From that point on, the rest is populating your site. Check back for more TouchPointCMS overviews!
Learn more about TouchPointCMS.