Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JQuery]+[AJAX]+[PHP]+[SEO] - jak to ugryźć?
Forum PHP.pl > Forum > Przedszkole
organista18
Witam wszystkich, w tematyce SEO jestem zupełnie zielony i chciałem aby moja stronka zaczęła być znacząca dla wyszukiwarek.

Schemat mojej strony:
- jest sobie plik index.html w którym są trzy pozycje menu, pod każdą pozycją menu jest link w postaci <a href="#" id="o_mnie">. Do całości pliku index.html jest podłączone jQuery, które jest odpowiedzialne za ładowanie podstrony z odpowiednim artykułem (w tym wypadku read_article.php? z parametrem który jest nazwą artykułu) do diva "tekst", a robi to w taki sposób:

  1. <script type="text/javascript">
  2.  
  3. $(document).ready(function() {
  4. $(".tekst").hide();
  5. $(".tekst").load("inc_start.php", function()
  6. {
  7. $(".loader").fadeOut("slow");
  8. $(".tekst").fadeIn("slow");
  9. $(".tekst").slideDown("slow");
  10. });
  11.  
  12. $("#o_mnie").click(function()
  13. {
  14. $(".tekst").fadeOut("slow");
  15. $(".loader").fadeIn("slow");
  16. $(".tekst").load("read_article.php?cat=o_mnie", function()
  17. {
  18. $(".loader").fadeOut("slow");
  19. $(".tekst").fadeIn("slow");
  20. });
  21.  
  22. });
  23.  
  24. $("#projekty").click(function()
  25. {
  26. $(".tekst").fadeOut("slow");
  27. $(".loader").fadeIn("slow");
  28. $(".tekst").load("read_article.php?cat=projekty", function()
  29. {
  30. $(".loader").fadeOut("slow");
  31. $(".tekst").fadeIn("slow");
  32. });
  33.  
  34. });
  35. });
  36. </script>


- jest sobie plik read_article.php któremu w parametrze cat przekazuję nazwę artykułu, który ma wyciągnąć z bazy danych, ten plik jest ładowany do diva "start" w pliku index.html.
dodam jeszcze że całość pliku php wygląda tak:

  1.  
  2. <?php
  3.  
  4. include("_safe/inc_config.php");
  5.  
  6. $d = $_GET['cat'];
  7. $query = mysql_query("SELECT * FROM arts WHERE name = ".$d."");
  8.  
  9. while($rekord = mysql_fetch_array($query))
  10.  
  11. {
  12.  
  13. $tytul = $rekord[1];
  14.  
  15. $tresc = $rekord[2];
  16.  
  17. $kategoria = $rekord[4];
  18.  
  19. $data = $rekord[5];
  20.  
  21. $autor = $rekord[3];
  22.  
  23. }
  24.  
  25. echo '<h2 class="topTitle">'.$tytul.'</h2>';
  26.  
  27. echo '<div class="topContent"><p>'.$tresc.'</p></div>';
  28.  
  29. ?>


Teraz stronka składa się tylko z dwóch plików (nie licząc biblioteki jQuery). Moje pytanie jest następujące: jak w to wszystko wpleść SEO, czy takie rozwiązanie jest zgodne z SEO i przyjazne dla przeglądarek? Jeżeli nie, to jak zrobić aby było przyjazne? Zależy mi na dynamice strony - dwa pliki, a nie na kilkudziesięciu, każdy z inną nazwą, przyjazną dla przeglądarki. Mam nadzieję że koledzy i koleżanki rozumieją o co mi chodzi.

Przeszukałem pod tym kątem google, ale milczy, znajduję tylko 10 zasad dobrego SEO, ale jak już pisałem - to dla stron statycznych, a co z dynamicznymi jak w moim przypadku powyżej?
Zapraszam do dyskusji.
tehaha
a jaka to różnica, czy strona jest statyczna czy dynamiczna? skrypt php generuje taki sam kod html jak by był ręcznie napisany, zasady SEO są te same, a tak na marginesie jak wkładasz do zapytania zmienną pochodzącą z url to zawsze używaj funkcji mysql_real_escape_string()
erix
Cytat
jak w to wszystko wpleść SEO, czy takie rozwiązanie jest zgodne z SEO

Jeśli z wyłączonym JS nie jesteś w stanie się dostać do tej treści = niezgodne z SEO.
organista18
Cytat(erix @ 7.05.2010, 19:16:45 ) *
Jeśli z wyłączonym JS nie jesteś w stanie się dostać do tej treści = niezgodne z SEO.

To strony napisane przy pomocy AJAX-a są z góry przekreślone przez SEO? czy może wystarczy mieć sam plik read_article.php i robot poprzez dopasowywanie sobie odpowiednich parametrów do tego read_article.php (np read_article.php?cat=omnie) sam wyciągnie dane i skonstruuje link?
tehaha
Strona nie powinna opierać się na AJAX'ie, AJAX to taki dodatek, który ma zwiększać usability, i brak obsługi javascript nie powinien paraliżować strony, najlepiej jest zrobić tak, że najpierw robisz sobie stronę normalnie w pełni działającą w php a na końcu dodajesz AJAXA tam gdzie tylko zechcesz

//jak ty to sobie wyobrażasz, że robot będzie sobie coś dopasowywał? bo nie zrozumiałem tej kwestii, robot nie widzi kodu php, tylko wygenerowany kod html
organista18
No tak sobie wyobrażałem winksmiley.jpg.

Kiepsko to widzę, chciałbym, żeby podstrony ładowały się bez przeładowywania całości, a tu jednak widzę lipa.

A można zrobić coś takiego jak mapę strony w osobnym pliku i wtedy odnośniki w tej mapce odnośniki do strony głównej z gotowym zapytaniem?
tehaha
możesz dowolnie wstawiać AJAXA nic nie stoi na przeszkodzie, tylko najpierw zrób tak żeby bez AJAXA strona też działała
erix
Cytat
To strony napisane przy pomocy AJAX-a są z góry przekreślone przez SEO? czy może wystarczy mieć sam plik read_article.php i robot poprzez dopasowywanie sobie odpowiednich parametrów do tego read_article.php (np read_article.php?cat=omnie) sam wyciągnie dane i skonstruuje lin

Piszesz najpierw zwykłą stronę, która działa bez JS, potem dopalasz to tylko przez AJAX. I tak zawsze się pisało, aby było zgodne z SEO.

Cytat
A można zrobić coś takiego jak mapę strony w osobnym pliku i wtedy odnośniki w tej mapce odnośniki do strony głównej z gotowym zapytaniem?

No tak, ale jak sobie wyobrażasz później prezentację tego w wynikach wyszukiwania? W jaki sposób ktoś dotrze do konkretnej podstrony?

Wpisz sobie w przeglądarce link z mojej stopki bez subdomeny, kiedyś pisałem coś takiego, to będziesz miał zasadę działania.
organista18
Rozumiem. To teraz inaczej. Wywalam ajaxa, zostaje tylko plik read_article.php
Jak już wspomniałem będzie wyświetlał artykuły wg zadanego zapytania, mam rozumieć że google nie zaindeksuje sobie tego pliku w takich postaciach: read_article.php?id=1, read_article.php?id=2, itp ?
tehaha
nie takie strony nie są indeksowane, musisz stworzyć przyjazne linki , żeby np. zamiast read_article.php?id=1 było arytkul,1.html, poczytaj o mod_rewrite i "przyjazne linki"/ "friendly url"

Ale to nie działa tak, że robot same sobie próbuje jakieś kombinacje linków: robot wchodzi na stronę index , i dalej podąża linkami jeżeli masz na stronie index linki do artykułów np. artykul,1.html, artykul,2.html tp robot wejdzie na te linki i zindeksuje te podstrony
organista18
Erix, dokładnie o takie coś mi chodzi. Widziałem że masz link właśnie w taki sposób: <a href="?newsID=3">... i pojawia Ci się źródło w miejscu div id="content", a na mojej stronce tam jest poprostu pusto, a treść w przeglądarce widać...

U mnie wygląda to tak: http://www.omt-reklama.pl/ efekt jest taki jak u Ciebie, ale chciałbym, żeby działało to z SEO.
tehaha
ten ajax możesz sobie zostawić ale zrób tak, że jak nie ma javascript to strona się przeładuje i normalnie wyświetli treść strony, bo teraz po wyłączeniu javascript strona nie działa
organista18
A możesz mi powiedzieć w jaki sposób to zrobić? Bo teraz mam linki w stylu: <a href="#" id="costam"></a> a jak w piszę adres w miejsce "#", to przestanie mi dzialać jQuery...
tehaha
nie wiem dokładnie jak to się robi w jquery musiałbym pokombinować, ale w javascript robiło się tak, żeby funkcja zwracała false, wtedy link nie przeładowywał strony:
  1. <script>
  2. function load_content()
  3. {
  4. //function
  5. return false;
  6. }
  7. </script>
  8. <a href="strona.html" title="" onclick="java script: return load_content()">strona</a>


więc musisz zrobić coś analogicznego, może wystarczy samo dopisanie return false; w każdej części po załadowaniu treści. Ewentualnie możesz też po załadowaniu strony podmienić atrybut href dla tych linków z menu:

  1. $("#onas").attr('href', '#');

wtedy bez javascript zostaną zwykłe linki
erix
Cytat
a jak w piszę adres w miejsce "#", to przestanie mi dzialać jQuery...

Cytat
więc musisz zrobić coś analogicznego, może wystarczy samo dopisanie return false; w każdej części po załadowaniu treści. Ewentualnie możesz też po załadowaniu strony podmienić atrybut href dla tych linków z menu:

Jak już klepiecie w jQuery, to korzystajcie z mechanizmów, które udostępnia. onclick i jakiekolwiek zdarzenia podpinane liniowe są passe.

  1. <a href="porn.html" id="asd">google</a> <!-- tak, wredny jestem ;d -->

i kod dla jQ:
[JAVASCRIPT] pobierz, plaintext
  1. $(function(){
  2. $('#asd').click(function(e){
  3. e.preventDefault();
  4.  
  5. // ajax load
  6. });
  7. });
[JAVASCRIPT] pobierz, plaintext


Cytat
mam rozumieć że google nie zaindeksuje sobie tego pliku w takich postaciach: read_article.php?id=1, read_article.php?id=2, itp ?

Cytat
nie takie strony nie są indeksowane, musisz stworzyć przyjazne linki , żeby np. zamiast read_article.php?id=1 było arytkul,1.html, poczytaj o mod_rewrite i "przyjazne linki"/ "friendly url"

Jak to mawiają, BULLSHIT: http://googlewebmastercentral.blogspot.com...tatic-urls.html

Generalnie, aby stronę wypasić musisz podejść do tego w ten sposób: zrób najpierw wersję taką, jakbyś klikał normalne linki, bez AJAX, czy nawet JS. Wtedy strona będzie indeksowalna. Potem stwórz sobie jakiś front controller (czy cokolwiek w tym stylu), co zwróci strone w żądaniu pozbawioną szkieletu/szablonu. Czyli np. dodajesz jakiś parametr do URL albo sprawdzasz user-agent w żądaniu.

No i podpinasz się pod linki w podobny sposób, jaki podałem. Tylko że korzystając z identyfikatorów będzie to nieco mozolne i mało elastyczne, ale selektory dostępne w jQuery chyba sobie sam znajdziesz. winksmiley.jpg
organista18
Dziękuję za odpowiedzi winksmiley.jpg Problem rozwiązany.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.