ceon_uri_mapping

Revision History

Date Version Release Information
16th June 2010 3.6.3

[UPDATED] URI mapping lookup query updated to use a LIKE operator before the REGEXP operator. Limits the number of records that have to be examined by the REGEXP, resulting in vastly superior performance when the URI mappings table is large (especially if it is too large to be cached in memory by the SQL server software). Code update by Christian Pinder.

[INTERMED] Index added to the database table, for categories/products/EZ-pages, to speed up URI mapping. Gives a noticeable improvement with very large sites with tens of thousands of products. Thanks for suggestion for index format goes to Christian Pinder. Database structure shall be changing entirely in 4.0.0 for further optimisations (As always all changes are managed by the auto-upgrade functionality of the software).

[UPDATED] When URIs are being auto-generated, any forward slashes, pipe characters, plus symbols, colons, semicolons, brackets, square brackets or angle brackets in the name of a category/product/manufacturer/EZ-page will now be converted to a space, then replaced by the whitespace replacement character. This means that names with those characters in them will no longer have the words joined together.

[ADDED] Sample modified core files for Zen Cart 1.3.9d added to the distribution.

25th May 2010 3.6.2

[BUGFIX] Modified version of breadcrumb core file was missing from the distribution.

[BUGFIX] Modified version of canonical core file was in the wrong folder in the distribution - should have been in the init_includes overrides folder instead of the main init_includes folder.

[UPDATED] Minor documentation updates (including the correction of the incorrect information regarding the canonical override file).

24th May 2010 3.6.1

[ADDED] Sample modified core files for Zen Cart 1.3.9c added to the distribution.

24th May 2010 3.6.0

[ADDED] Support for filtered product listings having their own static URI added. Previously only a single unique set of query string parameters would allow a filter product listing to have its own static URI. The software can now extract the identifying query string parameters which allow product listing pages to have their own static URI.

[ADDED] Modified template files added to distribution to enable support for static URIs in the Manufacturers sidebox, the Music Genres sidebox, the Record Company sidebox and all of the product listing filter forms. This would seem to complete the support for static URIs in a standard Zen Cart installation. There are no further files known to have code which does not support static URIs!

[UPDATED] Software will now (once again) redirect to the static URI for a manufacturer's page, if it exists, when the index page is being accessed with the query string parameters identifying a manufacturer.

[BUGFIX] The canonical URI for the root of a site was incorrectly having its trailing slash removed.

[UPDATED] Checks against the query string parameters being used to build links are now case insensitive.

[UPDATED] Order of checks against query string parameters changed so that the check for the identifying parameter for a category is now the last check made. This has been done in case any other software uses links which have the category query string parameter in them, so that these [hypothetical] links won't have their static URIs incorrectly overridden by a static URI for the associated category.

17th May 2010 3.4.3

[BUGFIX] Code introduced in 3.4.0 to remove extra ampersands from the URI was being overzealous and removing an extra ampersand whenever the primary query string parameter for a mapped URI was not at the start of the query string, but was instead preceded by other query parameters. This broke the preceding and following query string parameters as the name of the following parameter was being appended to the preceding parameter's value.

15th May 2010 3.4.2

[BUGFIX] Auto-upgrade script was attempting to add the excluded_files column to the configuration database table when upgrading from version 3.2.4, even though this column is already present in the table.

13th May 2010 3.4.1

[ADDED] Check for link to index page added to link generation function. Saves having to call the database when linking to the index page, resulting in lighter usage of server resources.

[ADDED] Automatic redirection of variants of index page URIs added (index.php, index.php?main_page=index). Instead of having a default URI mapping for the index page, all links to the index page are now handled in code, with all links automatically being redirected to the root of the store (i.e. the value of DIR_WS_CATALOG, e.g. / or /shop).

[UPDATED] All canonical URIs are now absolute URIs. In 3.4.0 they were relative to the site's root, now they are full URIs (they include the http URI scheme and the site's domain name).

[UPDATED] Any previously added mappings for the index page will be automatically made into historical URIs as they are no longer needed.

[UPDATED] New function added so that when Ceon URI Mapping is redirecting to another URI, the query string is rebuilt with any array or multi-dimensional array parameters intact. (Standard Zen Cart function doesn't support passing arrays). To minimise server impact the functions are only loaded if needed.

[UPDATED] Support added for building canonical URIs for pages which are loaded by posting a HTML form which uses the GET method. Filters on product listing pages etc. use a form to build their URIs; previously this would result in each filter creating a new URI without a canonical hint tag. Now all pages always have a canonical tag, regardless of how the URI is built, by populating the canonical URI variable even when the only things that have changed in the URI are the filtering parameters.

[BUGFIX] The default index page mapping added in 3.4.0 meant that any manufacturer product listing page which didn't have a static URI mapping specified/generated redirected to the index page when trying to add a product to the cart directly from the listing, meaning that the add to cart functionality was broken. This redirection no longer takes place, so the add to cart functionality has been restored.

[UPDATED] FAQ added to documentation to point to the information needed to get some third party modules working when Ceon URI Mapping is enabled. Information about what needs to be looked at made clearer and more comprehensive.

8th May 2010 3.4.0

[ADDED] Canonical URI support added! Any page with a static URI will now have a canonical URI tag added to the page's header. This will minimise “duplicate content” reports as it tells the search engines that multiple pages should be treated as one, without actually redirecting the visitor.

The canonical URI hint causes any parameters added to the URI to be ignored, thereby preventing duplicate content reports when Zen Cart adds its session ID (?zenid=xxx) to the URI or when paged, sorted or filtered results listings add their parameters (e.g. if a page had a ?sort=2a parameter) etc.

[ADDED] Module now tracks whether or not the user has just selected a different language. If so, then instead of simply appending “&language” to the end of the URI, the module will automatically redirect to the specific URI mapping for the page for the newly selected language.

[ADDED] If the URI uses a different language from the session, the session is switched to use the new language. This means that the page will display in the language that the URI is specifically defined for. I.e. if a site has a page in two different languages and each has a translated URI (E.g. /chairs and /chaises), the session language will correctly reflect the URI being displayed in the address bar. This greatly enhances the language handling of Zen Cart!

[ADDED] Support for mapping hard-coded links containing “index.php?main_page=” added. EZ-Page alternative URLs use this format so they are now remapped to the appropriate static URI mappings.

[ADDED] Improved support for IIS ISAPI rewrite module added. URI Mapping module tries to use the original URI the IIS ISAPI rewrite module provides.

[UPDATED] The “cPath” query string parameter is now removed from the URI if the current category is simply the product's master category, as the category path information can be regenerated when the static URI is loaded. Results in neater URIs, and less “duplication” of pages as seen by the search engines.

[UPDATED] main_page query string parameter is no longer part of the main check to see whether or not an attempt should be made to identify and map the URI as some forms using the GET method provide the main_page variable. Main check is now made against the name of the script being loaded (that it doesn't include index.php).

[BUGFIX] Generated links to manufacturers weren't using the URI mapping entered for the manufacturer because of incorrect pattern matching in the zen_href_link function as modified for this module.

[BUGFIX] Typo in code to look up current URI mappings for a product was breaking the product preview info admin page when it was accessed directly from the “Preview” icon in the Categories/Products admin section. All admin/includes/modules/*/preview_info.php files need updating!

[BUGFIX] The product_id query string parameter is no longer removed if it includes attribute information, so that the attributes can be correctly pre-selected when clicking on a product in the shopping cart.

[BUGFIX] Support for arrays (inc multidimensional arrays) in query string added using new Array Query Parameter function.

[UPDATED] Extraneous ampersand character could be left over in the URI when removing used query string parameters from the URI.

[UPDATED] Example rewrite rules updated to support up to 5 characters for file extensions, rather than 4. This fixes the problem of 404 error handling pages with .shtml file extensions being processed by the rewrite rule, which was then causing Zen Cart to run and record the URI that generated the 404 in Zen Cart's “Who's online” database. Paths to missing files on the server will no longer be processed by Zen Cart and so won't show up in the “Who's online” database.

[ADDED] Sample modified core files for Zen Cart 1.3.9a added.

[UPDATED] Improvements to the documentation to make a few things clearer and information easier to find.

17th September 2009 3.2.4

[BUGFIX] When a URI was being mapped to a page for a different language from the default/current session's language, the module wasn't changing the language for the session to the language being mapped to.

[BUGFIX] Certain Zen Cart links to the product info page(s) don't use the category cPath variable like all the other links to these pages. Module updated to set this variable if it isn't set and therefore prevent these links breaking.

27th June 2009 3.2.3

[ADDED] Ability to exclude specific files added to ensure 100% compatibility with third party modules that have files which load up the Zen Cart system directly so they can process payment callbacks etc. To ensure that these files aren't adversely affected by the URI Mapping module, they should be excluded from being processed by the module by entering the file names in the configuration utility.

[UPDATED] Default URI Mapping is now added to map the dynamic URI for the store's home page (index.php?main_page=index) to its base static URI (e.g. / or /shop etc.) - avoids possible duplicated content issues with search engines.

[UPDATED] Extra checks added to minimise the number of situations in which the cPath query string parameter is appended to static URIs for products. The links to a product page for a product with a static URI are no longer checked against the cPath value for the global environment but are checked against the value the link function is called with. This should result in more matches and therefore the removal of the cPath variable more frequently, giving cleaner URIs.

[BUGFIX] A 404 page was being incorrectly displayed when the store's base URI was accessed with a query string appended. The index page is now displayed as expected.

[BUGFIX] Pagination, sorting and filtering functionality wasn't working when browsing by manufacturer as the module was clearing the query string parameters used to control this functionality.

[BUGFIX] Fixed a problem wherein an endless redirection loop could occur if a static URI used the main_page query string parameter.

[ADDED] Information about new Excluded Files functionality added to the documentation.

31st March 2009 3.2.2

[BUGFIX] Incorrect logic added in version 3.2.1 meant that some URIs for the index page were bringing up the page_not_found page, if the query string didn't have "main_page=index" in it and the store has Zen Cart installed in a subdirectory rather than the root directory of the site.

27th March 2009 3.2.1

[BUGFIX] The module was not compatible with Zen Cart's page_not_found/404 functionality.

[UPDATED] Default Whitespace Replacement Character for auto-generated URIs changed from a single underscore to a dash. (The primary reasons for this are that dashes are easier to find on the keyboard and type in for most people and dashes are more clearly read in underlined links).

[UPDATED] Documentation updated to use a single dash as the Whitespace Replacement Character.

[UPDATED] Documentation updated to make various information a little bit clearer and/or more specific.

17th March 2009 3.2.0 [ADDED] Ability to specify the current URI mapping for a manufacturer directly in the admin added.

[UPDATED] Support for mapping manufacturers to static URIs added to link generation and page identification functionality.

[UPDATED] Database format updated to use a separate field for query string parameters when setting up mappings for other Zen Cart pages.

[BUGFIX] For versions 3.0.0 to 3.0.2, the links to the home page could go to a category or product page instead of the home page as the module was using an ambiguous SQL query.

[BUGFIX] Static URIs for categories were overriding the manufacturer display functionality of Zen Cart as they have a similar dynamic URI structure. Fixed by new manufacturer handling code.

[UPDATED] Documentation completely rewritten. Installation documentation made simpler, layout of documentation made clearer, table of contents added to the configuration documentation.

[ADDED] New section added to the configuration documentation to help with setting up a working rewrite rule for the server and information about the new format for setting query string parameters added.

27th Feburary 2009 3.0.2

[BUGFIX] Format specifier for seconds part of date component was the wrong case, causing an illegal time to be generated. This caused an SQL error in stricter versions of MySQL.

[BUGFIX] Documentation regarding example rewrite rules updated to include a rule exclusion for the editors directory. Without this exclusion only the standard Zen Cart text editor could be used in the admin!

[UPDATED] Code added to init script to set the value of $PHP_SELF in certain circumstances, to prevent the rewrite rules interfering with the zen_href_link function in some very particular cases.

19th Feburary 2009 3.0.1

[BUGFIX] The standard Zen Cart initsystem initialises the languages system at one of the later stages, meaning that the language ID is set too late in the initsystem process for this module to work correctly when a non-human visits the site. The languages init code is now run in the URI Mapping initsystem script to fix this (major) problem. ALL users should upgrade.

16th Feburary 2009 3.0.0

[UPDATED] Completely new database structure implemented.

[ADDED] Idea of “Current” static URI made central concept behind handling of URIs in module. All admin URI functionality now inserts/updates mappings for the “Current” URI only.

[UPDATED] Ability to “delete” URI mappings removed. Instead, any “old” URI mappings are marked as no longer being current.

[ADDED] Historical URI mapping support added. “Deleted” URI mappings still point towards their original subject, by redirecting the user to the “Current” URI for the subject. URI mappings being updated don't have their old URI mappings retained; however, they can be added [back in] to the database manually if necessary.

[ADDED] Support for all Zen Cart pages added to the database, the module's code and its modifications to the zen_href_link function. Any Zen Cart page can now have a static URI, which will be linked to instead of the standard Zen Cart dynamic URI!

[ADDED] Automatic redirection of dynamic URIs to their current, active URI mapping added to URI Mapping. Any attempt to use a dynamic URI for a page which has a current static URI will result in the user being redirected to the current (static) URI.

[ADDED] Ability to specify the HTTP Status Code to be used for the redirection to an alternative URI added. Allows controlling of exact type of redirection (temporary/permanent etc.).

[ADDED] Support for pages related to the product info pages added. Reviews and Tell-A-Friend sections are now automatically made “subsections” of the product's main info page, by appending some specific URI parts to the product info page's static URI. These specific URI parts are defined in the admin languages file.

[UPDATED] Dynamic query string variable is no longer appended to static URI links for subcategories or links to product info pages (for those which aren't a link to a linked product). Results in cleaner, “nicer” URIs!

[BUGFIX] Missing filename definitions added for several product types. Links to products of these types now correctly use any static URI defined for the product.

[UPDATED] Documentation updated with information about new functionality and the methodology behind the new way the module works.

13th Feburary 2009 2.0.3

[BUGFIX] URIs being output for links on stores with a directory prefix other than “/” were incorrectly having the directory prefix prepended to the URIs!

21st January 2009 2.0.2

[BUGFIX] Module wasn't being run on the store side on servers which have an unexpected SCRIPT_NAME value. Updated to only use value of REQUEST_URI, SCRIPT_NAME is no longer used.

[BUGFIX] String class wasn't fully compatible with PHP 4.x.

14th January 2009 2.0.1 First public release!

[UPDATED] Installation documentation updated.

8th December 2008 2.0.0

[UPDATED] Complete rewrite - released for testing.

[ADDED] Multi-language support added. Each Product/Category/EZ-Page can now have a different URI mapping for each language used by the store.

[ADDED] Support for auto-generation of URI mappings added. Includes support for UTF-8 and transliteration - wow!

[ADDED] Full admin configuration utility added for URI mapping auto-generation functionality.

10th November 2008 1.2.0

[BUGFIX] Sometimes the session ID handling caused the URI parsing to fail as it left a trailing ampersand on the end of links.

25th September 2008 1.0.0

[ADDED] Support for all standard product types added (previously all products were displayed using the standard product type page/template instead of their custom page/template). Supported types now include document_general, document_product, product, product_book, product_free_shipping and product_music.

30th August 2008 1.0.0alpha1

Initial Release to private client of JKED.

Back to top