 |
|
Thursday, January 4. 2007
Syntax's built in search engine has had search suggestions for a while now, you can see it in action on NCLR's site. These "best bet" recommendations are a simple match for the user's search query in the name field of each object. This makes sense since for relevant content the keywords are often within the title of a press release, publication, or person.
Search tools has looked into search suggestions, and come up with eight principles for good search suggestions.
Search suggestion systems complement search engine results with human judgment, providing links to specific landing pages for common search terms where the algorithmic results may be confusing or unavailable.
The list is an excellent set of recommendations that has me thinking about adding some intelligence to our search engine. Particularly the idea of of logging search queries and using that data to understand what users are searching for and fine tune recommendations. I could see a system that:
- Tracks search term frequency by month, incrementing the count for a search term in a simple table with fields for the search query, the month, and count. You could then use that data to see what are popular search terms in a given month and also analyze how terms change from month to month.
- Use the log to provide suggested search terms as the user types. For example, if the type in "Leg", a small drop down appears with "Legal" or "Legislation" as possible matches. Using jquery and its autocomplete plugin, this wouldn't be technically difficult to implement
- Provides a way for site administrators to view search query data. A simple log can provide some insight into what user's are looking when they visit.
You'd probably need some sort of filter so that profanity and offensive terms don't get logged in the system and shown to other search users. Since search is a common navigation tool, improving the search interface would improve the user experience.
Wednesday, September 28. 2005
Rob Sullivan has an article on choosing a content management system with questions to ask to evaluate how search engine friendly resulting pages are. I thought I'd take a moment to evaluate how SyntaxCMS compares to his criteria.
Does the system support unique meta tags?
SyntaxCMS supports unique metadata for each page (section in SyntaxCMS) and they are modifiable. However, SyntaxCMS does not provide unique meta-tags for detail pages.
Does the system support static pages?
By static pages, Rob actually means clean urls with no query strings. SyntaxCMS does use clean urls for the majority of content, specifically for sections (pages). It does not require session variable or other dynamic variable to display a page, a URI is sufficient to access any page (unless its not viewable by the public). However, once you start adding in filtering and pagination of content lists, it will use a query string.
How flexible is the folder structure?
He also suggests that it'd be best if "all pages could reside in the root folder", as he says that pages deep in subfolders are ranked lower in relevancy by search engines. SyntaxCMS uses the "directory" structure in the url to figure out what content to retrieve, so this leads to urls that are longer than his ideal. I don't think this really ranks heavily in search engine relevancy, there are more important factors to optimize. These factors include using good title links, good text for links ( no "Click here" nonsense), and overall good content.
What platform does the CMS need to run on?
SyntaxCMS is intended to run on any platform that supports apache, php4, and mysql. Currently, it is most tested on linux distributions. It does run on windows systems but since mysql on windows doesn't support the ENCRYPT() function in the same way it is not usable. This is something we are looking to address in the future by migrating away from the ENCRYPT function.
What kind of customer service does the CMS company offer?
SyntaxCMS is open source, anyone with decent PHP/MySQL skills could add functionality. Forum One Communications offers commericial development, hosting and support as well.
Tuesday, August 2. 2005
This is part of a series on how to think like SyntaxCMS.
When last we spoke, we covered the components of SyntaxCMS from a conceptual standpoint. Now let's look at how some of these components interact in the first ways you'll probably want to use them in a real site: publishing.
Publishing always involves site sections in one way or another. The simplest way to think of a bare-bones SyntaxCMS site is just a site full of sections, analogous to pages in a book. One can publish pages to different sections of the book. So if you have a home section, you can publish a page About Us, another one with a way to Contact Us, and maybe something about the Projects you're undertaking. These can have HTML just like a blog post (ahem).
So to do this, you create a site section and then publish it to another site section. The new site section becomes a child, and your original site section, the one you're publishing the new one to becomes a parent. In fact, the relationship is hierarchical , so we can talk very much like a family tree--albeit the family tree of a bunch of asexually-reproducing amoebas, but even amoebas have to come from somewhere.
So another new site section published to the one you just created is a grandchild of the original site section. The original site section (and its parents) are ancestors of the site section you just created. If you go to your site and look from the home page, all these site sections you just created are descendants of the great grand-site-section of them all, the home page.
That sort of site, known colloquially as brochure-ware, is not terribly interesting, and it doesn't take advantage of SyntaxCMS's ability to use different content types and mix them all together. So say you don't want just a boring document library, but you have some text about applying for Jobs at your organization, and you create a site section for it and publish it to your About Us site section. But you also need some sort of form that applicants must sign before their employment application can be processed by HR. The SyntaxCMS way is to create a document object and then use the publish tab to publish it to the Jobs site section. You go to the jobs page, and sure enough, there's your text and a link to and description of your form.
But what if you're participating in a job fair? You can create an event object and publish it to that same page, so it shows up right after your form. Now you have a pretty complete Jobs page with some text, a form, and an event. Three different content types (site section, document, and event) coexisting for no other reason than their content is about jobs, which is how you think about finding them. People don't think "Hey, I'd better look in the Documents section for any jobs form, and the calendar for any jobs-related events, and then the Jobs page for any information about openings," they think "Hey, I should click on the Jobs page and see if there is anything there and how, where, and when to apply."
But say you've been having a hard time finding decent help and you'd like the job fair announcement to be featured more prominently, but it should still be there for the hopeful worthies who have bookmarked your Jobs page, awaiting breathlessly your next opening. In fact, the boss comes in and says he wants it on the home page, ASAP. Well, if you have the default configuration, all you do is publish that same event to the home page site section as well as the Jobs site section.
This should give you a taste of how SyntaxCMS lets you put information where it makes sense, even if it needs to be in multiple places. There's no retyping or copying and pasting, just click a couple of buttons in the admin area. And if, in the future, you have different types of jobs, all of whom need their own page, you can just keep adding new site sections and publishing them to the Jobs site section so users can drill down. Each of them can have their own form, or you can make sure that the original form is there on each of those pages.
But what if the job fair event has an admission form that applicants should fill out before attending? That gets into relationships, which we'll cover in the next part of this series. In fact, we'll find out that publishing is actually a special case of relationships in SyntaxCMS. For now, think about the myriad ways you can present the same information just by publishing content objects to site sections or forming a hierarchy of information by publishing site sections to one another.
Wednesday, July 20. 2005
This is part of a series on how to think like SyntaxCMS.
Content Types
The fundamental idea of a SyntaxCMS site is the content type. This is analogous to a "class" in object-oriented programming. In the API documentation and the programmer tool, you will see it referred to as a "datatype", but it's easier to communicate the idea of it to non-technical people by using the term "content type". A content type is any uniform type of data you want users to be able to access. Included are such content types as Events, Articles, Documents, and Third Party Links. Likely you have different types of content you'll want to maintain a directory or listing of on your site, such as Member Organizations. In addition, you can think of the parts of an interactive tool as content types. For example, a blog consists of Posts, Comments, and Trackbacks.
If you were programming a site from scratch using Object-Oriented Programming (OOP) you might think in these terms. SyntaxCMS frees you up from the from-scratch programming and database design you would ordinarily have to do, so you can spend your time thinking about how to break your site's content into structured content types. Accordingly, a record you create in the database is a content object. Much of what you do in programming SyntaxCMS is the manipulation of content objects. SyntaxCMS will let you use a web-based interface to define, edit, and delete properties of content types and will generate classes and other code to let you manipulate them in your site.
Site Sections
A special case of a content type is the site section. Site sections are special in that they can be thought of in two ways. First, they act like flat HTML pages in a navigation tree like you may remember from the Bad Old Days. However, they are easier in that they can be created on the fly, there are tools to let SyntaxCMS automagically generate the navigation for them and update it when you rearrange the site sections, and their content can be edited in a form in the administrative tool. Second, they can be thought of as "containers" for arbitrary collections of content objects.
Each content object has the built-in capability to be "published" to a site section. If your organization is holding a conference, you may wish to display events, conference papers, and general information articles in a single place separate from any calendar or document library your site may contain. Simply create a site section with the necessary introductory text and manually select the appropriate content objects and publish them to that section.
But what if you want to separate out some key articles or events for that conference? By default, SyntaxCMS comes with the ability to publish in two ways: normal and "featured". SyntaxCMS gives you the ability to filter how something has been published to a site section and display content accordingly. But what if you have "featured" documents, "key" documents, and run-of-the-mill documents? SyntaxCMS lets you expand the number of publishing types to as many as you like. Just set up a couple of defines and you're set.
Pick Lists
What if you are or are working with a records-management or information architect-type person who wants a way to classify all your content objects across the site, so they can be categorized and searched for? In other words, what if you want a "controlled vocabulary", like a standard list of countries?
The SyntaxCMS way is to create a pick list. Essentially, it's a small database table that contains your vocabulary and lets you put access to it in any appropriate content type. So all your site authors have to do is put in their article content and pick which country or countries it applies to. Then you can either let SyntaxCMS create a browseable list for you, or you can cleverly use it to group or filter lists of content elsewhere on the site.
Modules
The way you construct the complex behaviors and filtering of content types is through modules. Modules can also stand alone, which is good for more complex behavior like the included Calendar module in SyntaxCMS. Each module is made up of capabilities, which can either be called through the API or addressed directly in the browser. Capabilities are just basic PHP scripts which can share a library of classes or functions with the rest of the module.
Templates
Templates are used throughout SyntaxCMS. They are simply PHP files, but they follow a couple of conventions: they are named .tpl, they contain only display logic, and to every extent possible, they do not use print or echo statements to produce HTML, but rather switch context out of PHP whenever possible.
Templates can be global, site section, or module templates.
Global templates are used throughout the CMS and are found in /private/templates/ and in various subdirectories.
A special subdirectory is /private/templates/section/, which contains custom site section templates. To override the default section template (/private/templates/section.tpl), just place a template with the same file path and name in that subdirectory. So if a site section is found at http://www.syntaxcms.org/section/test/my_section/, a custom template for it would be found at /private/templates/section/test/my_section.tpl.
Module templates are found in the templates subdirectory of each module (/private/modules/{module name}/templates/). For most modules, there is list.tpl, listitem.tpl, listitem-featured.tpl, and detail.tpl. list.tpl controls how a list of items will be displayed, listitem.tpl controls how each individual list entry will be displayed, listitem-featured.tpl controls how featured items will be displayed, and detail.tpl controls how a detailed view of a content object is displayed. SyntaxCMS will automatically look for these before using the default templates (in the general module), so their naming is important.
Admin Application
This is the application that site administrators will use to create and update content.
DBasis (Developer Administration)
This is the application developers use to create and update content types, set CMS-wide preferences, and view and edit the complete content of a site.
Wednesday, July 20. 2005
Learning how to "think like" a system is usually as or more difficult than installing it. As such, a new series, "Thinking Like SyntaxCMS," will be a guide to thinking about how to use SyntaxCMS 1.x for a project, how to go about altering it, and how to create the functionality you need for a new project. It will not discuss the technicalities of installing the system. However, it is written for the web programmer or webmaster who has to take the plan you have for a website, decide if SyntaxCMS is the right tool for the job, and then, if you’ve decided it is, planning and implementing your site with it. It will assume a certain amount of basic programming knowledge.
The first installment, in the next post, will describe the components of SyntaxCMS.
Sunday, October 24. 2004
I thought I'd comment on what we are trying to do with Syntax CMS and help potential users decide if it's right for them.
What Syntax CMS Is
Syntax CMS is a result of our custom development for Non Profit clients. Syntax CMS is the platform most of the sites that Forum One Communications has developed were built upon, either in its current form or one of the intermediate predecessors. Accordingly, you'll find it suited to people who have to build out a lot of custom features but don't want to reinvent the wheel each time. Syntax CMS and its ancestors have been used for everything from five or six-page sites without a lot of dynamic content to gargantuan information repositories to a environmental data collection and display Web application.
Syntax CMS is a starting point. Syntax CMS is built with the assumption that what you get out-of-the-box is not what you'll end up with as your finished site. We assume you'll not only want to change the templates around, but create new content types and program a couple of custom displays or even Web applications.
Syntax CMS is optimized for content administrators and programmers. Syntax CMS, as befits its primary role as our in-house development platform, is optimized for content administrators who only work with installed and configured instances as well as programmers who develop the applications the content administrators will later use. This is not to say it is the be-all and end-all of usability for either case, but this is where much of the effort we have put into the system has been. Accordingly, you'll see better documentation than in most in-house projects for programmers, and easier-to-use content interfaces than some more developer-centric Web applications. Improving both continues to be a priority for us, especially usability for content administrators.
Syntax CMS is content-based. Syntax CMS was developed with Forum One's clients in mind: policy organizations with a great amount of existing content either locked away in a static HTML Web site or offline in individual documents. Accordingly, the site assumes you'll have different content types, want to use the existing content anywhere it's appropriate, and maximize the ability of users to find the content no matter the strategy they use to find it: clicking on pages, filtering by category, or searching.
This is the main reason Syntax CMS exists--to support faceted classification and content discovery. My favorite metaphor, which I freely stole from one of our senior strategists, is finding salsa in the grocery store. You can look at the store directory and find "condiments," go to that aisle, and find salsa. But you can also find the same product under "ethnic food." And if there's a display of party supplies that includes tortilla chips, salsa will be there. It will also likely be near where tortilla chips themselves are sold. So the store wants to make it as easy as possible to find salsa, no matter how you might think of finding it. Syntax CMS wants to make it as easy as possible to find content items, no matter how you think of finding them.
What Syntax CMS Is Not
Syntax CMS is not a "product" Forum One sells. We sell and support solutions. There's no Syntax CMS box. We don't ship it. It's free. We don't provide support for the open source version the way we do the solutions we create for our customers, though of course you are welcome to make a special arrangement with Forum One to get support on a time and materials basis. It's open source because we thought it might be useful to the community, and really we have no reason to keep it closed. An active user community would be nice, as would contributions and improvements from that community, especially in areas that aren't our in-house priority (just because they're not a priority doesn't mean we wouldn't think they're useful or of value). However, our goal is not Syntax CMS on every server. We expect it will be useful for people with problems like ours. We expect to keep using it to provide smart solutions for policy organizations who come to us for strategy and development. We don't expect to make a lot of money from people who want a given feature and will pay us to implement it--though we of course would be happy to work something out. But bottom line, Syntax CMS is not a "product" and will not be for the foreseeable future.
Syntax CMS is not a CMS-in-a-box. In accordance with our "not a product" strategy, the open source download of Syntax CMS is not designed to be a finished application after installation. You should be able to do some things with it, but it's expected you'll want to tweak it and program it. This means we haven't put in a lot of time to things like a nice-looking default design, or swappable and extendable themes, or even making sure the thing generates zero errors when you first install it on a different server environment than ours (though it should be mostly useable, and getting to error-free is a goal of ours--just not a high priority).
Syntax CMS is not optimized for lone webmasters looking for a quick CMS. While we would love an installation wizard like Serendipity's, it's just not a priority of ours. After all, it's not a product we're trying to sell. So you'll find that while we try to reduce the dependencies, there are a number. It is not yet as easily configurable for different servers as we'd like. We haven't spent a lot of time making it work for other databases, though it is built to allow that possibility. These are areas we would actually encourage any outside users to contribute code or design advice. However it's not a priority inside our organization. But Syntax CMS is not designed for easy installation and configuration to put up a quick CMS for users to start in on. If you're the lone webmaster of an organization that wants a dynamic Web site without a lot of effort, you probably want one of the other Open Source CMSes out there. Even if we get it more easily installed, our not-a-product strategy means it is unlikely you'll see attractive default themes or every module your heart could desire ready and waiting for you. Unless, of course, you hire us to develop a really great Web site for you.
Syntax CMS is not (primarily) page-based. Some CMSes assume that all content will appear on pages, and pages will have authors, and everything on a page is configurable. Syntax CMS is not one of those CMSes. We assume users will come to our content from different directions: searching, browsing by some classification, exploring links of related content, or by following a heirarchical tree of pages. But for Syntax CMS, the content is the thing. We do provide the tools that let you use Syntax CMS to generate a site that mainly gives you dynamic control of a 5-page brochure site (and we have used it in this way). However, that's just not our focus.
In fact, it is this non-page-centric approach that has caused us to build and maintain our own solution, as I noted above. So if you're looking for a solution that is what Syntax CMS is and isn't what Syntax CMS isn't, give it a whirl and tell us what you think. But remember that it's not designed to be a one-size-fits-all product--it's just designed to be a flexible enough platform for you to turn it into the solution you need--just like we do on a daily basis.
Update: I have edited the entry to clarify our stance on the open source CMS we have made available versus the solutions we regularly provide to our clients.
|
|