SEO weblog » »
| « | » |
Automatisch meta-descriptions invullen
Door: monchito, zaterdag 17 oktober 2009, 20:01 | Reacties: 6
Dit is even een klein handigheidje. Vooral handig als je snel heel veel artikelen van een nieuwssectie, productfeed of weblog wil voorzien van een metadescription, waar dat eerder nog niet gedaan was.
Wat je doet is automatisch de eerste regel van je tekst invullen in het metadescription veld.
Dit is overigens een bewezen goede manier om meer verkeer uit Google te halen.
Waarom? Omdat zo voorkomt dat Google lelijke snippets toont als 'uw browser ondersteunt geen frames/javascript', de inhoud van je navigatiemenu of andere lelijke foute teksten.
Met andere woorden: een automatische meta-description is beter dan geen meta-description!
Hoe pak je dat aan?
Simpel eigenlijk: je pakt de inhoud van het artikel, kapt dat af op de eerste punt die je tegenkomt en zorgt ervoor dat lelijke codes (htmlentities en zo) geen herrie schoppen.
De code is als volgt:
/*
* get frst sentence of text
*/
function first_sentence($content) {
$content = html_entity_decode(strip_tags($content));
$pos = strpos($content, '.');
if($pos === false) {
return $content;
}
else {
return substr($content, 0, $pos+1);
}
}
Uitleg
Met de functies strpos() en substr() haal je de content uit de string $content ($content zou dan de tekst van je blogpost zijn) tot aan het eerste punt:
function first_sentence($content) {
$pos = strpos($content, '.');
return substr($content, 0, $pos+1);
}
Nu ben je eigenlijk al bijna klaar. Door de volgende code te gebruiken toon je al de eerste zin:
echo first_sentence($content);
Maar je wil natuurlijk voorkomen dat er lelijke codes tussen zitten en dat er toch een korte tekst getoond wordt als er onverhoopt geen punt aan het einde van een zin zit. Daar gebruik je strpos() voor:
$pos = strpos($content, '.');
if($pos === false) {
return $content;
}
else {
return substr($content, 0, $pos+1);
}
Tenslotte filter je htmlentities en dergelijke eruit:
html_entity_decode(strip_tags($content));
Plaats dit in je HTML template:
<meta name="description" content="<?= first_sentence($content);" />
En klaar is klara.
Suggesties in de comments zijn uiteraard welkom :)
Update: tekst afkorten
met word_wrap() achtige functies kun je eventueel de hoeveelheid karakters inkorten tot 150, bijvoorbeeld met de volgende code (gevonden op php.net, zelf nog niet getest):
// Substring without losing word meaning and
// tiny words (length 3 by default) are included on the result.
// "..." is added if result do not reach original string length
function _substr($str, $length, $minword = 3){
$sub = '';
$len = 0;
foreach (explode(' ', $str) as $word){
$part = (($sub != '') ? ' ' : '') . $word;
$sub .= $part;
$len += strlen($part);
if (strlen($word) > $minword && strlen($sub) >= $length){
break;
}
}
return $sub . (($len strlen($str)) ? '...' : '');
}
Reacties
N.B.: Blijf op de hoogte van MONLOG door je te subscriben op de RSS-feed (ook voor comments).
hey Mathieu, ja daar zat ik ook nog aan te denken en is een logische volgende stap. Wellicht dat ik het artikel nog update, maar dat is een eitje voor iedere php-programmeur.
in elk geval: daar kun je de functie substr() voor gebruiken: http://php.net/manual/en/function.substr.php
#2 | monchito | zondag 18 oktober 2009, 11:24
of word_wrap(): http://www.php.net/manual/en/function.wordwrap.php
#3 | monchito | zondag 18 oktober 2009, 11:29
"Dit is even een klein handigheidje."
Dat is de meta description die je zou krijgen bij deze post met dit script. Naar mijn mening niet de meest goede meta description.
Een op maat geschreven meta description is dan ook altijd beter. Maar zo een oplossing is natuurlijk beter dan geen meta description.
@Bartjan, juist :)
#5 | monchito | maandag 19 oktober 2009, 18:16
Daar kan ik overigens aan toevoegen dat content managers en journalisten die veelal geschoold zijn in 'schrijven voor het web' of professionele copywriting, hun stukken doorgaans beginnen met een ankeiler waarin de 5W's genoemd worden: wie, wat waar wanneer waarom en hoe. Als je dat dus consequent altijd gedaan hebt, dan heb je prima meta-descriptions! (ervan uitgaande dat je doelgroep net als zo'n 80% van de mensen zoekt met informationele queries).
#6 | monchito | maandag 19 oktober 2009, 18:41
Ook reageren?
Als je een website-adres intikt, wordt deze automatisch klikbaar gemaakt (Let er dan op dat na het adres een spatie overblijft!).
Ah, fijn artikel. Geeft me goed inzicht in handige scripts. Het enige wat ik nog mis is afkorting op 160 karakters ;-)
#1 | Webshoptimizer - Mathieu | zondag 18 oktober 2009, 01:18