Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne] Robot Google, a zmiana meta tagu przez jQuery
Forum PHP.pl > Forum > Przedszkole
unnamedly
Witam, mam pytanie. Otóż mam sobie podstronę, gdzie po załadowaniu strony, przez jQuery zmieniam opis strony (meta description tag). Jak to się ma teraz do robota Google? Czy odczytuje on meta tagi w czasie ładowania strony? Czy może nie obsługuje JavaScript`u potrzebnego do działania w/w skryptu? A może jednak poprawnie odczyta zmieniony meta tag? Z góry dzięki za odpowiedź smile.gif
ber32
Witam
pokaż kod
unnamedly
articles.php:

[JAVASCRIPT] pobierz, plaintext
  1. var description = "Bla bla bla";
  2. $(document).ready(function() {$('meta[name=description]').attr('content', description);});</script>
[JAVASCRIPT] pobierz, plaintext
ber32
Nie powinno być z tym problemów , z tego co wiem to roboty indeksujące odwiedzają stronę i czytają jej zawartość co jakiś czas. Chyba że zabronimy takich wizyt. Zapis wydaje się prawidłowy w Php stosuje się podobnych technik przez zmienne.
markonix
@up Twoje drugie zdanie nie ma sensu - to, że meta dane są uzupełniane za pomocą zmiennych w PHP, a nie bezpośrednio w kodzie HTML nie ma żadnego znaczenia - kod wynikowy jest taki sam.

Nie interesuje się SEO więc na pytanie nie odpowiem ale poszukałbym (aktualnych) artykułów pod frazami typu "google and dynamic content" albo "google and javascript meta".
sabat24
Najprościej chyba będzie to sprawdzić, używając narzędzi dla webmasterów i zobaczyć, czy poprawnie rozpozna Ci JS.
ber32
markonix twoja wypowiedź potwierdziła to co napisałem.

"unnamedly" zastosował podobną technikę z tym że w jquery wynik w html będzie taki sam jak w php. Lkingsmiley.png
markonix
Cytat(ber32 @ 24.02.2013, 18:57:31 ) *
markonix twoja wypowiedź potwierdziła to co napisałem.

"unnamedly" zastosował podobną technikę z tym że w jquery wynik w html będzie taki sam jak w php. Lkingsmiley.png

Wynik nie będzie taki sam - bo rozwiązanie PHP jest uniwersalne i powinno być wykorzystywane w pierwszej kolejności.

Podmiana przez JS nie zadziała w wielu przypadkach i powinna być stosowana tylko w specyficznych przypadkach.
ber32
np. w jakich
markonix
Np. na moim komputerze.
ber32
bot google to nie twój komputer
co do php to trochę odbiegłeś od pytania bo w nim niema nic o php

ciekawe gdzie jest sam zainteresowany oneeyedsmiley02.png
markonix
Ja mówię o użytkowniku końcowym - a tym chyba nie jest tylko bot.
unnamedly
Dobra, inna SYTUACJA. Otóż mam sobie plik search.php, a w nim na początku:

  1. echo "<script type='text/javascript'>$(document).ready(function() { $('meta[name=robots]').attr('content', 'noindex, nofollow'); });</script>";


Domyślnie strona posiada meta o nazwie robots, atrybucie content i jego wartości index, follow.
Teraz chcę przez JS (jQuery) zmienić ten atrybut na noindex, nofollow (patrz: powyższy kod), tak aby roboty nie odwiedzały strony.

Na dole wspomnianego pliku umieściłem:

  1. if (strpos($_SERVER['HTTP_USER_AGENT'], 'Googlebot') !== false)
  2. file_put_contents("bots.txt", "Googlebot | Wyszukiwanie ciągu: {$_GET['s']} | ".date("d.m.Y\,\ H:i")); // $_GET['s'], to wyszukiwany ciąg znaków w okienku wyszukiwania


no i w logach bots.txt, pokazało mi: Googlebot | Wyszukiwanie ciągu: | 26.02.2013, 23:06.



Czyli tak jakby robot przebrnął obok zmienionym przez jQuery atrybucie noindex, nofollow i zaindeksował sobie stronę i to w dodatku stronę bez sensu, bo nic nie wyszukał.

Whatafak?
markonix
Nie słyszałem aby bot Google korzystał z szukajek..
Przecież chyba nie wejdzie na stronę i nie będzie wpisywał po kolei wszystkich możliwych wyrazów..

Po prostu potraktował formularz jak link - kliknął szukaj i na tym koniec.
Tutaj błąd - czemu można pozostawić pole pustym - powinna być walidacja i required.

Cytat
Domyślnie [..] wartości noindex, nofollow.
[..] chcę [..] na noindex, nofollow

dry.gif
unnamedly
Dzięki, co do literówki, to poprawione biggrin.gif
markonix
Nadal nie rozumiem czemu robisz to JSem zamiast po prostu zmienić wartość tego atrybutu?
unnamedly
To jest skomplikowane. Od początku robiłem stronę, że w obecnej formie nie mogę dać headera do każdej podstrony osobno. Zrobiłem header.php, gdzie jest head dołączany do każdej podstrony, które są zaimplementowane w content.php, a ta w index.php ze stopką itp biggrin.gif
markonix
  1. $meta_description = 'noindex, nofollow';
  2. include('./header.php');


Co w header trzeba zmienić to już się chyba domyślisz wink.gif
unnamedly
OK, tyle że header include`uję przed contentem, czyli teoretycznie zmienna $meta_description musiałaby działać wstecz. Da się to zrobić?
markonix
Najpierw logika aplikacji, potem widok (HTML, headery, content).
unnamedly
Sorry, że trochę odkopię, ale to nie jest takie łatwe. U mnie to wygląda tak:

przykładowy plik (podstrona) article.php:

  1. <?php
  2. require_once("db/connect.php"); // łączenie z bazą
  3. require_once("config/globals.php"); // globalne zmienne
  4. require_once("config/functions.php"); // funkcje
  5. ?>
  6. <!DOCTYPE html>
  7. <html lang="pl">
  8. <?php require_once("header.php"); ?> // nagłówek (<head>title, meta-tagi, skrypty itp)
  9. <?php require_once("body.php"); ?> // część między <html> , a </html>
  10. </html>


body.php:

  1. <body>
  2. <div class="belt">
  3. // BLA BLA BLA
  4. </div>
  5. <div class="content">
  6. <?php require_once("content.php"); ?>
  7. <?php require_once("footer.php"); ?>
  8. </div>
  9. </body>


W content.php mam całą część logiczną strony (+ treść widziana przez użytkownika wydzielana przez echo "";). Tam sprawdzam na jakiej podstronie jestem. Załóżmy, że to jest article.php. Wyświetla mi się artykuł o id=2. Jako słowa kluczowe strony (meta tag keywords) chcę mieć tagi artykułu o id=2. I tego tyczy się wątek. Jeśli nie ma zmiennych PHP działających "wstecz", to łatwiej mi by było zrobić to przez JS (pobrać tagi i wrzucić to jako słowa kluczowe).


Więc: jak zrobić zmienne działające "wstecz", albo jak przerobić moje ułożenie plików by dało się to zrobić bez JS?
markonix
To sprawdzaj wyżej, jeśli już trzymiesz kruczowo mieszanki HTML + PHP.
unnamedly
A jak to "na żywym przykładzie" miałoby wyglądać? Coś nie mogę ułożyć sobie tego w głowie. Jakbym include`ował body.php przed header.php, to head byłby na dole dokumentu (po </body>), a to jak wiadomo jest niepożądane.
markonix
Nie chodzi o kolejność includów.

Po prostu cały PHP wykonuj u góry, a includy w normalnej kolejności.
W nich powinien być tylko kod wyświetlający (widok), nie sterujący (kontroler).
unnamedly
Czyli po prostu zamiast echo użyć zmiennej (załóżmy $a = "tekst1"), a później tylko dodawać tekst ($a .= "tekst2")? Ale czy taki załóżmy 200-linijkowy kod html + teksty w jednej zmiennej jest optymalny?
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.