Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dynamiczne generowanie meta tagów, Prośba o ocenienie kodu
koko887
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 23.09.2009

Ostrzeżenie: (0%)
-----


Witam, tworzę właśnie stronkę i używam tam includowania. Problem w tym, że na każdej podstronie będą takie same meta tagi. Postanowiłem pobawić się troszkę php i jako, że w php nie jestem zbyt biegły to stworzyłem (przerobiłem z kilku innych) skrypcik dynamicznego generowania meta tagów. Oto on:


Tak wygląda nagłówek pliku index.php:
  1. <?php
  2. $add_site = true;
  3. include "includes/function.php";
  4. ?>
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  6. <head>
  7. <title><?php echo tytuly($_GET['url']); ?></title>
  8. <meta name="keywords" content="<?php echo slowa_kluczowe($_GET['url']); ?>">
  9. <meta name="description" content="<?php echo opisy($_GET['url']); ?>">
  10. </head>



A to kod pliku function.php:
  1. <?php
  2.  
  3. /*
  4.   tytuły na stronie
  5.   **********************
  6.   */
  7.  
  8. if(!$add_site) exit;
  9.  
  10. function tytuly($url) {
  11. $tytuly = array(
  12.  
  13.  
  14. 1=>'tytuł podstrony pierwszej',
  15. 2=>'tytuł podstrony drugiej',
  16.  
  17. foreach($tytuly as $key => $val)
  18. if($url == $key) return $val;
  19. }
  20.  
  21. /*
  22.   słowa kluczowe na stronie
  23.   **********************************
  24.   */
  25.  
  26. function slowa_kluczowe($url) {
  27. $slowa_kluczowe = array(
  28.  
  29.  
  30. 1=>'słowa kluczowe na pierwszej podstronie',
  31. 2=>'słowa kluczowe na podstronie drugiej',
  32.  
  33. foreach($slowa_kluczowe as $key => $val)
  34. if($url == $key) return $val;
  35. }
  36.  
  37.  
  38. /*
  39.   opisy na stronie
  40.   *************************************
  41.   */
  42.  
  43. function opisy($url) {
  44. $opisy = array(
  45.  
  46.  
  47. 1=>'opis pierwszej podstrony',
  48. 2=>'opis drugiej podstrony',
  49.  
  50. foreach($opisy as $key => $val)
  51. if($url == $key) return $val;
  52. }
  53.  
  54. ?>



Linki na mojej stronie są w takiej postaci:
www.mojastrona.pl/index.php?url=1 => idzie do podstrony pierwszej
www.mojastrona.pl/index.php?url=2 => idzie do podstrony drugiej itd.

Całość działa bez zarzutu, ale jak już wspomniałem przygodę z php dopiero zaczynam i chciałbym, aby ktoś kto się na tym zna wypowiedział się czy taki kod ma sens i czy może tak zostać, czy jest może też jakaś inna dużo prostsza metoda na osiągnięcie tego samego efektu. Ponadto chciałbym się dowiedzieć czy roboty wyszukiwarek będą dobrze indexować takie meta tagi (tzn. czy robot zobaczy np. tytuł strony czy tylko: "<title><?php echo tytuly($_GET['url']); ?></title>") Proszę o opinie. Dodam też, że wzorowałem się na tym pomyśle: KLIK

Ten post edytował koko887 26.09.2009, 21:08:26
Go to the top of the page
+Quote Post
Pilsener
post
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


1. Złe jest dzielenie strony na części - strona www powinna być traktowana jako całość i dopiero po jej przygotowaniu( i sprawdzeniu ew. błędów) powinna być wysłana do przeglądarki, wysyłanie do przeglądarki strony po kawałku to utrudnianie sobie życia.

2. Złe jest mieszanie kodu HTML z PHP - powinieneś się skupić na wygenerowaniu elementów strony, czyli meta + treść, a następnie wstawieniu ich w odpowiedni szablon - skrypt/dodatek/moduł generujący meta powinien zwracać tablicę z tymi meta i tyle, kod HTML nie powinien programisty PHP w ogóle obchodzić.

3. Złe są adresy stron - jak myślisz o wsparciu dla SEO powinieneś do adresów dodawać słowa kluczowe, a identyfikator powinien być na samym końcu, czyli np. index.php?url=strona,o,grach;23.html - przy zastosowaniu nice url moża wywalić index.php?url=, tak jest prosto i funkcjonalnie

4. Zły jest sposób organizacji tych danych, jak będziesz miał kilka tysięcy stron to też będziesz ładował do zmiennej je wszystkie i trzymał w pliku php? Meta-dane o stronie, kategorii, podkategorii itp. powinny być trzymane w bazie i pobierane tylko te, które są aktualnie wyświetlane, najlepiej jeśli meta są przechowywane od razu z konkretną treścią

5. Najlepiej, jakbyś napisał jakiś silnik do generowania meta, który pozwala zarówno zdefiniować meta dla każdej strony, jak i je wygenerować na podstawie treści czy też odziedziczyć z kategorii nadrzędnej.

Sposób jaki tu prezentujesz może funkcjonować tylko jako prowizoryczny i raczej nikt go nie pochwali (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
bim2
post
Post #3





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


A co to ma być za konstrukcja?
  1. foreach($slowa_kluczowe as $key => $val)
  2. if($url == $key) return $val;


Przecież to działa jak
return $slowa_kluczowa[$url];

Nie widzę w tym żadnej dynamiki. Ręcznie musisz ustawiać sobie te tagi. Gdyby jakoś ładnie podliczało słowa na stronie eliminując te "powszechne" albo brało słowa konkretne z tytułu strony to byłoby dynamiczne. Tak to zwykłe wpisywanie danych.
Go to the top of the page
+Quote Post
mruz
post
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 19.12.2009

Ostrzeżenie: (0%)
-----


podepnę się.
Mam problem z generowaniem meta tagów:
Kod
<?php session_start(); ob_start(); ?>
<html>
<head>
<!--OPIS-->
<title>domena.pl - <!--TYTUL--></title>
</head>
<body>
...
<?php
$title = ((defined('TITLE')) ? ''.TITLE : '');
$opis = ((defined('OPIS')) ? ''.OPIS : '');
$html = ob_get_clean();
$html2 = ob_get_clean();
echo preg_replace('#<!--TYTUL-->#', $title, $html);
echo preg_replace('#<!--OPIS-->#', $opis, $html2);
ob_end_flush()
?>


Wcześniej miałem tylko tytuł i generowało dobrze:
Kod
<?php define('TITLE', 'tytuly strony'); ?>

próbowałem zrobić podobnie z
Kod
<?php //define('OPIS', '<meta name="description" content="opis strony" />'); ?>

coś z tym ob_get_clean() nie mogę dać rady. Pomoże ktoś? (IMG:style_emoticons/default/wstydnis.gif)

edit:
wymyśliłem coś takiego:
Kod
echo preg_replace('#<!--TYTUL-->#', $title, preg_replace('#<!--OPIS-->#', $opis, $html));

niby meta description i title wyświetla dobrze, ale nie jestem przekonany do tego...

Ten post edytował mruz 30.12.2009, 17:24:29
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 10:21