Includes en verkrijgen van <title> en <meta

Status
Niet open voor verdere reacties.

raymond88

Gebruiker
Lid geworden
24 feb 2010
Berichten
287
Wat mijn probleem is, ik heb verschillende includes zitten in de body. Echter wil ik hiervan de meta tags en de titles hiervan ophalen. Nou heb ik vanalles gelezen en opgezocht, en ben ik onder andere get_meta_tags tegengekomen. Het probleem hierbij is echter dat ik het pad naar het bestandsnaam dus pas in de body aanmaak (die zit in een switch). Daarbij heb ik ook nog iets van cURL gelezen. Ik zie echter door de bomen het bos niet meer. Wat ik wil is namelijk dat de meta tags opgehaald worden, maar de andere code ook geladen wordt, waar ik hem wil (in de body). Ik ben ondertussen wel bekend met functies, maar nog niet zo met classes.

Zo werkt include('www.abc.de/fgh.php'); wel en include('$filename'); niet, dan geeft 'ie een error (Warning: mysql_query() [function.mysql-query]: Access denied for user: 'ODBC@localhost' (Using password: NO)). Nou ben ik erachter gekomen dat ik dan de connection handler mee moet geven als parameter bij mysql_query, maar ik heb dus een class met de database informatie.

Thanks for any feedback.
 
dit moet je doen bij classes:
PHP:
<?php 
class database
{
    function connect()
    {
          bladiebladiebla (jouw code)
    }

}
?>
Deze class moet wel ingeladen worden door bijv een include of require.

dan kan je bijv in de index doen:
PHP:
<?php
require_once('database.class.php');
$dbclass = new database();
$dbclass->connect();
?>
 
Naja, wat ik raar vond.. Dit werkt wel;

PHP:
include("verbinding.php");

en dit niet;

PHP:
$domein = "http://localhost/site/";
$verbinding = $domein . "verbinding.php";
include($verbinding);

Dat kwam dus door het maken van de query's neem ik aan. Tevens, mijn verbinding komt automatisch tot stand. Ik verwacht door deze;

PHP:
    public function __construct() {
        $this->connectlink = mysql_connect($this->hostname,$this->username,$this->password);
        if(!($this->connectlink)) {
            //throw new DatabaseConnectionException("Error Connecting to the Database".mysql_error(),"101");
        }
        else {
            mysql_select_db($this->database);
        }
    }

Kan deze ook aangeroepen worden dan?

Misschien nog antwoord op het verkrijgen van de meta's en title? Thanks tot dusverre. :)
 
$verbinding is geen bestand.
Met include laad je eigenlijk een ander bestand/document in waar de script instaat.
En php leest van boven naar beneden van link naar rechts.
Dus een verbinding moet eerst tot stand worden gebracht voordat je iets wilt ophalen.
__construct functie is een functie die automatisch word uitgevoerd met het laden van de class.

Trouwens de include werkt wel alleen haalde die dubbel op denk ik. Wat er volgens mij gebeurde is dit:
http://localhost/site/http://localhost/site/verbinding.php
 
Laatst bewerkt door een moderator:
$verbinding is geen bestand.
Met include laad je eigenlijk een ander bestand/document in waar de script instaat.
En php leest van boven naar beneden van link naar rechts.
Dus een verbinding moet eerst tot stand worden gebracht voordat je iets wilt ophalen.
__construct functie is een functie die automatisch word uitgevoerd met het laden van de class.

Trouwens de include werkt wel alleen haalde die dubbel op denk ik. Wat er volgens mij gebeurde is dit:
http://localhost/site/http://localhost/site/verbinding.php

$domein = "http://localhost/site/";
$verbinding = $domein . "verbinding.php";
Verbinding is dan http://localhost/site/verbinding.php, dus waarom kan dat niet werken? Is het dan niet logisch om je domein hiervoor te zetten? Ik gebruik het namelijk wel bij al mijn image ankers enzo.
 
met een include weet php zelf waar die is. maar je moet het bestand vinden.

bijvoorbeeld ik zit in http://localhost/config/verbinding.php
en ik wil http://localhost/test.php includen.

dan doe je dat vervolgens zo:
PHP:
<?php include('../test.php'); ?>
Je hoeft dus niet je hele path op te schrijven zoals (soms) bij images makkelijekr is.[/QUOTE]

OK, check. Was misschien wel handiger geweest als het wel kon... ook in verband met hetgaan dat je soms een paar mappen omhoog moet enzo.

Anyways, dit lost mijn metatags probleem nog niet op :D Kan je daar je brein ook over storten? ;)
 
waar staat je metatags functie?

Ja, wat ik kan doen is bovenaan de pagina zeggen van;

PHP:
if isset (bepaalde get variabele){
    $tags = get_meta_tags("includes/public/overzichtfeest.php");
    echo $tags['keywords'];     // php documentation
echo $tags['description'];  // a php manual
    get_meta_data("includes/public/overzichtfeest.php");
}

Dit haalt al de goede meta's op. Echter ik moet ook de rest van het bestand hebben om later te includen in de body. Ik weet niet hoe ik dit mooi op kan lossen.
 
Als je de inhoud van het bestand wilt hebben, kun je beter file_get_contents() gebruiken.

Include zet de pagina namelijk in je code tijdens het uitvoeren. Je wil echt nooit zomaar een script van iemand anders includen en uitvoeren; je weet niet wat hij/zij namelijk daar neer gezet heeft. Als je per ongeluk een script include dat je buiten je eigen server sluit, dan zit je daar lekker mee opgescheept.

Met file_get_contents() kun je de inhoud als string ophalen en zelf bepalen wat je er mee doet (en nee, eval() is meestal niet de oplossing ;)) en die bewerken.
 
Als je de inhoud van het bestand wilt hebben, kun je beter file_get_contents() gebruiken.

Include zet de pagina namelijk in je code tijdens het uitvoeren. Je wil echt nooit zomaar een script van iemand anders includen en uitvoeren; je weet niet wat hij/zij namelijk daar neer gezet heeft. Als je per ongeluk een script include dat je buiten je eigen server sluit, dan zit je daar lekker mee opgescheept.

Met file_get_contents() kun je de inhoud als string ophalen en zelf bepalen wat je er mee doet (en nee, eval() is meestal niet de oplossing ;)) en die bewerken.

OK, dat is tamelijk duidelijk. Wat ik dan nog wil weten, is hoe ik dat bestand dan het beste kan opdelen. Ik heb nu allemaal platte code erin staan. Dus eerste meta data, title blabla. Maar als ik dan met file_get_contents alles ophaal, komt de meta ook halverwege in mijn body. Moet ik deze stukken dus opdelen in php variabelen, of hoe gaat dat het beste?
 
OK, dat is tamelijk duidelijk. Wat ik dan nog wil weten, is hoe ik dat bestand dan het beste kan opdelen. Ik heb nu allemaal platte code erin staan. Dus eerste meta data, title blabla. Maar als ik dan met file_get_contents alles ophaal, komt de meta ook halverwege in mijn body. Moet ik deze stukken dus opdelen in php variabelen, of hoe gaat dat het beste?

Iemand? :)
 
Beetje afhankelijk van wat je er mee wil doen denk ik... je zult in de broncode moeten gaan zoeken naar de stukken die je nodig hebt.

Misschien dat je nog kunt proberen om met simpleXML er een mooi object van te maken, dat bewerkt wat makkelijker... maar dat moet je even proberen of dat gaat.
 
Nou, de meta tags moeten eigenlijk via een query opgehaald worden. Die stop ik dus daarna erin. Weet niet of dit gaat via XML? Ben nog niet bezig geweest met XML. Zoek gewoon een goede oplossing hiervoor eigenlijk. Ik kan natuurlijk ook weer een apart bestandje maken voor de meta tags, maar dit is voor mezelf gewoon zoeken naar een oplossing die ik zelf kan bedenken die waarschijnlijk toch niet goed is..

Ik zag het volgende, wat alles eruit halen kan: http://nashruddin.com/page-indexing-get-title-meta-tags-from-all-pages.html

Maar ik wil natuurlijk geen langzame werking van de site in zijn geheel. Is het dan wel slim om zoiets te gaan gebruiken?
 
Ik ben toch zeker niet de enige die in de body een file wil includen, en in die file de meta genereer?

Ik heb een include, op deze include haal ik via een query vanallerlei spul op. Hierbij zit dan ook de meta description title etcetera.

Op de index doe ik dan include voor de head, maar dan output hij dus helemaal, ik wil hem echter in de body helemaal. Doe ik hem alleen in de body includen, dan pakt ie natuurlijk de meta's niet, want de meta's staan immers boven al deze code. Doe ik normale <meta blabla typen in de include, dan kan ik hem voorheen ophalen met get_meta_data, maar dan staat deze zowel in de body als in de head...

Apart schrijven van de meta's en title is ook geen optie, want het zijn heel veel pagina's. Ik ben ten einde raad.
 
Ik ben toch zeker niet de enige die in de body een file wil includen, en in die file de meta genereer?
Meta tags worden tegenwoordig alleen gebruikt voor backwards compatibility en gespecialiseerde zoekmachines; grote jongens als google, bing, etc scannen de hele pagina (wat de meta tags overbodig maakt).

Wat betreft je probleem: misschien is het handiger om losse variabelen te maken van body, titel en de meta inhoud. Dan kun je tijdens het uitvoeren van het script alles tijdelijk wegschrijven en dan op het laatste moment alles in een keer wegsturen, een soort van output buffering dus.
 
Naja, ik zou het wel willen gaan gebruiken iig. Zou je je voorbeeld verder uit kunnen leggen misschien? Want in het bestand dat ik include zit namelijk een query, en van daaruit ga ik weer de meta ophalen.
 
Hoe meer ik van je berichten in dit topic zie, hoe meer ik het gevoel krijg dat je iets heel vreemds aan het doen bent dat veel makkelijker opgelost kan worden...
 
Zou je je voorbeeld verder uit kunnen leggen misschien? Want in het bestand dat ik include zit namelijk een query, en van daaruit ga ik weer de meta ophalen.
Dat is het mooie van variabelen, hoe of wanneer je ze vult maakt niet uit. Een voorbeeld:
PHP:
<?php
//variabelen aanmaken
$inhoud = "";
$titel = "";
$meta = array();
$metastring = "";

//hier de include
include("inc.php");

//meta genereren en het geheel wegsturen
foreach ($meta as $name=>$content) {
	$metastring  .= "\n\t\t<meta name='".$name."' content='".$content."' />";
}
echo <<<END
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl">
	<head>
		<title>$titel</title>$metastring
		<link rel='stylesheet' media='screen' href='sheet.css' type='text/css' />
	</head>
	<body>
		<div id='inhoud'>
			$inhoud
		</div>
	</body>
</html>
END;
?>
In het kort: variabelen aanmaken, variabelen vullen, alles in één keer naar de browser sturen. Dus de enige "echo" die overblijft is degene die alles wegstuurt op regel 15, verder kun je alles in de variabelen stoppen. Ik zal ter illustratie ook een voorbeeld inc.php plaatsen:
PHP:
<?php
	$inhoud .= "<h1>stukje tekst</h1>";
	$meta["keywords"] = "stukje, tekst";
	$titel .= "stukje tekst";
	$meta["description"] = "voorbeeld code";
	$inhoud .= "<p>dit is een stukje tekst</p>";
	$titel .= " en een voorbeeld";
	$inhoud .= "<p>nog meer tekst</p>";
?>
Ik heb expres alles door elkaar gezet omdat het, gezien jouw berichten, bij jou net zo is. Hoe en wanneer je de meta tags opvraagt maakt niet uit, zolang je ze maar in de array stopt.
 
Laatst bewerkt:
Frats, dit is een gedeelte van mijn html
HTML:
<div id="maincontainer">
    <div id="content_top">
    </div>
    <div id="content_middle"><?php
        if (isset($_GET['query'])) { ?>
            <?php
        }
        else if (!isset($_GET['pagina'])) { ?>
        <table style="width: 100%;">
            <tr>
                <td class="maincontainer_td">
                    Welkom blabla
                </td>
                <td class="content_middle">
                    <img class="img_fotos" src="plaatjes/foto/welkom.png" alt="welkom" />
                </td>
            </tr>
        </table><?php
        }
        else {
            switch($_GET['pagina']) {
                case 'overzicht-locaties':
                    include('pagina.overzicht.locatie.php');
                    break;
                case 'informatie-locatie':
                    include('pagina.informatie.locatie.php');
                    break;
            }
        } ?>

    </div>
    <div id="content_bottom">
    </div>
</div>

Ik was er zelf ook wel achter dat ik mss te moeilijk bezig was. Vandaar dat ik even wat hulp nodig heb. Een pagina die ik include bevat dan gewoon alle tekst die ik wil inlcuden. Tevens worden in het bestand zelf, via een query, de meta's gegenereerd. Ik wil het natuurlijk niet nog gecompliceerder maken, en het nog allemaal trager laten verlopen met het zoeken naar dingen en blabla.

(het gaat dus met name om die $_GET['pagina'])
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan