Metatags in PHP-pagina's

Status
Niet open voor verdere reacties.
Er moet inderdaad een ?> aan het einde van home.php.

Kun je ook nog even de HTML-bron posten? Dus rechtermuisknop, bron weergeven (of iets dergelijks)...
 
HTML:
<!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">

<head>

	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>

   <title><br />
<b>Notice</b>:  Undefined variable: tpTitle in <b>/...../index.php</b> on line <b>16</b><br />
</title>

    <meta name="description" content="<br />
<b>Notice</b>:  Undefined variable: pgDesc in <b>/...../index.php</b> on line <b>17</b><br />
"></meta>

    <meta name="keywords" content="<br />
<b>Notice</b>:  Undefined variable: pgKeywords in <b>/..../index.php</b> on line <b>18</b><br />
"></meta>

    <link href="stylesheet.css" rel="stylesheet" type="text/css" />

    <link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />

    <!-- start lightbox -->

		<script type="text/javascript" src="js/prototype.js"></script>

		<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>

		<script type="text/javascript" src="js/lightbox.js"></script>

	<!-- end lightbox -->

<script type="text/javascript">

		<!--

		function MM_swapImgRestore() { //v3.0

		  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;

		}

		function MM_preloadImages() { //v3.0

		  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();

 		   var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)

 		   if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}

		}



		function MM_findObj(n, d) { //v4.01

		  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {

		    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}

		  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];

		  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);

		  if(!x && d.getElementById) x=d.getElementById(n); return x;

		}



		function MM_swapImage() { //v3.0

		  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)

		   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}

		}

		//-->

</script>

</head>

<body onLoad="MM_preloadImages('afbeeldingen/site/home_over.gif','afbeeldingen/site/biografie_over.gif','afbeeldingen/site/fotos_over','afbeeldingen/site/agenda_over.gif','afbeeldingen/site/media_over.gif','afbeeldingen/site/contact_over.gif','afbeeldingen/site/gastenboek_over.gif')">

<div id="container">

	<div id="header">

		<img src="afbeeldingen/site/header_top.gif" width="770" height="179" alt="Idem Dito"><br><a href="?page=home" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Home','','afbeeldingen/site/home_over.gif',1)"><img src="afbeeldingen/site/home.gif" alt="Home" name="Home" width="107" height="43" border="0"></a><a href="?page=biografie" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Biografie','','afbeeldingen/site/biografie_over.gif',1)"><img src="afbeeldingen/site/biografie.gif" alt="Biografie" name="Biografie" width="119" height="43" border="0"></a><a href="?page=fotos" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Foto's','','afbeeldingen/fotos_over.gif',1)"><img src="afbeeldingen/site/fotos.gif" alt="Foto's" name="Foto's" width="79" height="43" border="0"></a><a href="?page=agenda" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Agenda','','afbeeldingen/site/agenda_over.gif',1)"><img src="afbeeldingen/site/agenda.gif" alt="Agenda" name="Agenda" width="97" height="43" border="0"></a><a href="?page=media" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Media','','afbeeldingen/site/media_over.gif',1)"><img src="afbeeldingen/site/media.gif" alt="Media" name="Media" width="106" height="43" border="0"></a><a href="?page=contact" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Contact','','afbeeldingen/site/contact_over.gif',1)"><img src="afbeeldingen/site/contact.gif" alt="Contact" name="Contact" width="108" height="43" border="0"></a><a href="?page=gbook" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Gastenboek','','afbeeldingen/site/gastenboek_over.gif',1)"><img src="afbeeldingen/site/gastenboek.gif" alt="Gastenboek" name="Gastenboek" width="154" height="43" border="0"></a><br><img src="afbeeldingen/site/header_bottom.gif" width="770" height="20" alt="Idem Dito">     </div>

	<div id="mainContent">

        <br /> 
<b>Notice</b>:  Undefined variable: pgContent in <b>/....../index.php</b> on line <b>58</b><br /> 
    </div>

</div>

<div id="footer">

	<p>&copy;</p>

</div>

</body>

</html>
 
Hoi allen,
Als ik even mag inbreken ;) : ik doe het altijd precies andersom!
  • De permanente bestanddelen zet ik in een include.
  • Alleen de eigen eigenaardigheden van de betreffende pagina komen op de pagina zelf te staan.
  • Zo zitten <title>, description en keywords altijd bij de pagina zelf, en is het ook makkelijk aanpassen als er iets in de content van de pagina verandert.
  • En zo hoeven er ook geen lastige variabelen en separate includes voor pagina-gebonden elementen te worden gemaakt.
  • Nieuwe pagina? Even een oude kopiëren en de nieuwigheden ervoor in de plaats zetten: klaar!
Bijvoorbeeld:
HTML:
<?php header("Content-type: text/html; charset=utf-8"); ?>
<?php include("toebehoren/fragment01-headstart.php"); ?><!-- Doctype enz. -->

<title>MijnSite | Een wonderschone css3 en html5 webdesign ervaring: welkom!</title>
<meta name="description" content="MijnSite is een wonderschone ervaring voor alle webdesigners die tuk zijn op css3 en html5. Tutorials en links aanwezig!">
<meta name="keywords" content="webdesign, webdesigner, state of the art, css3, html5, tutorial">

<?php include("toebehoren/fragment02-headend.php"); ?>
<!-- hierin andere meta's, stylesheet- en script-links, IE-CC's, enz. t/m </head> -->

<body class="home">

<?php include("toebehoren/fragment03-kopwerk.php"); ?>

<div id="topBericht">... enz.
Ervaring: dit werkt heel prettig. :)

Met vriendelijke groet,
CSShunter
 
Laatst bewerkt:
Hoi CSS-hunter,

inbreken mag natuurlijk altijd ;) Hoe meer ideeën, des te beter natuurlijk! Ik denk dat ik 'm redelijk snap. Bij div id "topbericht" zet je dan je content van die pagina toch?
En hoe doe je dat met de index? Is dat gewoon de "home"? je werkt dan volgens mij ook niet meer met index.php?page=contact maar je linkt dan direct naar contact.php toch?
Ziet er ook goed uit, weet alleen niet of ik dat makkelijk vind werken (ben aan het huidige gewend).
Hopelijk gaat het nog lukken zoals Erik mee aan het puzzelen is, anders ga ik wellicht jouw versie eens proberen! :D
 
Hoi Bas web,
Bij div id "topbericht" zet je dan je content van die pagina toch?
Klopt, dat is het begin van de content.
=====
En hoe doe je dat met de index? Is dat gewoon de "home"? je werkt dan volgens mij ook niet meer met index.php?page=contact maar je linkt dan direct naar contact.php toch?
Klopt ook! De homepage heet gewoon index.php. De contact-pagina: contact.php, enz.
Voordeel is o.a., dat je op deze manier gebruikersvriendelijke mapnamen en paginanamen kunt gebruiken (een voorschrift van de Webrichtlijnen).

Praktijkvoorbeeld (intussen geschiedenis geworden):
  • De site in werking.
  • De ingevoerde index.php, in code (zie broncode).
  • De ingevoerde Route-pagina, in code (zie broncode).
  • In de broncodes zijn steeds de vaste bestanddelen met dezelfde php-fragmenten aangehaakt. Alleen de inhoud van de pagina's verschilt, de rest (kop met horizontaal menu, zijkolommen) wordt met de php-includes opgehaald. En dus ook een aantal html-coderegels die toch onveranderd blijven, zoals in de <head>.
De in de broncodes gebruikte fragmenten zijn:
=====
Ziet er ook goed uit, weet alleen niet of ik dat makkelijk vind werken (ben aan het huidige gewend).
Eén keer proberen, en je wilt niet meer anders! :d

Met vriendelijke groet,
CSShunter
 
Laatst bewerkt:
nog even @erik:
Ik heb dit bovenaan de index gezet:
PHP:
<?php
  $tpTitle="Contact";
  $pgHeading="nog invullen";
  $pgDesc="ook nog invullen";
  $pgKeywords="contact, gegevens";
  $pgContent = <<<EOT
 
    <link href="stylesheet.css" rel="stylesheet" type="text/css" />
 
    <h1 align="center">Contact</h1>
EOT;
?>
en dan worden de metatags en content wel meegegeven zoals in dat stukje hierboven geschreven staat. Er staan dus verder geen typfouten in, maar het gaat ergens mis met het liggen van de link.
Heb jij nog een idee erik?

Bas
 
Heb je de bestanden die je wilt includen wel in dezelfde map staan als index.php?
 
Jeps, daar staan ze (het includen werkt zonder de metatags zonder problemen)
 
Vanaf de zijlijn:
  • Een <link> naar een stylesheet zit normaal gesproken in de <head>.
  • Hier wordt het stylesheet via de $pgContent ingevoegd samen met de <h1>, d.w.z. in de <body>.
  • In eerdere codes zag ik het stylesheet wel keurig op z'n plekje staan.
Kan dat het zijn?
 
Ik denk persoonlijk niet dat dat het is CSShunter, aangezien de metatag "title" ook al een foutmelding geeft en dan heeft ie in principe de content nog niet gezien.
 
Erik, heb jij toevallig nog een idee hoe we dit probleem kunnen oplossen?

Ik heb het script hier vandaan. misschien dat daar iets mee kan?
 
Laatst bewerkt:
In de index.php wordt $include gezet, maar nergens daadwerkelijk ge-include.

Daarnaast is een ?> aan het eind optioneel.
Het wordt juist afgeraden om deze toe te voegen om ongewenste whitespace te voorkomen.
 
Ik heb eerlijk gezegd er niet meer aan gedacht hier nog naar te kijken, maar ik zie de oplossing nu ook niet.

Wel zou ik graag nog even horen van thadin, sinds wanneer de ?> aan het einde optioneel is geworden en zeker waarom die afgeraden wordt. Hoe levert dat ongewenste whitespace op?
 
Ook wel nieuwsgierig naar.
  • (Ik ben wel eens een onverklaarbare ongewenste whitespace (c.q. nieuwe regel in de html) tegengekomen bij een include, maar dat bleek te komen omdat het include-fragment niet BOM-loos was. Heb ik me wel eerst wezenloos naar gezocht. ;) )
 
Ik ben wel eens een onverklaarbare ongewenste whitespace (c.q. nieuwe regel in de html) tegengekomen bij een include, maar dat bleek te komen omdat het include-fragment niet BOM-loos was.
@csshunter, wat wordt er bedoeld met een whitespace? Is dat een een "witregel" tussen 2 includes?

Ik heb eerlijk gezegd er niet meer aan gedacht hier nog naar te kijken, maar ik zie de oplossing nu ook niet.
:rolleyes: Dat is jammer.... Daaruit blijkt dus dat je website opbouwen met inlcuden van pagina's eigenlijk helemaal niet zo goed is voor je meta's? (op de methode van csshunter na dan)
 
Wanneer er geen html meer na een php stuk komt is het beter om ?> weg te laten.

Dit komt vooral naar voren bij OOP.
Wanneer je tig php bestanden include wil je niet dat er een whitspace op het eind staat.
Dit kan zelfs ongewenst door sommige editors worden toegevoegd.

Dit is vooral belangrijk bij het gebruik van functies die headers moeten zenden (header, session_start, setcookie, ...)
 
@csshunter, wat wordt er bedoeld met een whitespace? Is dat een een "witregel" tussen 2 includes?
  • Ja, in mijn geval was het een zomaar uit de lucht gevallen maar nergens vindbare witregel tussen een include en de erop volgende normale html.
  • Oftewel: je hebt een html-fragment, knipt het uit tot include, sluit het weer in met php, en er staat opeens een onverklaarbare witregel.
  • In de output-html is niets te zien: het fragment staat gewoon op de plek waar het hoort, en er is ook niets extra's aan toegevoegd.
  • Geen enkel verschil met de html zoals die was voordat ik ging uitknippen. :eek:
  • Ben ik gek?
  • Dan omgekeerd: het fragment gekopieerd uit de include, teruggeplakt in de html, en hij doet weer gewoon! :shocked:
  • Het zat dus op een of andere manier in het include-bestand.
  • Openen met Notepad++ gaf de redding: er bleek (menu: Codering) een BOM in te zitten.
  • Die kon je niet in je html terugvinden.
  • Via hetzelfde menu even converteren naar UTF8-zonder-BOM, en weg whitespace. :)
Met vriendelijke groet,
CSShunter
 
Laatst bewerkt:
dit probleem had ik dus ook toen ik jouw methode ging testen. Ik kreeg tussen diverse verschillende inlcudes dus steeds een onverklaarbare "enter" als ik de site bekeek. Dat was de reden waarom ik even gestopt was met jouw methode...

Alleen dat van de BOM naar UTF8 snap ik nog niet helemaal... (heb er ook nog nooit van gehoord:o) Kan dat ook in dreamweaver?
Dan wordt het toch weer interessant om verder te gaan met jouw methode ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan