Ramki a pozycjonowanie

Ramki są elementem języka HTML umożliwiającym podzielenie strony na niezależne części. Sprawdzają się one np. na wielostronicowych witrynach. Jeżeli webmaster zechce dodać nową pozycję do paska nawigacyjnego, wystarczy, że zmieni kod jednego dokumentu zawartego w ramce, a nie kilkunastu stron. Niestety takie rozwiązanie ma mnóstwo wad i jest już coraz rzadziej stosowane.

Dużą niedogodnością jest to, że roboty wielu wyszukiwarek nie są w stanie poprawnie przeczytać strony opartej na ramkach. Jeśli pajączek odwiedzi taką witrynę to zobaczy tylko stronę, na której jest kod ramek, ale ich zawartość będzie już dla niego niewidoczna. Można się o tym przekonać analizując źródło przykładowej witryny opartej na ramkach:

<html>
<head>
<title>Tytuł serwisu</title>
<meta name="description" content="opis serwisu" />
<meta name="keywords" content="słowa kluczowe" />
</head>
<frameset cols="25%,*%">
<frame scrolling="auto"  src="menu.html">
<frame scrolling="yes" src="tresc.html">
</frameset>
</html>

Robot indeksujący widzi tytuł i znaczniki Meta, a nie właściwą zawartość serwisu znajdującą się w plikach menu.html i tresc.html. Nawet, gdy wyszukiwarce uda się zindeksować dokument tresc.html, to będzie on w wynikach wyszukiwania widoczny jako jeden osobny element, bez zawartości innych ramek (np. bez menu nawigacyjnego). Problem ten można rozwiązać przy pomocy prostego skryptu JavaScript, który sprawdza, czy zostały załadowane wszystkie ramki niezbędne do prawidłowego wyświetlenia zawartości witryny, jeśli nie - otwiera je:

<html>
<head>
<title>Tytuł serwisu</title>
<meta name="description" content="opis serwisu" />
<meta name="keywords" content="słowa kluczowe" />
</head>

<script language="JavaScript">
if (top == self)
self.location.href = "framedpage.html";
</script>


<frameset cols="25%,*%">
<frame scrolling="auto"  src="menu.html">
<frame scrolling="yes" src="tresc.html">
</frameset>
</html>


Ramki nie są niezastąpione - istnieją lepsze alternatywne rozwiązania. W przypadku konieczności umieszczenia na każdej podstronie serwisu np. takiego samego panelu nawigacyjnego, do którego wraz z rozwojem witryny webmaster musi dodawać nowe opcje, można zastosować na wszystkich podstronach w miejscu menu kod PHP (aby zadziałał, serwer musi obsługiwać skrypty PHP, a plik, w którym został taki kod umieszczony powinien mieć rozszerzenie *.php):

<?php include "menu.php" ?>

Dzięki temu chcąc wstawić nowy element na pasku nawigacji, wystarczy wyedytować jeden plik menu.php zamiast przerabiania wszystkich podstron czy stosowania ramek, w przeciwieństwie do których rozwiązanie to jest o wiele bardziej przyjazne wyszukiwarkom.

Jeżeli użycie ramek jest konieczne i nie ma możliwości przeprojektowania serwisu, pomocny może się okazać atrybut NOFRAME. Pomiędzy znacznikami <noframe> i </noframe> umieszcza się alternatywny tekst dla przeglądarek nieinterpretujących ramek. Warto tu wstawić treść, która mogłaby być ważna dla wyszukiwarek indeksujących witrynę:

<html>
<head>
<title>Tytuł serwisu</title>
<meta name="description" content="opis serwisu" />
<meta name="keywords" content="słowa, kluczowe" />
</head>
<frameset cols="25%,*%">
<frame scrolling="auto"  src="menu.html">
<frame scrolling="yes" src="tresc.html">
</frameset>
<noframe>najważniejsza zawartość dokumentów znajdujących się w ramkach</noframe>
</html>

Podsumowując, jeśli chcemy stworzyć nowoczesną witrynę, przychylną zarówno dla użytkowników, jak i robotów wyszukiwarek, powinniśmy unikać stosowania ramek. Nie wolno zapominać, że w oparciu o nie funkcjonują aliasy typu prv.pl, sve.pl itp., co sprawia, że strony używające tego sposobu maskowania adresu nie są zbyt przyjazne wyszukiwarkom. Można jednak doszukać się przykładów witryn, które pomimo stosowania takiego rozwiązania, między innymi dzięki dużej ilości odsyłaczy doń prowadzących, zajmują czołowe miejsca w serwisach wyszukiwawczych.