Mijn site is opgedeeld in een NL en EN gedeelte. Daarbij verschillen dus ook de meta-tags. De ene is in het engels en ander is in het nederlands.
Mijn vraag is, kan google meta-tags lezen als mijn meta-tags dynamisch zijn?

En een tweede vraag: hoe kan ik het beste mijn database opzetten. Gewoon elk meta-tag in elk kolom, zoiets als dit?
id | auteur | nl_keywords | en_keywords | nl_description | en_description |

of wie heeft een betere manier, overigens wil ik het met PHP/MySQL doen, geen XML of dergelijke.
Het hangt er van af wat je met dynamisch bedoelt. Als je bedoelt dat ze door PHP gegenereerd worden is het geen probleem. Als je ze met JavaScript in elkaar zou sleutelen, wel.

Die opzet zou ik anders doen. Als je per taal een tabel maakt met dezelfde veldnamen, hoef je maar 1 variabele aan te passen bovenin al je scripts. Zoals jij het nu hebt, moet je alle veldnamen in al je query's aan gaan passen.
Ik zou wel een andere tabelopzet maken, dan kun je later eenvoudig nog een taal toevoegen en kun je de keywords beter instellen.

Voorbeeldje met reeds 4 tabellen:
id
auteur

id
taal
iso_code

id
auteur_id
taal_id
keyword (enkelvoud!!!)

id
taal_id
description

Dit is een voorzetje en zal nog niet compleet zijn. Ik mis in elk geval het verband met een specifieke pagina. Jij zult hier ongetwijfeld een oplossing voor in petto hebben.

Ps. Gebruik wel de innoDB-engine van MySQL en stel de foreignkey's correct in. Doe je dat niet, dan loop je de kans dat de hele zooi in het 100 loopt.
Ok... ik bedoelde inderdaad dynamisch door PHP gegeneerd, dus de keyword uit database halen geeft geen problemen voor zoekmachines?
Nee, de zoekmachine ziet het resultaat, de html-pagina. Dat jij die met PHP dynamisch aanmaakt, maakt geen moer uit.

En wat ik riep over de tabel met de keywords, enkelvoud, betekent dus dat er in ieder record slechts 1 (één) keyword staat. Door de auteur_id's en taal_id's te combineren krijg je zo een resultset met alle keywords die bij deze auteur en taal horen.

Normalisatie, de basis van een goede database!
Ok, maar aanvankelijk dacht ik dat je pas iets uit database kan ophalen als je ook een taal hebt geselecteerd, maar schijnbaar denk ik anders.
Maar hoe weet bv een zoekmachine wanneer hij engelse of nederlandse gegevens moet opvragen? Of denk ik helemaal fout?
Dat klopt helemaal, data kan ook uit de database komen.

Maar, daar weet Google helemaal niets van af! Voor Google en zijn vriendjes bestaat het internet uit keiharde html-pagina's. Niets meer en niets minder.

Een zoekmachine ziet de verschillende links (dus ook de links naar de talen) en gaat deze 1 voor 1 bij langs. Wat jij kunt doen om de resultaten te verbeteren, is ook de language in de html-header op te geven.

Hier de eerste 2 regels uit mijn template:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="{$sLanguage}">

Zoals je ziet wordt daar ook een string Language opgegeven, de heeft bv. de waarde 'en' of 'nl'.

Nu weet Google dat het een engels- of nederlandstalige pagina betreft. Het lang-attribuut kun je overigens bij vrijwel alle html-tags gebruiken, zo kun je dus ook een nederlandstalige site hebben met bv. de url naar de engelstalige pagina's waar als taal engels staat ingesteld:

<a href="pagina.php?lang=en" title="English" lang="en">English</a>
Oh, dus google etc. gaat alle variabele langs en plaats deze net als een bezoeker die mijn site bezoekt een taal in een variabele en krijgt een juiste taal te zien. In dat geval hoef ik geen zorgen te maken :D
Bedankt!

Overigens heb ik alleen dit staan:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml">;

Dus geen: xml:lang="en" lang="{$sLanguage}"
Is dat erg? Want ik heb wel dit als meta-tags:
<meta name="language" content="\".LAN_TAAL"\" />
<meta http-equiv="content-language" content="\".LAN_TAAL"\" />
Of is dat dubbelop?
Nee de zoekmachine gaat niet je variabelen langs. Je moet een zoekmachine als een gebruiker zien. Deze komt op jou site en je PHP wordt uitgevoerd. vannuit jou result krijg je een true of false statement bijvoorbeeld:

<?php

// $language komt bijvoorbeeld van een functie die je locatie bepaald.

if($language == 'nl')
{
$site_lang = 'nl';
}
else
{
#site_lang = 'en';
}
?>

als $language false is(dus naar else) wordt de language automatisch op Engels gezet.

Reageren