Presto Content Management System
Referencing
About Presto > Design Philosophy > Referencing
How best to refer to things in a website?  We wanted to keep the referencing of things simple, manually comprehensible, reliable and typable, and also in a good position to persist through time, regardless of the navigational locations the content may find itself in at the behest of content managers.  Language of content, and website statistics generation also had to be taken into consideration.

We made a fundamental distinction between the usually larger granularity of information that the world needed out of a CMS, versus the finer granularity of information that the CMS itself needed.  The requirement for more persistent referencing from outside, versus the hidden referencing from within. 

From this came the notion of the "group" and "group_id" that the outside world would use as handles on pieces of content that the CMS could provide, vs. the internal use of "page type" and "record_id" that Presto would occasionally use and that its administrators would be comfortable to handle.  This turned out to be quite fortuitous when it came time to creating a page versioning system, since versions of a page are distinguished by record_id. 

We provide two ways of accessing any content item from the web, by either using a placeholder (e.g. page1234.cfm) or by parameter (e.g. index.cfm?group_id=1234).  The placeholder approach provides standard site statistics engines with a distinct file name, and therefore enough to create accurate stats with; the only drawback is that the reports of some of these engines don't list the page's HTML title along with the file name for easy recognition by webmasters).  The index.cfm & parameters approach remains for those applications or websites that are not concerned about site statistics of the referenced items.

We chose not to have pages accessed by a file name that encoded their name, since such pages can be renamed, and this triggers web linking chaos.  Similarly, pages do not have a folder structure in their URL, since reorganization of a site would trigger many links from outside to fail.  All Presto placeholder pages are located in the /cms/ subfolder of a presto installation, or a similar language variation (e.g. /fr/ for french content).

Where a folder indicates a language, this enables multilingual sites to have site statistics that indicate the language that particular multilingual content was accessed by.  This also provides outside users (& search engines) with a way to link to a language-specific Presto content item (without having to figure out how the Presto URL language parameter works).

We did not use Universal Identifiers - specially generated codes which are unique because they take into account the content item id, type of content, server, and time and date they were generated.  Because of their length, they are nearly impossible to verbally communicate, manually type, or place into (human) short term memory, among other things.  The important thing is for IDs to be unique within a system.  Outside reference to IDs in a system will always include the system's URL anyways.

Valid XHTML 1.0!