|
Cookbook /
ISO8859MakePageNamePatternsSummary: ISO 8859 character conversion for page names
Version: 2007-11-20
Prerequisites:
Status:
Maintainer:
Categories: Administration
Questions answered by this recipeHow can I strip accents from characters for easier readable page names? DescriptionTo convert ISO 8859 character input to unaccented equivalents Add the following to config.php for automatic creation of page names which have accents stripped from their characters. This adds a conversion mapping array to PmWiki's Links like To convert existing pagenames you can use the script isorename.phpΔ. Read below! For ISO 8859-1 (Latin-1 Western European)# standard patterns from pmwiki.php
SDV($PageNameChars, '-[:alnum:]');
SDV($MakePageNamePatterns, array(
"/'/" => '',
"/[^$PageNameChars]+/" => ' ',
'/((^|[^-\\w])\\w)/e' => "strtoupper('$1')",
'/ /' => ''
));
# additonal character conversion patterns for ISO 8859-1 character set
SDV($ISO88591MakePageNamePatterns, array(
'/Á/' => 'A', '/Â/' => 'A', '/Ã/' => 'A', '/Ä/' => 'Ae', '/Å/' => 'Ao', '/Æ/' => 'Ae', '/Ç/' => 'C',
'/È/' => 'E', '/É/' => 'E', '/Ê/' => 'E', '/Ë/' => 'E', '/Ì/' => 'I', '/Í/' => 'I', '/Î/' => 'I', '/Ï/' => 'I',
'/Ð/' => 'D', '/Ñ/' => 'N', '/Ú/' => 'U', '/Ó/' => 'O', '/Ô/' => 'O', '/Õ/' => 'O', '/Ö/' => 'Oe', '/Ø/' => 'Oe',
'/Ù/' => 'U', '/Ú/' => 'U', '/Û/' => 'U', '/Ü/' => 'Ue', '/Ý/' => 'Y', '/Þ/' => 'Th', '/ß/' => 'ss',
'/à/' => 'a', '/á/' => 'a', '/â/' => 'a', '/ã/' => 'a', '/ä/' => 'ae', '/å/' => 'ao', '/æ/' => 'ae', '/ç/' => 'c',
'/è/' => 'e', '/é/' => 'e', '/ê/' => 'e', '/ë/' => 'e', '/ì/' => 'i', '/í/' => 'i', '/î/' => 'i', '/ï/' => 'i',
'/ð/' => 'd', '/ñ/' => 'n', '/ò/' => 'o', '/ó/' => 'o', '/ô/' => 'o', '/õ/' => 'o', '/ö/' => 'oe', '/ø/' => 'oe',
'/ù/' => 'u', '/ú/' => 'u', '/û/' => 'u', '/ü/' => 'ue', '/ý/' => 'y', '/þ/' => 'th', '/ÿ/' => 'y',
));
# join to standard patterns
$MakePageNamePatterns = array_merge($ISO88591MakePageNamePatterns, $MakePageNamePatterns);
For other ISO 8859 standardsPlease add a suitable charcter conversion array Converting existing pagenames to unaccented equivalentsYou can use the script isorename.phpΔ. Install it as normally, than run it after you installed the character conversion patterns above, with the action: Admin permission is necessary to run this action. You can do a test run without renaming anything with parameter test=1 ( NotesTo preserve the original accented page name as a page title you may want to add it to the page with the Release Notes
See AlsoContributorsCommentsIf you want to avoid CamelCase and convert spaces to hyphens (which is more SEO friendly), you can modify the recipe this way. SDV($MakePageNamePatterns, array(
"/'/" => '',
"/[^$PageNameChars]+/" => '-',
'/((^|[^-\\w])\\w)/e' => "strtoupper('$1')"
));
Roman, 2007-11-20 |