+48 602 683 733 kontakt@studioalfa.pl

Joomla! sztuczki, triki i porady

Jesteś tutaj: Strona główna > Blog > Joomla! sztuczki, triki i porady > Jak usunąć numery identyfikatorów ID w przyjaznych adresach Joomla

Jak usunąć numery identyfikatorów ID w przyjaznych adresach Joomla

05.02.2014.

Usuwamy ID z adresów URL w Joomla 2.5 i Joomla 3.x 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.

Zakładamy jednak, że nie będziemy mieli dwóch takich samych tytułów artykułów w tej samej kategorii. Czyli nie ma ryzyka, że wygeneruje nam się taki sam przyjazny adres URL. Jeśli tak, idziemy dalej.

Założenia i CEL

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.

Krok pierwszy - odszukanie i pobranie pliku

  1. Logujemy się na serwer FTP, na którym znajduje się nasza strona zbudowana w Joomla! 2.5 lub 3.x.
  2. Przechodzimy do folderu: components/com_content/router.php.
  3. Pobieramy plik router.php na nasz computer.

Krok drugi - modyfikacja pliku router.php

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!

Ważna informacja

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!).