Usuwanie ID z Artykułu Joomla

Jak Usunąć ID Artykułu W URL Strony Joomla ?

joomlaterra usuwanie idZjawiskiem, 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.

 

joomla seo aliasy

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,

joomla25 seo aliasy

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