Variabelen van pagina overdragen naar iFrame

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Alex Zijlstra

Alex Zijlstra

28/05/2011 14:20:41
Quote Anchor link
Goedemiddag!

Omdat ik over een aantal weken voor een tijdje vertrek naar Thailand, heb ik besloten een blog te maken. Ik loop echter tegen een probleempje aan.

Het gaat om http://blog.alexzijlstra.nl

Hier heb ik mijn eigen achtergrond geladen, met het menu in een iFrame. Ook het blog gedeelte wordt geladen in een iFrame. Ik gebruik hier namelijk gewoon een uitgeklede versie van een Wordpress template voor. Ik heb hier bewust gekozen voor een iFrame omdat dit de makkelijkste manier is om mijn eigen achtergrond te behouden, en ervoor te zorgen dat deze behouden blijft op het moment dat er wordt genavigeerd binnen Wordpress.

Omdat ik graag wil dat als de links in een nieuw tabblad worden geopend mijn achtergrond ook verschijnt heb ik onderstaande aanpassing gemaakt in het index.php bestand van Wordpress.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$topbar
= $HTTP_GET_VARS['topbar'];
if ($topbar == 1){

/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */

define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require('wp-blog-header.php');
}

else {
header( 'Location: http://blog.alexzijlstra.nl/?p='.$HTTP_GET_VARS['p']) ;
}

?>


Hierin wordt $topbar gebruikt als boolean (zeg ik dat goed?) om aan te geven of mijn eigen header wordt weergegeven of niet; 1 staat voor wel, 0 staat voor niet. Er wordt dus gecontroleerd of hier sprake van is, is dat zo, dan worden gewoon de header van wordpress en de inhoud geladen, zo niet, wordt er naar de homepage gegaan en wordt het ID van de pagina doorgegeven door middel van de link.
Op mijn eigen index.php wordt deze dan uit de link gehaald en doorgegeven aan het iframe zoals hieronder weergegeven:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$p
= $HTTP_GET_VARS['p'];
?>


<IFRAME SRC="http://blog.alexzijlstra.nl/blog?topbar=1&p=<?php echo $p;?>" WIDTH="875" HEIGHT="670" name="content" style="position:relative; top: 20px; vertical-align: center;  border-style:solid; border-color:#404040" ALLOWTRANSPARENCY="true" SCROLLING=YES frameborder="2" BORDERCOLOR="#000000">
</IFRAME>


Tot zover werkt alles zoals het was bedoelt. Echter, nu ik deze aanpassingen heb gemaakt, controleert het iFrame elke keer of er sprake is van de topbar. Dit houdt in dat als er binnen Wordpress wordt genavigeerd, elke keer ook de topbar opnieuw wordt geladen (er ontstaan dus meerdere headers in het iFrame zelf). Dit dacht ik te verhelpen door in mijn eigen index.php aan te geven dat $topbar=1; . Het iFrame leest dit helaas niet vanaf de eigen index.php.

Mijn vraag is dan ook of er een mogelijkheid is dat ik deze variabele + waarde doorgeef aan het iframe?

Alvast bedankt voor jullie hulp!

Alex :)
Gewijzigd op 28/05/2011 14:23:34 door Alex Zijlstra
 
PHP hulp

PHP hulp

27/12/2024 11:11:18
 
Maarten PHP

Maarten PHP

28/05/2011 15:18:21
Quote Anchor link
- Je hebt een stukje PHP4 in je code, niet $HTTP_GET_VARS['topbar']; maar dit $_GET['topbar'];
- Je kan ook CSS overflow: scroll; gebruiken
 
Alex Zijlstra

Alex Zijlstra

28/05/2011 15:52:31
Quote Anchor link
Maarten! Bedankt voor je reactie! Ik heb de PHP4 code vervangen, excuses, zo heb ik het geleerd op school! Ik snap echter niet wat je bedoelt met CSS overflow: scroll.. Ik heb hier wel iets over gelezen, maar gaat dit niet om het feit of er wel of geen scrollbar wordt weergegeven?

Alvast bedankt!
 
Maarten PHP

Maarten PHP

28/05/2011 18:50:29
Quote Anchor link
Is de code logisch opgebouwd?
Als dat niet zo is kan de pagina het daar door niet meer doen.

CSS overflow op scroll zetten dan is het net een iframe. Dan heb je geen iframe meer nodig.
CSS overflow op auto zetten komen er alleen scrolbalken als het nodig is, als het content te groot wordt
Gewijzigd op 28/05/2011 18:52:47 door Maarten PHP
 
Alex Zijlstra

Alex Zijlstra

28/05/2011 19:13:56
Quote Anchor link
Nogmaals bedankt voor je reactie Maarten, ik denk echter niet dat we op één lijn zitten. Ik heb bewust gekozen voor een iFrame omdat ik het bloggedeelte als homepage wil, maar door middel van de knoppen bovenaan de pagina in het iFrame ook mijn Coppermine Gallery wil kunnen weergeven.

Ik zoek dus eigenlijk alleen een manier om vanuit het iFrame de variabele $topbar te kunnen lezen vanuit de bovenliggende pagina, zonder dat dit door middel van het doorgeven in een link gebeurt.
Een manier om er voor te zorgen dat de header locatie(Zie hieronder) wordt geladen als _top zeg maar, zou ook voldoen! :)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
else {
header( 'Location: http://blog.alexzijlstra.nl/?p='.$HTTP_GET_VARS['p']) ;
}

?>
 
Maarten PHP

Maarten PHP

28/05/2011 19:20:11
Quote Anchor link
De waarde van de $_GET moet je toepassen in de url wat in de iframe staat.
Heb je dat? Toon desnoods wat meer code.
 
Alex Zijlstra

Alex Zijlstra

28/05/2011 19:38:58
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$p
= $_GET['p'];
?>

<IFRAME
SRC="http://blog.alexzijlstra.nl/blog?topbar=1&p=<?php echo $p;?>"
WIDTH="875" HEIGHT="670" name="content" style="position:relative; top: 20px; vertical-align: center;  border-style:solid; border-color:#404040" ALLOWTRANSPARENCY="true" SCROLLING=YES frameborder="2" BORDERCOLOR="#000000">

</IFRAME>


Dat is de code in mijn index.php die het iFrame oproept, daar staat in de link topbar=1. In het iFrame zelf staat de volgende code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$topbar
= $_GET['topbar'];
if ($topbar == 1){

/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */

define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require('wp-blog-header.php');
}

else {
header( 'Location: http://blog.alexzijlstra.nl/?p='.$_GET['p']) ;
}

?>


Hier wordt door middel van $_GET['topbar'], de waarde opgevraagd.
$topbar=1 dan wordt Wordpress weergegeven.
$topbar=0 dan wordt de pagina teruggestuurd naar mijn index.php, met in de link p='.$_GET['p] zodat hieruit het id van de pagina kan worden gehaald die moet worden weergeven.

Als $topbar=1 en Wordpress dus wordt weergegeven zit deze in het iFrame. Als er dan op bijvoorbeeld 'Lees meer »' wordt geklikt in Wordpress, wordt deze link bijvoorbeeld 'http://blog.alexzijlstra.nl/blog/?p=6'. Deze link wordt in het iFrame geladen, maar omdat dit gewoon de index van Wordpress is wordt het script dat controleert of de topbar aanwezig is nogmaals uitgevoerd. Hierdoor ontstaat een tweede topbar in het iFrame.

Om die link te veranderen en er 'http://blog.alexzijlstra.nl/blog/?topbar=1&p=6' van te maken moet ik dit allemaal handmatig gaan doen in Wordpress. Het zou daarom handiger zijn om gewoon de variabele $topbar over te dragen van de bovenliggende pagina naar het iFrame, zodat uit de code blijkt dat $topbar=1 en deze dus niet opnieuw wordt geladen.

Als dit niet mogelijk is zou het een betere oplossing zijn om het deel van de 'else' functie te veranderen, zodat de header hoe dan ook on top wordt geopend, zodat hij de gehele pagina overschrijft.

Ik hoop dat je begrijpt wat ik bedoel?
 



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.