Optymalizacja SEO stron opartych na Drupalu

Optymalizacja stron internetowych z myślą o wyszukiwarkach jest równie istotna, jak uczynienie ich wygodnymi w obsłudze przez odwiedzających ją ludzi. Co prawda spece z Google twierdzą, że najważniejsze jest, aby strona była odpowiednia dla ludzi, nie dla robotów, ale dlaczego nie pomyśleć o tych ostatnich?Drupal bezpośrednio po zainstalowaniu nie pozwala na tworzenie w pełni zoptymalizowanych stron. Brakuje choćby możliwości rozróżnienia treści w tytule nagłówkowym i w tagu title strony. Nie można też tworzyć własnych opisów meta description.

Meta description

Aby móc dowolnie zarządzać treścią tagu meta description, należy dołączyć moduł nodewords znany też jako „meta tags” i w ustawieniach konfiguracyjnych (admin/content/nodewords/settings) zaznaczyć przynajmniej checkbox odpowiadający tagowi description. W formularzach edycji zawartości pojawi się wówczas nowe pole tekstowe pozwalające na wpisanie własnego opisu strony.

Należy też sprawdzić, czy w używanej przez nas skórce nie jest przypadkiem zaimplementowane dodawanie znacznika opisu – należy wówczas wyłączyć taką możliwość.

Tytuły stron

Korzystne z punktu widzenia optymalizacji stron jest umieszczenie najważniejszych słów kluczowych na początku tytułu strony. Jednak czasem taki tytuł będzie niestrawny dla czytelnika, a jeżeli zapragniemy być figlarni i użyć metafory… dość powiedzieć, że Google ma bardzo prostolinijny stosunek do życia i gry słów należy stosować wszędzie, byle nie w tagu TITLE.

Po instalacji modułu Page Title zdobędziemy kontrolę nad zawartością tagu tytułowego w sekcji HEAD.

Przypadkowe H2

Jeżeli przygotowaliśmy już szablon strony, w którym najważniejsze rzeczy są zawarte w tagach nagłówkowych od H1 do H6, może nas czekać niemiła niespodzianka. O ile Google przeważnie dość trafnie wyszukuje najważniejszy nagłówek na stronie, o tyle wyszukiwarka Yahoo może jako tytuł strony wyświetlić zawartość pierwszego nagłówka, jaki znajdzie w treści strony, co ostatnio przydarzyło mi się na jednej z moich stron. Tak się składa, że był to nagłówek H2 wygenerowany przez blok wyświetlający menu nawigacyjne – o treści „Primary links” i taki też tytuł strony pojawił się w wynikach wyszukiwania Yahoo.

Jeżeli menu nawigacyjne znajduje się w źródle strony powyżej pierwszego istotnego znacznika H1 lub H2, warto wyłączyć wyświetlanie jego tytułu. W tym celu należy odwiedzić listę bloków (ścieżka admin/build/block), kliknąć na odnośniku konfiguruj przy bloku Primary links, a następnie w polu tytułu bloku wpisać tekst , dzięki czemu tytuł bloku nie będzie się pojawiał.
Duplikująca się treść na wielojęzycznych stronach

Na stronach tworzonych w wielu językach zazwyczaj korzysta się ze standardowego bloku wyświetlającego odnośniki do alternatywnych wersji językowych. Przede wszystkim dotyczy nas tu problem opisany w poprzedniej sekcji. Jeżeli blok zmiany języka znajduje się w źródle strony powyżej pierwszego istotnego znacznika H1 lub H2, należy pozbawić go tytułu w sposób opisany powyżej.

Problem jest jednak głębszy. Otóż nawet na stronach, które nie posiadają alternatywnej wersji językowej, pojawi się odnośnik zmiany języka prowadzący do tej samej strony, lecz z adresem wzbogaconym o odpowiedni prefiks. Na tejże stronie przetłumaczone zostaną wszelkie napisy wygenerowane przez Drupala, natomiast zasadnicza treść artykułu pozostanie ta sama.

W tej sytuacji pozostają nam dwa wyjścia – na takich stronach nie umieszczać odnośnika do innych wersji językowych w ogóle, lub umieścić odnośnik do alternatywnej wersji językowej głównej strony naszego serwisu.

Taka zmiana wymaga dopisania jednej funkcji w dowolnym module. Oczywiście dobrze, aby był to jeden z naszych własnych modułów: zmiany w modułach standardowych to zły pomysł (znikną przy kolejnej aktualizacji Drupala). Opis tworzenia modułów wykracza poza ramy tego tekstu, więc zaprezentuję jedynie treść funkcji. Zakładam, że moduł, w którym znajdzie się ta funkcja nosi nazwę „naszmodul”.

function naszmodul_translation_link_alter(&$links, $path) {
    global $language;
    if (!($paths = translation_path_get_translations($path))) {
        foreach ($links as $langcode => $link) {
            if (strpos($links[$langcode]['href'], 'node/') === 0) {
                if ($langcode == $language->language) {
                    unset($links[$langcode]);
                } else {
                    $links[$langcode]['href'] = '';
                }
            }
        }
    }
}

To wystarczy, aby odnośniki zmiany języka nie prowadziły do zduplikowanej treści.

Napisz komentarz