Poniższy poradnik dotyczy przyjaznych adresów URL w Joomla! 2.5 i Joomla! 3.x, a dokładnie sposobu usunięcia automatycznie dodawanych do każdego przyjaznego adresu identyfikatorów ID. Identyfikatory te pojawiają się dla przykładu w adresie każdego artykułu w widoku kategorii (tzw. układ blogowy). Oczywiście identyfikatory te nie są dodawane bez powodu. Chodzi o uniknięcie sytuacji, kiedy w danej kategorii pojawił by się po pewnym czasie artykuł o takim samym tytule (aliasie) jak wcześniej opublikowany. Tym co rozróżniało by te dwa artykuły, to właśnie tytułowe, niepowtarzalne identyfikatory.
Jakie jest założenie niniejszego poradnika. Ano takie, żeby na naszej stronie zbudowanej w Joomla! 2.5 lub Joomla! 3.x, pozbyć się tych identyfikatorów z naszych przyjaznych adresów. Jednym zdaniem, żeby strona zbudowana na Joomla! miała ładne, idealne przyjazne adresy URL. Konieczna będzie do tego drobna modyfikacja w Joomla! jednego pliku - components/com_content/router.php. Zmiany, o których mowa, powinny działać również w Joomla! 1.7 (jeśli ktoś w ogóle ma jeszcze działającą stronę na tak starej wersji systemu Joomla!)
Uwaga! Opisane w niniejszym poradniku zmiany wykonujesz na własną odpowiedzialność. Pamiętaj, żeby wcześniej wykonać kopię modyfikowanego pliku (components/com_content/router.php). Gdybyśmy jednak w jakiś sposób utracili oryginalny plik, a opisane modyfikacje z jakiegoś powodu nam nie zadziałają, łatwo będziemy mogli przywrócić oryginalny plik, wypakowując go z oryginalnej paczki instalacyjnej Joomla! (oczywiście odpowiedniej dla nas wersji). Tyle (albo aż tyle) teorii. Przejdźmy do zajęć praktycznych.
Otwórz plik w edytorze programisty. Polecam stary, sprawdzony i darmowy Notepad++ (http://notepad-plus-plus.org).
Odszukaj w linii 27 kod:
$advanced = $params->get('sef_advanced_link', 0);
Zmień powyższy kod na:
$advanced = $params->get('sef_advanced_link', 1);
Komentarz: jak widać, zmianie uległ tylko parametr 0 na 1.
Tak samo postępujemy w okolicy 260:
$advanced = $params->get('sef_advanced_link', 0);
Zmień powyższy kod na:
$advanced = $params->get('sef_advanced_link', 1);
Następnie w okolicy linii 282 musimy odszukać i zakomentować kod:
if (strpos($segments[0], ':') === false) {
$vars['view'] = 'article';
$vars['id'] = (int)$segments[0];
return $vars;
}
Jednym zdaniem możemy zastąpić go poniższym kodem:
/*
if (strpos($segments[0], ':') === false) {
$vars['view'] = 'article';
$vars['id'] = (int)$segments[0];
return $vars;<b></b>
}*/
Komentarz: jak widać, powyższy kod został wyłączony (objęty komentarzami).
Informacja: zmiany, które wprowadziliśmy, powinny już działać w Joomla! 2.5.
W Joomla! z linii 3.x konieczna jest jeszcze jedna zmiana:
Odszukujemy linię 386:
->where($db->quoteName('alias') . ' = ' . $db->quote($db->quote($segment)));
Zmieniamy ją na:
->where($db->quoteName('alias') . ' = ' . $db->quote($segment));
Zapisujemy zmiany w edytowanym pliku, a następnie kopiujemy go z powrotem na serwer do miejsca, z którego po pobraliśmy: components/com_content/router.php.
Od tej pory możemy cieszyć się z idealnych przyjaznych adresów URL w naszej stronie internetowej zbudowanej w Joomla!
Ponieważ modyfikowaliśmy plik systemowy Joomla, musimy liczyć się z tym, że jedna z kolejnych aktualizacji systemu Joomla! jakie przeprowadzimy w przyszłości, może nadpisać nam plik components/com_content/router.php, a tym samym zmiany, które wykonaliśmy, zostaną utracone. Dlatego zalecane jest wykonanie kopii pliku router.php z już wprowadzonymi przez nas zmianami. Dobrą praktyką było by również podczas edycji pliku router.php dopisywanie własnych komentarzy do wprowadzanych zmian. Dzięki temu w przyszłości będzie łatwiej przenieść powyższe modyfikacje do nowej wersji pliku router.php (zakładając, że nie ulegnie on diametralnej przebudowie w kolejnych wersjach Joomla!).