Meta tag newline

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Guido  -

Guido -

12/09/2020 11:05:37
Quote Anchor link
Hallo,

In mijn head-sectie staat een meta beschrijving:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo '<meta name="description" content="Mijn meta beschrijving" />'."\n";


Ik heb een newline toegevoegd zodat de volgende string netjes op een nieuwe regel geplaatst wordt.

Kom dit echter niet vaak tegen, dus ik vraag me af of dit gangbaar is of juist niet?

Guido
 
PHP hulp

PHP hulp

26/10/2020 20:32:41
 
- Ariën -
Beheerder

- Ariën -

12/09/2020 12:22:08
Quote Anchor link
Waarom zou je een echo per regel gebruiken?
 
Adoptive Solution

Adoptive Solution

12/09/2020 12:34:57
Quote Anchor link
Hier wat uitleg door Google.

"Effectieve titels en fragmenten samenstellen voor zoekresultaten"

https://support.google.com/webmasters/answer/35624?hl=nl
 
Thomas van den Heuvel

Thomas van den Heuvel

12/09/2020 12:46:30
Quote Anchor link
Maar waarom zou je een statische plak HTML echo'en?

En als de description-content het dynamische deel is, echo dan dat deel? Zo houd je ook beter het verschil tussen statisch en dynamisch in stand. Hoef je ook geen escape-sequences toe te voegen voor een simpele regelovergang.
 
Ozzie PHP

Ozzie PHP

13/09/2020 00:31:25
Quote Anchor link
Wat Thomas zegt.

Het is niet gebruikelijk en zinvol om statische html te echo'en. Alles wat je in php doet moet verwerkt worden en kost dus extra tijd. Statische informatie ga je daarom niet echo'en.

Dit zet je dus gewoon buiten je php code. Dan hoef je ook geen newline toe te voegen.

<meta name="description" content="Mijn meta beschrijving">
<volgende regel hier>
 
Guido  -

Guido -

13/09/2020 00:32:55
Quote Anchor link
Dank voor jullie reacties.

Dit is onderdeel van een functie, dus dit staat niet zo in de head sectie. Kan de echo overigens misschien beter door return vervangen in dit geval. Is inderdaad niet een statische meta beschrijving, maar zo even gedaan voor het topic.
 
Ozzie PHP

Ozzie PHP

13/09/2020 01:06:56
Quote Anchor link
Is het een functie van een bestaand framework? Als het een functie is dan kun je het sowieso inderdaad beter returnen.

Een newline toevoegen is dan prima.

Wist je dat PHP daar ook een eigen constante voor heeft? -> PHP_EOL.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$meta
  = '<meta name="description" content="Mijn meta beschrijving">' . PHP_EOL;
$meta .= 'volgende regel hier';
return $meta;
?>
 
Ward van der Put
Moderator

Ward van der Put

13/09/2020 09:09:16
Quote Anchor link
Guido - op 13/09/2020 00:32:55:
Dit is onderdeel van een functie, dus dit staat niet zo in de head sectie. Kan de echo overigens misschien beter door return vervangen in dit geval. Is inderdaad niet een statische meta beschrijving, maar zo even gedaan voor het topic.


Dan doet die functie te veel. Single-responsibility principle: a class or module should have one, and only one, reason to be changed.

Straks kom je er bijvoorbeeld achter dat je die description per webpagina op drie plaatsen nodig hebt: niet alleen in een reguliere meta-tag, maar ook in Open Graph en in een rich snippet in JSON. Een functie die de description genereert, zou daarom los moeten staan van de functie(s) die er meta-tags of iets anders van maken.

Omgekeerd zou een andere functie die regeleinden invoegt na meta-tags in de head ook compleet los moeten werken van een functie die een description-tag genereert. Dat is immers functionaliteit die eventueel ook geldt voor andere tags in de head die helemaal niets met een description van doen hebben.
 
Thomas van den Heuvel

Thomas van den Heuvel

13/09/2020 17:09:46
Quote Anchor link
Als je afwisselende delen statisch+dymamisch hebt en hier een plakje HTML van wilt maken zou je ook kunnen overwegen om output buffering te gebruiken. Dit is als het ware een (tijdelijke) emmer waarin je alle output opvangt.

Volgens mij is het ook een goed ontwerpprincipe om functies niet rechtstreeks dingen te laten echo'en (natuurlijk zijn hier ook uitzondering op) maar de inhoud als string te retourneren.

Je krijgt dus bijvoorbeeld zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
function bakHTML($data) {
    ob_start(); // start output buffering
        ?>
<div>
            <lala><?php echo $data['x']; ?</lala>
           <
asdf><em>[code]<?php echo $data['y']; ?>
</em></asdf>
        </div><?php
    return ob_get_clean(); // vang inhoud op en retourneer als string
}
?>
 
Ozzie PHP

Ozzie PHP

13/09/2020 21:18:49
Quote Anchor link
Ward van der Put op 13/09/2020 09:09:16:
Dan doet die functie te veel. Single-responsibility principle: a class or module should have one, and only one, reason to be changed.

Veel frameworks houden zich wat dat betreft niet exact aan de 'regels'. Theoretisch klopt je opmerking. De praktijk is vaak anders. Wat je klopt zegt, maar een functie om meta op te bouwen is ook weer niet heel vreemd of ongebruikelijk.
 
Guido  -

Guido -

14/09/2020 00:03:12
Quote Anchor link
Het betreft een WordPress website en dan werkt het net even anders.

Ik heb een functie waarin ik de (niet statische) meta beschrijving genereer en die functie wordt uitgevoerd in de head sectie van de site. Hiervoor haak ik in op de wp_head() functie van WordPress:
https://developer.wordpress.org/reference/functions/wp_head/

Overigens, wanneer ik binnen mijn functie return ipv echo, wordt er geen meta beschrijving geplaatst. Vandaar dat ik toen blijkbaar voor echo gekozen heb.

Nogmaals bedankt allemaal, ik weet weer een stuk meer..

Guido
 
Ozzie PHP

Ozzie PHP

14/09/2020 00:12:08
Quote Anchor link
Guido - op 14/09/2020 00:03:12:
Overigens, wanneer ik binnen mijn functie return ipv echo, wordt er geen meta beschrijving geplaatst.

Dat is niet geheel verwonderlijk. De functie returnt alleen gegevens en er wordt niks ge-echoot/getoond.

Dus stel de naam van de functie is getHead() of iets dergelijks, dan deed je voorheen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
getHead();
?>

In plaats daarvan doe je nu:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$head
= getHead();
echo $head;
?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.