Alle DIVS (hoofdpagina) openen bij opvragen subpagina.

Status
Niet open voor verdere reacties.

steef27

Gebruiker
Lid geworden
16 sep 2007
Berichten
51
Hoi,

Op het moment ben ik bezig met het maken van een website (HTML/PHP).
De website bestaat uit een hoofpagina "index.html" welke is opgebouwd uit DIVS. In elke DIV is een sub-pagina (HTML/PHP)geincluded.
Zo bestaat index.html uit de DIVS: header, content en menu. In deze DIVS worden respectievelijk header.html, pagina#.html (# is afhankelijk van de keuze in het menu) en menu.html.
Wanneer men bijvoorbeeld pagina#.html direct opent vanuit bijvoorbeeld een zoekmachine of het direct intypen in de adressenbalk van de browser, wordt index.html niet geladen.
Ik zou dus graag willen dat pagina#.html automatisch wordt geopend IN index.html i.p.v. als losse pagina. Ik mis anders hierdoor mijn header en menu.
De inhoud van de DIVS mogen dus eigenlijk nooit apart geopend worden, maar altijd in het geheel van DIVS met hun inhoud.

Heeft iemand een manier/idee om dit op te lossen?
 
Boolean

Je kan dit op de volgende manier oplossen. Declareer boven in je pagina index.php (!!.php) het volgende:

PHP:
$indexPage = true

Vervolgens ga je bij elke #pagina.php het volgende toevoegen.

PHP:
if ( isset($indexPage) && $indexPage == true)
{
   //geef content weer
}
else
   header("Location: index.php?p=naamVanDePagina");

Vervolgens moet er in de content Div met $_GET['p'] worden gewerkt:

PHP:
<div id = "content">
  <?php
    $page = $GET['p'];
    include $page."php";
  ?>
</div>

Succes!
 
Het lukt me niet. De wanneer ik bijvoorbeeld direct pagina#.php start in de browser dan wordt deze niet in index.php getoond.
Kun je aangegeven waar ik de codes moet plaatsen?
 
Snap je mijn uitleg niet? Of heb je al wat geprobeerd? Post anders je aangepaste code hier even, dan kan ik kijken wat je fout doet.
 
Ik begrijp niet in welke sectie ik de codes moet plaatsen. Ondertussen heb ik het opgelost door op elke pagina de volgende code te plaatsen.


Code:
<head>
<script language="Javascript">
<!--
    if (top.document == self.document) {
       window.location = 'index.php';
    }
<!-- -->
</script>
</head>

Bedankt voor je input!
 
Dat betekent dus dat de pagina's die je include een <head> hebben? Dat is per definitie fout.
 
Als je iets include, dan wordt die hele pagina op die plek in je HTML geplakt, resultaat is dus dat je meerdere <head>'s in één pagina hebt...

Post anders eens de output van je pagina (bron kopiëren vanuit de browser, niet uit je texteditor).
 
Hoi luitjes,
Als ik zo de startvraag zie, denk ik dat er nog een restantje van het oude frame-denken doorspookt.
Met php is de constructie precies omgekeerd als bij een frame-pagina, en ik begrijp dat je een soort mix gemaakt hebt.

Frame-pagina
  • Index-pagina bestaat uit: frameset.
  • In de frameset zitten: header-frame, menu-frame en content-frame.
  • De eigenlijke pagina's zitten in het content-frame, te beginnen met de homepage.
  • De eigenlijke pagina's missen de header en het menu, want die zitten juist in de baas van dit alles: de frameset.

Php-pagina
  • Index-pagina is meteen de homepage, en kan volledig zelfstandig draaien.
  • Alle andere pagina's ook!
  • Er is geen baas, alles is democratisch (ook voor Google, die kan overal bij).
  • Op elke pagina zit op de plaats van de header een verwijzing (php-include) naar het header-bestand.
  • Op elke pagina zit op de plaats van het menu een verwijzing (php-include) naar het menu-bestand.
  • Het header-bestand en het menu-bestand zijn dus géén complete html-pagina's (met een <head>, <body> enz.), maar alleen code-fragmenten van wat anders telkens opnieuw als header- of menu-code in de pagina's geplakt had moeten worden.

De pagina van steef27
  • De index-pagina bestaat uit een <div>-set.
  • In de <div>-set zitten: header-div, menu-div en content-div.
  • De eigenlijke pagina's zitten in de content-div, te beginnen met de homepage.
  • De eigenlijke pagina's missen de header en het menu, want die zitten juist in de baas van dit alles: de index-pagina.
Dat is dus een met <div>'s nagebouwde frame-constructie!
Met daarbij ook precies het nadeel van frames: een losse pagina is niet direct te bekijken (je moet altijd -eventueel via een script- langs de index).

Met de php-constructie hoeft dat niet. Het menu roept geen onderdeel van de pagina op, nee, het menu roept een hele nieuwe pagina op. En in die nieuwe pagina zit ook weer het menu (als bestandsfragment). Idem dito voor de header.
De clou is dat elke pagina een soort eigen frame-opbouw heeft: maar dan zonder frames! :)

Het was voor mij in het begin ook even schudden met m'n hoofd vanwege de exact omgekeerde redenering van een php-site.
Maar het went, en is uitermate praktisch! *) :d

Succes!
CSShunter
____________
*) Je hoeft je met php ook helemaal niet in te houden. "Alles mag" - d.w.z. alles wat je als code-fragment kan maken, kan via een php-include op je pagina gezet worden: dus niet alleen <div>'s maar ook andere zich herhalende onderdelen.
Zo heb ik wat sites draaien, waarbij het meeste van wat in de <head> staat (dwz alles behalve de titel, de keywords-metaregel en de description-metaregel, die per pagina moeten verschillen) in één en dezelfde php-include zit.
Zo ben ik er ook mooi van af om telkens die domme regels met verwijzingen naar stylesheets, scripts en IE-conditional comments in de <head> te plakken. :d

Extreem doorgevoerd op deze pagina en de 36 varianten van die pagina (allemaal verschillende kaartjes). Alle "zelfstandige pagina's" verschillen alleen maar in het nummer van de zone, en door alle images enz. steeds op dezelfde manier hun naam te geven, kan je per pagina volstaan met dit rijtje.
 
Super CSSHunter! Hoewel ik de tutorial niet helemaal 100% kon volgen heeft het me toch geholpen. Ik snap hoe het in elkaar zit en heb dus helemaal geen ingewikkelde scripts nodig (veel andere vragen zijn ook ineens beantwoord!!).

Even een korte samenvatting:
In plaats van dat je vanuit een basis (header en menu) je content ophaalt, haal je vanuit je content je menu en header op. Hierdoor staat je content centraal.

Ik vind het mooi. Alle pagina's die je maakt houd je stabiel (= afmetingen en kleuren identiek) doordat je gebruik maakt van één centraal CSS bestand. Hierin staan ook de afmetingen en posities van je divs die je in je content-pagina's gebruikt.

Ik kan niet anders zeggen dan dat het wel even wennen is. Nogmaals bedankt!:thumb:
 
Hoi steef27,
Even een korte samenvatting:
In plaats van dat je vanuit een basis (header en menu) je content ophaalt, haal je vanuit je content je menu en header op. Hierdoor staat je content centraal.
Ik hoopte dat ik het een beetje begrijpelijk had neergetikt, maar jij begrijpt het krek 100%. Vanwege de centraal staande content is Google er ook zo blij mee, want die indiceert op de unieke content.
Een betere samenvatting valt niet te maken! :thumb:

En inderdaad, het is even wennen aan de wereld op z'n kop. Maar gauw genoeg weet je niet beter, en vraag je je af waarom er nog vrij veel oenen zijn die nog frames gebruiken.

Succes verder,
CSShunter
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan