dynamische meta tags

  • Onderwerp starter Onderwerp starter wake
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

wake

Gebruiker
Lid geworden
21 aug 2007
Berichten
195
hallo,

ik vroeg me af of het mogelijk is om ergens midden in mijn php script, dus niet binnen de <head> tags dynamisch de metatags van desbetreffende pagina te geven.

eigenlijk moeten ze client side bovenaan komen staan..
 
dat de metatag discription word geschreven met de inhoud van mijn pagina.. die uit een database komt.

waardoor ik bij google beter geindexeert en gevonden word..
 
Dan moet je ze wel gewoon in de head zetten, maar het is wel gewoon mogelijk. Je kunt de tekst gewoon in een tabel opslaan, ophalen in je head en echoën in de meta-tag.
 
mijn probleem heb ik nog niet op kunnen lossen.. het probleem is alsvolgt..

ik heb index.php, daarin staat bovenaan de title en de metatags..

ik include home.php (midden in index.php)

de include bepaalt wat er in de metatags en title moeten komen. hoe krijg ik die variables dan nog bovenin de index.php?
 
Je kan als je de meta tags al ge-echo'd hebt ze niet meer aanpassen met PHP, daar heb je js voor nodig. Je kan er best voor proberen zorgen dat je al over de info beschikt die in die meta moet komen als je deze echo'd.

Hoe ziet de code eruit die de inhoud van je pagina's include?
 
zoiets..:


index.php:
PHP:
<?php
echo '<html><head>';
echo '<title>' . $title . '</title>';
echo '<meta name="description" content="' . $description . '">';
echo '<meta name="keywords" content="' . $keywords . '">';

echo '</head><body>';




//my tables and menu....

include('artists.php?id=5');


echo '</body></html>'

?>

artists.php:
PHP:
<?php



$art_id = addslashes($_GET['id']);

$qry = mysql_query("SELECT * FROM tbl_artists WHERE art_id='$art_id'");

while ($row = mysql_fetch_assoc($qry)) {

$title = $row['art_name'];
$keywords = $row['art_name'] . ', ' . $row['art_country'] . ', ' . $row['art_genre'];
$description = $row['art_description];

}

echo 'content text blabla';
?>


ik dacht zelf iets van het moment dat ik de meta-tags weg moet schrijven een functie aanroepen.. en die functie plaats ik dan in mn include en dan zet ik daar de title in.. maar php ziet geen functies uit zn includes:S


.
 
Laatst bewerkt:
Dan kan je hem beter zo structureren lijkt me :)

Code:
<?php

$art_id = addslashes($_GET['id']);

$qry = mysql_query("SELECT * FROM tbl_artists WHERE art_id='$art_id'");

while ($row = mysql_fetch_assoc($qry)) {

$title = $row['art_name'];
$keywords = $row['art_name'] . ', ' . $row['art_country'] . ', ' . $row['art_genre'];
$description = $row['art_description];

} 

echo '<html><head>';
echo '<title>' . $title . '</title>';
echo '<meta name="description" content="' . $description . '">';
echo '<meta name="keywords" content="' . $keywords . '">';

echo '</head><body>';

echo 'content text blabla'; 

echo '</body></html>'

?>

Verder nog een paar opmerkingen:
include('artists.php?id=5'); > bij include moet je nooit url parameters meegeven, aangezien ze gewoon beschikbaar blijven. Dus als je naar index.php?id=5 gaat, werkt het ook perfect. Als je een standaard wil instellen voor index.php ken je iets in deze aard doen:

Code:
$art_id = isset($_GET['id'])) ? addslashes($_GET['id']) : 1;

Dan word $art_id 1 als er geen id in de url staat ;)

Je kan in een php file ook gewoon html zetten, dus het heeft geen zin om de hele head the echo'en. Dit lijkt me handiger:

Code:
<?php
// code
?>

<html><head>
<title><?=$title?></title>
<meta name="description" content="<?=$description?>">
<meta name="keywords" content="<?=$keywords?>">

<?php
// code
?>

Hoop dat je verder kan :)
 
mjah die vragen en opmerkingen snap ik.. ik had maar even snel een voorbeeld getypt zegmaar om te manier te laten zien die ik doe..

maar jou oplossing helpt niet.. want ik heb op alle pagina's verschilldende queries en andere manieren van opbouw description en title en keywords..

als jij weet hoe je een functie uit een include kunt laten lezen als die include pas na de functie geschreven word.. dan krijg ik misschien voor elkaar wat ik wil... maaar anders weet ik het nog ffe niet:S

.
 
Laatst bewerkt:
Ik neem aan dat de inhoud in dezelfde tabel in je db staat, dus dan zijn alle records gelijk, en kan je aan wat je nodig hebvt met dezelfde query. Als je dan eerst die query uitveord, dan je head echo'd, en dan je pagina include, kan je in je include file nog steeds bepalen hoe je de info die je dan al hebt wil weergeven :)
 
Ik neem aan dat de inhoud in dezelfde tabel in je db staat, dus dan zijn alle records gelijk, en kan je aan wat je nodig hebvt met dezelfde query. Als je dan eerst die query uitveord, dan je head echo'd, en dan je pagina include, kan je in je include file nog steeds bepalen hoe je de info die je dan al hebt wil weergeven :)

dan moet ik in mn index.php voor alle meer dan 20 verschillende paginas opgeven hoe hij de tags en de titel weg moet schrijven:S niet bepaald fijn met programmeren..

ik ga toch verder uit zoeken hoe ik het kan fixen.
 
Nee joh, dan moet je het enkel in je index.php doen :)
Het enige wat je 20x moet doen is de inhoud van je pagina (die uit je db komt) laten schrijven, wat logisch is aangezien je dat elke x anders wou.

De meta tags en titel moeten toch elke x uit dezelfde tabel komen ofniet?
 
bijvoorbeeld,, waar mn metatages enzo moeten komen include ik dezelfde pagina als in het midden. echter die include zet ik iets van include=1.

en dan zet ik op de pagina's die ge-include worden:



if (isset(addslashes($_GET['include']))){

echo '<title>' . $title . '</title>';
echo '<meta name="description" content="' . $description. '">';
echo '<meta name="keywords" content="' . $keywords . '">';

}
else {
content blalbalbalbla }


maar het kan vast en zeker makkelijker..:P

.
 
Als je eerst in je index.php die query uitveord, kan je daarna toch gewoon de meta tags en titel zetten, dat is toch steeds hetzelfde van structuur?! Die querie in je include zetten maakt het enkel ingewikkelder.

En zoals ik eerder zij, je kan bij files die je include geen url parameters meegeven hoor.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan