Ahoj, už som prepisoval kód jadra, ale to je cesta do pekla, pretože je potrebné riešiť príliš veľa súvislostí... konečne ma napadlo vhodné a pritom veľmi jednoduché riešenie!
(maskovanie a automatické prepisovanie adries s lomítkom)
Funkčnosť, príklad: ako alias dokumentu uvedieš
sk_moj-clanok, tak znak "_" v snippetoch nahradí funkcia str_replace za znak "/", čiže v menu sa bude nachádzať odkaz na dokument
sk/moj-clanok. Po zadaní adresy zasa spätne (na pozadí)
.htaccess prekonvertujte na
sk_moj-clanok, aby
index.php?q=sk_moj-clanok s parametrom, aby sa článok mohol zobraziť.
Ak si to chceš len tak na rýchlo vyskúšať, tak úplne stačí ak na hosting uložíš
.htaccess s obsahom dole a v Etomite vytvoríš nejaký dokument, v jeho aliase uvedieš znak "_" (podčiarnik bez úvodzoviek) a potom k tomu dokumentu zadáš url adresu s lomítkom, čiže tvar namiesto podčiarnika (podčiarnik môžeš použiť v rámci aliasu len raz a pred a za ním sa musí nachádzať aspoň jeden znak). Ak sa ti zobrazí len text dokumentu bez grafiky, tak je to kvôli dôvodu nižšie.
Úprava šablóny a je potrebná z toho dôvodu, aby sedela cesta k súborom (keďže prehliadač nevie o tom, že lomítko je len virtuálne a bude súbory hľadať realitívne) a úprava snippetov, aby bola lomítkova varianta url adresy v prípade použitia podčiarnika v aliase generovaná automaticky.
Súbor
.htaccess je potrebné upraviť na:
Kód: Vybrať všetko
# URL rewriting for Etomite CMS
# Last Modified: 2006-03-30 by Ralph Dahlgren
#
# You must be running on Apache mod_rewrite to use this.
# Remember, you must rename this file to .htaccess
#
Options +FollowSymlinks
RewriteEngine On
# Ak sa instalacia Etomite nachdza v priecinku, tak je potrebne zadať RewriteBase /priecinok
RewriteBase /
# Exclude /assets and /manager directories and images from rewrite rules
RewriteRule ^(assets|install|manager|templates)($|/) - [L]
RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]
RewriteRule ^(.*)/(.*)([^/])/?$ index.php?q=$1_$2$3 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Vo svojich templatoch, všade kde sa nachádzajú odkazú na lokálne css súbory, obrázky, alebo iné odkazy v rámci domény je potrebné zmeniť na absolútne, stačí do riadku pridať snippet
[(www_base_path)], príklad:
Kód: Vybrať všetko
<link rel="stylesheet" type="text/css" href="[(www_base_path)]templates/default/main.css" />
Je potrebné upraviť snippety, ktoré vytvárajú menu, aby odkazovali na správne súbory, napr. snippet
[[ListMenu]/b], upraviť na riadky dole (ide iba o prepis znaku "_" na znak "/"):
Kód: Vybrať všetko
$childrenList = $etomite->getActiveChildren($geneology[$geneCount], $sortString, null,'id, alias, pagetitle, longtitle, parent, isfolder, description');
$childItem['alias'] = str_replace("_", "/", $childItem['alias']);
$currentLevelList .= '<a href="'.$etomite->config['www_base_path'].$childItem['alias'].'" title="' . $linkTitle .'">';
Ešte bude potrebné napísať snippet na prepínanie jazykových verzií...