eZ Publish i jego wsparcie dla SEO
Sprawdźmy w jaki sposób eZ Publish zapewnia nam wsparcie dla SEO (Search Engine Optimization), co możemy poprawić i o czym nie powinniśmy zapominać. Postępowanie z zachowaniem kilku praktycznych wytycznych na pewno ułatwi przeszukiwanie i indeksowanie naszej treści przez wyszukiwarki internetowe.
Optymalizacja naszego serwisu pod kątem wyszukiwarki często polega na wprowadzaniu niewielkich modyfikacji we fragmentach kodu witryny oraz w definicji klas naszego contentu. Wytyczne jakie opisuję opierają się w głównej mierze na wytycznych publikowanych dla Webmasterów przez Google oraz Microsoft.
Elementy na które powinniśmy zwrócić uwagę (podczas tworzenia każdego z serwisów) to przede wszystkim:
- Znaczniki Meta
- Adresowanie witryny (URL friendly)
- Nawigacja witryny (strukturyzacja zawartości)
- Struktury nawigacyjne (breadcrumb)
- Optymalne wykorzystanie obrazków i linków (alt, title)
- Umiejętne wykorzystanie tagów nagłówka
- Dbałość o poprawne kody nagłówka http (również dla przekierowań)
- Własne strony błędów
- Zabezpieczenie się przed „Duplicate content”
- Definiowanie ważności artykułów
- Dbałość o poprawność linków zewnętrznych
- Wsparcie dla treści wielojęzycznej (nagłówki lang)
- Kanały RSS
- Zgodność ze standardami w3c
- Obsługa map serwisu
- Integracja z systemami statystyk
Znaczniki META
Stosowanie odpowiednich znaczników META jest podstawą optymalizacji naszej witryny. Należy zadbać przede wszystkim o to, aby każda ze stron naszego serwisu posiadała unikalne oraz adekwatne do prezentowanych treści znaczniki meta. W tej części zajmę się trzema podstawowymi znacznikami, tj. meta title, description, keywords.
Standardowa instalacja eZ Publish (z pakietem ezwebin) zapewnia nam pełne wsparcie dla obsługi dynamicznych (zależnych od contentu) znaczników meta. Pozwala nam na definiowanie unikalnych znaczników dla każdej contentowej treści serwisu. Instalacja w oparciu o Plain Site zapewnia nam jedynie wsparcie dla obsługi dynamicznego (zależnego od contentu) znacznika meta title. Unikalność pozostałych znaczników niestety została pominięta przez autorów systemu. Oczywiście nic nie stoi na przeszkodzie abyśmy samodzielnie zmodyfikowali mechanizm, zapewniając sobie tym samym zgodność ze standardami i wytycznymi SEO.
Obsługa znaczników META w systemie eZ Publish znajduje się w pliku page_head.tpl, natomiast definicja domyślnych wartości znajduje się w pliku settings/site.ini
[SiteSettings] MetaDataArray[description]=Content Management System MetaDataArray[keywords]=cms, publish, e-commerce, content management, development Framework
Wskazane jest zatem abyśmy we własnym pliku ini nadpisali ustawienia domyślne. W przeciwnym razie każda z naszych stron będzie posiadała wartości predefiniowane. Wartości te przypisywane są również dla znaczników meta widoków nie będących contentową częścią naszego serwisu.
Sam mechanizm wyświetlania meta description oraz meta kywords (szablon page_head.tpl) w pakiecie Website Interface jest już gotowy na obsługę tych znaczników. Jedynie w przypadku pakietu Plain Site musimy obsłużyć nowe znaczniki poprzez przekazanie zmiennych z wartościami dla tych pól. Do tego celu wykorzystujemy globalną zmienną „persistent_variable”. Oczywiście w definicji naszych klas muszą znajdywać się pola do obsługi tych wartości.
Samo ustawienie zmiennej persistent_variable powinno być wykonane w szablonie widoku „Full” dla naszego obiektu. Przykład:
{set scope=global persistent_variable=hash( 'description', 'Opis dla naszej strony' ,'keywords', 'Słowa kluczowe dla naszej strony', )}
Wartości description oraz keyword nie powinny być wpisane przez nas ręcznie w samym szablonie ale pochodzić z pól naszego obiektu. Aby zapewnić obsługę naszych meta w definicji każdej z klas, dla których chcemy zapewnić obsługę tych znaczników powinniśmy dodać nowe atrybuty.
Dodajemy zatem dwa atrybuty typu „Text line” o identyfikatorach „meta_keywords” oraz „meta_description”. Dzięki temu dla obiektów naszej klasy w szablonie „full” renderujących nasze obiekty możemy wykorzystać wartości tych pól i przekazać je do zmiennej „persistent_variable”.
{set scope=global persistent_variable=hash( 'description', $node.data_map.meta_description.data_text, 'keywords', $node.data_map.meta_keywords.data_text, )}
Od tej pory dla wszystkich obiektów zmodyfikowanej klasy, meta descriptio oraz meta keywords będą takie, jakie wpiszemy podczas edycji obiektu.
Adresowanie serwisu (url friendly)
Tworzenie adresowania odzwierciedlającego strukturę naszego serwisu to obecnie standard, który pozwala na uzyskanie prostych i czytelnych adresów URL. eZ Publish zapewnia nam pełne wsparcie dla „przyjaznego adresowania” stron, co więcej daje nam również możliwości konfiguracji związanych z tym adresowaniem. Dzięki wbudowanym mechanizmom możemy niemalże dowolnie kreować nasze adresy URL.
Przykład:
Adres http://ez.no/eZPublish/Core-features jednoznacznie informuje użytkownika, że będzie miał do czynienia ze stroną opisującą główne funkcjonalności systemu eZ Publish, czego nie moglibyśmy powiedzieć o adresie http://ez.no/index.php?cat=23;b=34.
eZ Publish pozwala na konfigurację dwóch istotnych elementów związanych z budowaniem adresu URL, są to pola każdego z obiektów, które mają być używane w budowaniu adresów oraz schemat adresowania jaki ma zostać użyty.
Definicja pola, z którego zbudowany jest adres strony.
Każda klasa w eZ Publish pozwala na zdefiniowanie pola, z którego budowany jest adres URL, każdego obiektu tej klasy. Aby zdefiniować użycie własnego atrybutu, który posłuży do stworzenia adresu URL należy zdefiniować identyfikator tego atrybutu w polu „Wzór nazwy aliasu URL”.
W naszym przykładzie, dla klasy Wpisu Bloga zdefiniowano, że adres URL dla każdego obiektu tej klasy ma zostać zbudowany z pola o identyfikatorze „title”, czyli z tytułu wpisu. Dzięki takiemu ustawieniu, jeżeli stworzymy wpis o tytule „Adresowanie w eZ Publish”, uzyskamy adres strony w postaci http://adres.pl/Adresowanie-w-eZ-Publish
Definicja schematu budowania adresów
System eZ Publish pozwala również na zdefiniowania zakresu używanych znaków w adresach URL oraz elementu, który rozdziela frazy w naszym adresie. Domyślnym separatorem elementów adresu jest znak minus „-„ (tzw. dash). W chwili pisania artykułu jest to separator zalecany przez Google. Możliwa jest zmiana separatora na spację lub podkreślenie („space”, „underscore”).
System pozwala również na uzyskanie adresowania zawierającego wszelkie znaki dialektyczne dla danego języka (tzw. Unicode support), np. ąęśćłóżź… Jednak z uwagi na małą dostępność takiego adresowania zaleca się używanie adresowania zawierającego jedynie znaki dostępne w każdym języku.
Zmiana schematu adresowania może być dokonana na każdym etapie pracy z serwisem poprzez edycję zawartości pliku site.ini (jego overrid’a). Blok odpowiedzialny za adresowanie domyślnie ma postać:
[URLTranslator] Translation=enabled TranslatableSystemUrls=enabled WordSeparator=dash TransformationGroup=urlalias
Nawigacja witryny, mapy strony, bredcrump
Dobrze przemyślana nawigacja w serwisie internetowym może znacząco pomóc odwiedzającym znaleźć szukane treści. Może również pomóc wyszukiwarkom w „zrozumieniu”, jaką treść naszego serwisu uznajemy za ważną.
Tworzenie hierarchii, poprzez przechodzenie od treści ogólnych do bardziej szczegółowych jest najprostszym sposobem publikowania treści o naturalnej hierarchii. Sytuacje taką bardzo dobrze ilustruje później mapa serwisu, a poruszanie się po zbudowanej strukturze treści automatycznie odzwierciedla ścieżka zagnieżdżenia.
Optymalne wykorzystanie obrazków i linków
Stosowanie atrybutów opisujących zarówno obrazki jak i linki używane na naszych stronach może w znaczący sposób wpłynąć na poprawę jej indeksacji. Elementy te mają również bardzo duży wpływ na dostępność naszej strony, tzw. Accessibility. Optymalizacja wykorzystania obrazków i linków polega na wykorzystaniu znaczników opisujących je. Są to znaczniki „alt” dla obrazka oraz znacznik „title” dla linku.
Każdy z obrazków (ogólnie każda z grafik) powinien mieć zdefiniowany dla siebie atrybut „alt”. Atrybut „alt” pozwala na określenie alternatywnego tekstu pokazywanego zamiast obrazka, jeżeli z jakiegoś powodu nie można go wyświetlić (dotyczy również przeglądarek tekstowych).
eZ Publish zapewnia pełne wsparcie dla definiowania atrybutu „alt” dla każdej grafiki używanej w serwisie (w procesie redakcyjnym). Każdy redaktor na etapie dodawania nowego zdjęcia lub podczas edycji już istniejących zdjęć powinien wypełnić pole „Alternatywny tekst obrazka”. W moim przykładzie, dla zdjęcia przedstawiającego pola znaczników meta w definicji klasy dodałem opisujący je tekst alternatywny o brzmieniu „Definicja znaczników Meta w klasie contentowej”. Dzięki temu w kodzie naszej strony, tagi html opisujące zdjęcie zawierają nasze słowo kluczowe dotyczące zdjęcia, a przeglądarki tekstowe wyświetlają ten tekst.
Osadzanie w tekście hiperłączy (linków) do innych serwisów lub w obrębie bieżącego serwisu jest oczywiście funkcjonalnością wbudowaną w eZ Publish. Każdy z linków występujących w serwisie poprzez zastosowanie znacznika „title” może mieć własny tytuł, który w znaczący sposób poprawia dostępność serwisu, tzw. Accessibility. Atrybut tytułu powinien w sposób jasny i precyzyjny opisywać „cel” linku.
Opis linku nie jest widoczny w treści strony, pojawia się dopiero po najechaniu na niego myszką, a jego zastosowanie ułatwia internaucie rozpoznanie zawartości, do której prowadzi hiperłącze. Tytuł „czytany” jest również przez przeglądarki tekstowe.
Tagi nagłówka
Tagi nagłówka służą do przedstawiania użytkownikowi struktury treści w ramach jednej strony. Każda ze stron może (i powinna) mieć własną strukturę nagłówków. Obecnie w języku html / xhtml istnieje sześć poziomów / rozmiarów tagów nagłówka: od <h1> (najważniejszy) do <h6> (najmniej ważny). Każda ze stron w eZ Publish daje możliwość zarządzania ilością i wielkością nagłówków w ramach strony.
Aby korzystać z tagów nagłówka w treści strony niezbędne jest stosowanie pola typu XML, które w każdej instalacji eZ Publish zintegrowane jest z graficznym edytorem (Online Edytor).
Domyślna instalacja naszego systemu CMS rezerwuje najważniejszy nagłówek <h1> dla tytułu strony – ten element nie jest możliwy do zredagowania przez wbudowany edytor. Treść nagłówka H1 zmieniana jest na podstawie treści tytułu strony.
Redaktor pracujący z Online Edytorem ma możliwość korzystania zatem z nagłówków od <h2> do <h6>, jednak ich nazewnictwo w samym edytorze nie świadczy o tym. Redaktor pracujący z edytorem korzysta z nagłówków nazwanych „Nagłówek 1” do „Nagłówek 6” gdzie „Nagłówek 1” odpowiada wielkości nagłówka <h2>, a „Nagłówek 5” i „Nagłówek h6” odpowiada nagłówkowi <h6>. Zbędne jest zatem występowanie nagłówka o nazwie „Nagłówek 6”, jest on identycznym nagłówkiem co „Nagłówek h5” – obydwa reprezentują typ nagłówka <h6>.
Stosując nagłówki należy unikać stosowania ich tylko do stylizacji tekstu, a nie do przedstawienia struktury oraz zbyt częstego ich używania na jednej stronie.

