Usuwanie ID z Artykułu Joomla
Jak Usunąć ID Artykułu W URL Strony Joomla ?
Zjawiskiem, które często irytuje użytkowników Joomla! jest pojawiający się id artykułu, w linkach, mimo, że od strony administracyjnej mamy włączoną opcję uproszczonych adresów.
Zgodnie z zapowiedzią https://www.joomla.org/announcements/release-news/5692-road-to-joomla-3-7.html , kwestia miała być rozwiązana w wersji 3.7, ale tak jednak nie stało się.
W Joomla 2.5 była przez moment taka funkcja usuwająca ID,
ale została usunięta ze względu na planowaną kompleksową zmianę, właśnie w 3.8, czy tak będzie to się okaże, ponieważ już 3.7 miał to rozwiązać, ale jak widać problem pozostał.
W każdym przypadku, gdy artykuł nie jest podłączony do menu, np.w przeglądzie artykułów, liście kategorii, po otwarciu artykułu,pojawia się jego ID z bazy danych. Niby nie jest to wielki problem, ale z punktu widzenia SEO, nie jest to bez znaczenia. Jeśli ktoś włączył przyjazne linki, skutkuje to rejestracją podwójnych tagów tytułowych, a tym samym może to wpływać na ranking strony, w algorytmach google. Jak? Otóż, w "Search Console" w sekcji "Udoskonalenia HTML", można znaleźć potwierdzenie takiego faktu, w postaci zarejestrowania tego samego artykułu z ID i bez ID. Jeśli taki fakt jest odnotowywany, to może być/jest wykorzytywany, przy pozycjonowaniu. Tyle teorii
Korekta problemu, związanego z usuwaniem ID artykułu jest bardzo prosta, lecz wymaga ręcznych zmian. Dodatkowo, po każdej aktualizacji trzeba te zmiany, wykonywać ponownie (aż do czasu wersji 3.8).
Procedura usuwania ID artykuły w adresach url Joomla!:
1. Poprzez FTP należy wyedytować plik znajdujący się w katalogu, gdzie umieszczono Joomla!, czyli:
katalog_zainstalowania_joomla\components\com_content\helpers\legacyrouter.php
2. W pliku, należy odnaleźć linię kodu, o numerze 62
62 $advanced = $params->get('sef_advanced_link', 0);
i zamienić na:
62 $advanced = $params->get('sef_advanced_link', 1);
odnajdujemu drugą linię kodu o numerze 313
313 $advanced = $params->get('sef_advanced_link', 0);
którą zamieniamy na
313 $advanced = $params->get('sef_advanced_link', 1);
W tym pliku to całość zmian, więc zapisujemy plik, a następnie przesyłamy z powrotem na serwer.
3. Poprzez FTP przechodzimy do katalogu wyżej, czyli katalog_zainstalowania_joomla\components\com_content\
i należy wyedytować plik znajdujący się w katalogu, o nazwie router.php .
4. odnajdujemy fragment kodu, zaczynający się od linii 48
if ($params->get('sef_advanced', 0))
{
$this->attachRule(new JComponentRouterRulesStandard($this));
$this->attachRule(new JComponentRouterRulesNomenu($this));
}
else
{
JLoader::register('ContentRouterRulesLegacy', __DIR__ . '/helpers/legacyrouter.php');
$this->attachRule(new ContentRouterRulesLegacy($this));
}
i zmieniamy treść, wyłączając komentarzami, część kodu, który po zmianach powinien wyglądać tak:
/* if ($params->get('sef_advanced', 0))
{
$this->attachRule(new JComponentRouterRulesStandard($this));
$this->attachRule(new JComponentRouterRulesNomenu($this));
}
else
{
*/
JLoader::register('ContentRouterRulesLegacy', __DIR__ . '/helpers/legacyrouter.php');
// $this->attachRule(new ContentRouterRulesLegacy($this));
// }
w ten sposób wskazujemy plik, który zmieniliśmy we wcześniejszych krokach, a który decyduje o prezentacji ID artykułów w adresach URL Joomla!. To całość zmian, więc zapisujemy plik, a następnie przesyłamy z powrotem na serwer.
5. Ostatnim krokiem jest wyczyszczenie buforu Joomla!.