Archive for the ‘Content Management’ Category

Software Review: Listgarden 1.3

Saturday, July 19th, 2008

Listgarden is a very powerful RSS creation and management tool that runs on Windows, Mac, and Linux platforms, and can be configured as a Web-based application.

For those of you who subscribe to all of my feeds, let me apologize…I know that I’ve mentioned Listgarden several times: in this blog, the Lockworld Herald News, and my Resources feed.

I think the program deserves all of these mentions, however, because it is so versatile and so simple. Without any knowledge of RSS or XML structure or rules, you can create and edit as many feeds as you want to. You have the options of creating the feeds as local files on your computer, or uploaded to your FTP server (or both). My favorite feature of Listgarden is that you can optionally export an HTML version of your feed containing some or all of your feed items as a Web-based file. This can allow you to offer a preview of your latest feed items to your site visitors or an alternate way to view “what’s new” on your site.

The program uses a Web-based GUI, which makes it a little bit unusual to work with at first. But once you get the hang of things, you can be publishing RSS feeds in no time. The only downside is that there is no WYSIWYG (What You See is What You Get) editor, so if you want to include rich text, images, or links in your feed items, you will have to write the HTML codes for these items.

You can completely customize both your feed and your HTML output any way you want, which is very nice. For example, if you sell advertisements in your feed, or want to offer between-item ads from Google AdSense or other sources, you can easily modify your template to accommodate this. Furthermore, since you can completely customize your HTML output, you can ensure that your page is ready for viewing as soon as it’s exported, with any navigation structure, introductory text, links to the RSS feed for subscriptions, footers, etc.

I use Listgarden to create and manage my Lockworld Herald News feed. Because this feed is entirely self-promotional, I don’t expect many people to subscribe to it. However, for visitors to my site, glancing at the HTML version of the feed (the link above) will give them an overview about any recent changes I’ve made to the site, without having to subscribe to the RSS feed.

Of course, most modern Web browsers now have the capability to display RSS feeds in readable format, rather than the raw code they used to show. Furthermore, services like FeedBurner offer a Web-readable version of your feed automatically. So the HTML version is not essential. But the advantage is that it can contain all of your navigation structure so visitors can see what else you have to offer, and that it can be designed to match your site’s look and feel.

Listgarden can also be used as a PortableApp (run from a USB drive, rather than installed locally). You can even use multiple instances of Listgarden (not simultaneously) by installing them in different folders on your computer to manage different sets of feeds. This can be particularly useful for those who manage RSS feeds for other people’s sites, or for multiple sites of their own. Of course, with Listgarden you can have as many feeds as you want to in each application folder on your machine, if you only want to run one copy of the application.

Because it is available for Windows, Mac, and Linux and can be used portably, it is ideal for people working on the same projects on multiple platforms. For example, I use both a Linux-based Eee PC and a Windows XP PC to work on my site. Fortunately, I can manage my feeds on either computer (although I have to be using the right computer to actually publish the local file once I’ve made changes, because the file locations on the two machines are different).

I’ve tried using several different RSS feed creation tools in the past, but none have offered me the power and flexibility of Listgarden. So if the other methods I’ve used (here and here) don’t quite work for you, Listgarden might just be worth a try.


That’s all for today…now get out there and Write the Web!
Blogged with the Flock Browser

Content Management: Building a sitemap for your dynamic Texty content

Saturday, November 10th, 2007

If you followed along with my last series of posts, I’ve showed you how to build a customized content management system into your Web site using AjaxIncludes, Zoho Creator’s JSON feeds, and the powerful Texty SCMS (Simple Content Management System). In this last post of this series, I want to show you how you can expand the same principal to not only deliver the content to your site, but to build a simple sitemap to help your users find content within your site.

As with the other content management systems I’ve discussed, the actual text delivered to your Web site will not be indexed by search engines such as Google. Most major search engines ignore any text delivered to your page via javascript or other scripting methods that take place in the browser, rather than on the server. If you happen to have a Web site that allows you to run javascript codes on the server side, you can avoid problems with indexing your site content by adding a code within your <script> tag to tell the server to run the code before delivering the page to your user. Simply change <script> to <script runat=server>. However, if you are using Microsoft Office Live Basics, you can not run any scripts at the server level, so you have to find some other way to deliver your content. I will spend a little time discussing the problems this presents to individuals and small businesses trying to establish a Web presence in the next series of posts.

Essentially, you will use the same procedure I outlined in my last post to build your sitemap as you do to build your general page. In fact, you can use the code below on a single page and, if a specific article is requested in the URL (articles.aspx?271), the article will be displayed. If no article is requested  (articles.aspx) or a nonexistent article is requested, the user will be shown a Table of Contents. This is nice because your single page serves a dual purpose. As before, you want to load your Zoho Creator JSON code into your page and then go through the records one by one. This time, however, instead of only writing out a single story, you will want to write out all of your stories…

Below is a sample code based on the following assumptions:

  1. You have already generated a Zoho Creator database to hold your Texty codes. This database has the following fields: TextyID (a code you assign to this texty when you put it in the database. Depending on your needs, this could be a number, the default Zoho ID, a short word-description, or a combination of values), Title (A short title to display), TextyCode (The <script> code generated by Texty, which you want to include in the page.
  2. You are using a single value to identify each texty (Instead of “texty.asp?page=27″ or “texty.asp?article=TGIF”, you are using only a single value like “texty.asp?47″ or “texty.asp?MOLB”).
  3. Your Zoho Creator database is already sorted by the appropriate field.
  4. You are using Microsoft Office Live Basics (or a similar Web page that allows only HTML codes, not server-side scripting languages such as ASP.NET or PHP).
   <!–Load your Zoho Creator Data–>

    <script type=”text/javascript” src=”http://creator.zoho.com/{Username}/json/{View Number}/”></script>

    <script>

    //Parse out the attributes from the URL

    var winloc=”"+top.window.location;

    var winsplit=winloc.split(“?”);

    var marker=”";

      if (winsplit.length>1){ //If an attribute is found in the URL

      for (var i=0; i<zoho{Username}view{View number}.Texty.length; i++){

        var NewArray=zoho{Username}view{View number}.Texty[i];

        var val=NewArray.TextyID;

        val = val.toLowerCase();

        var thisparam=winsplit[1].toLowerCase();

        if (thisparam==val){

           Texty=NewArray.TextyCode;

           marker=”content”; //Content has been found…display content instead of Table of Contents

          document.writeln(‘<scr’+'ipt type=”text/javascript” language=”javascript” src=’+TextySource+’></scr’+'ipt>’);

  //Write the content on your page

          if (NewArray.Title>”"){

            document.title=NewArray.Title; //Make the page title match the Texty title

          }

        }

      }

    }

    else { //No parameter found in the URL

    //Write out a link to each page you have entered in your database to create a Table of Contents

      for (var i=0; i<zoho{Username}view{View number}.Texty.length; i++){

        var NewArray = zoho{Username}view{View number}.Texty[i];

        var Title = NewArray.Title;

        var val = NewArray.TextyID;

        document.writeln(‘<p><a href=”articles.aspx?’+val+’” title=”‘+Title+’”>’+Title+’</a></p>’);

      }

    }

    //If parameters passed in the URL do not match any content, clean up the URL by removing failed parameters. This prevents people from bookmarking incorrect pages, and allows the “Table of Contents” script above to run

    if (winsplit.length>1 && marker==”"){

      location.replace(“/documents/articles.aspx”);

    }  </script>

This relatively simple script allows you to, essentially, create an entire Web site by coding only a single page and using Texty’s powerful content management system to deliver variable content to that single page. I think Texty is an excellent solution for this, but just for your information, this same type of content management system can be used with files stored on your Web site. Instead of loading the Texty script containing the identified content, you can use AjaxIncludes to write the contents of a file on your site into the page (Some people have expressed concerns about Texty’s future in the crowded Web 2.0 marketplace, although I hope/believe Texty is here to stay).

Please keep in mind that none of the content management systems I have described in this blog will allow search engines to properly index your Web site and display your Web pages in search results. To ensure your pages are optimized for search engines, you would need to write your codes on the server-side using a scripting language like ASP.NET or PHP. However, I have yet to find a free Web hosting solution that offers these scripting languages, and I don’t want to pay money for my Web site, so I stick with my SEO-free pages, and rely on my blog to drive traffic to my site (LockworldHerald.com).

To be honest, though, I’m quite happy that my site is improperly indexed by Google and other major search engines. I’ll explain why I feel this way in my next series of posts, which will provide a very rough sketch of how search engines view your Web site, and why none of them are doing the job properly.

That’s all for today. I know that this blog has become increasingly technical over the past few months, which is fine with me. However, I originally intended this blog to help out not only the advanced HTML-coder and site designer, but to also be of more use for the middle- and entry-level users. Furthermore, I want to do more reviews of other free Web resources besides Microsoft Office Live Basics and Zoho Creator. I’m looking forward to getting “back to the basics” in addition to writing more advanced content.

Update to code from previous post

Monday, October 22nd, 2007

My apologies, but I left out a critical element from the code in my last post. If you use the code I originally posted, it will write ALL of your Texty’s into a single page.

I should have included a line that will compare the actual URL with the values from your JSON feed to determine whether or not to write a particular Texty:

if (val==winval){
document.writeln(Texty);
}

Here’s the corrected code (I’ve also corrected the code in the original post):

<html>

<head>

//Optional: Your default page title, which can be changed based on the Texty you include

<title> Your Site Title </title>

//Load your JSON feed from your Zoho Creator application:

<script type=”text/javascript” src=”http://creator.zoho.com/ {Username} /json/ {View number} / {Private Link – Optional} /”></script>

<script type=”text/javascript” src=”/Documents/AjaxIncludes.txt”></script>

</head>

<body>

<script>
ajaxincludes(“banner.htm”);
ajaxincludes(“navigation.htm”);
</script>

<!–Identify and Insert the appropriate Texty from your list here–>

<script>

//Identify the parameters passed through the URL:

// Example – http://lockworldherald.com/Documents/articles.aspx?Home

var winloc=”"+top.window.location;
var winsplit=winloc.split(“?”);

//If a value is found, match it to the appropriate Texty script from your Zoho Creator database

if (winsplit.length>1) {
for (var i=0; i<zoho{Username}view{View Number}.{Form Name}.length; i++){
var NewArray=zoho{Username}view{View Number}.{Form Name}[i];
var val=NewArray.Value;
var Texty=NewArray.TextyCode;

//It is a good idea to convert everything to lowercase, since javascript is case-sensitive. This way, if your page value is “superman,” your user could enter “Superman,” “SUPERMAN,” or “superman” and still get the the correct page:

val = val.toLowerCase();
var winval = winsplit[1].toLowerCase();

//Updated code begins here

if (val==winval){
document.writeln(Texty);
}

//End updated coce

//If you choose to change the Page Title for your records, include this code:

if (NewArray.Page_title>”") {
document.title=NewArray.Page_title;
}
}
}

//It is a good idea to add something here in case someone fails to enter a parameter into the page. Either redirect them to a page which will always exist, or else put the script for a fixed Texty here.

else {
location.replace(“http://yoursite.com/Documents/Testy.aspx?Value“);

// OR

document.writeln(‘<scr ‘+’ ipt type=”text/javascript” language=”javascript” src=”http://texty.com/cms/syndicate/ {Your Unique URL} .js”></scr ‘+’ ipt>’);

//NOTE: If you want to include the Texty within this code, you have to make sure you split up the <script> and </script> tags as I have done in the example above. Otherwise, your browser may get confused between a document.writeln(“</script>”); and a regular </script>, which can cause your javascript code to cease functioning.

}

</script>

<!–End Texty Script–>

<script>

ajaxincludes(“footer.htm”);

</script>

</body>

</html>