[Smarty] probleem met includen van files.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jurgen assaasas

Jurgen assaasas

10/01/2009 17:06:00
Quote Anchor link
Ik maak op mijn website gebruik van Smarty om templates te parsen, dit werkt allemaal leuk en aardig. Ik gebruik file_get_contents() om pagina's te includen en deze aan een smarty variabelen te koppelen. Het probleem is dat smarty en PHP code niet wordt geparst op de included pagina, html wordt wel correct weergegeven. Een stukje van mijn code:

index.php
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
// put full path to Smarty.class.php
require('/usr/lib/php5/Smarty/Smarty.class.php');

$smarty = new Smarty();

$smarty->template_dir = 'smarty/templates';
$smarty->compile_dir = 'smarty/templates_c';
$smarty->cache_dir = 'smarty/cache';
$smarty->config_dir = 'smarty/configs';

$smarty->assign('emailmessage', '');

$pages = array('home','about','links', 'contact', 'portfolio', 'cv');
$names = array('home' => 'Home','about' => 'Over mij','links' => 'Links', 'contact' => 'Contact', 'portfolio' => 'Portfolio', 'cv' => 'Curriculum Vitae');


if(!isset($_GET['p']))
{

    $smarty->assign('content', file_get_contents('home.php'));
    $smarty->assign('breadcrumb', '<a href="index.php">Home</a>');
    $smarty->assign('title', 'Jurgen-Meijer.nl - Welkom op de webpagina van Jurgen Meijer');
}

else
{
    if(!in_array($_GET['p'], $pages))
    {

        $smarty->assign('content', file_get_contents('home.php'));
        $smarty->assign('breadcrumb', '<a href="index.php">Home</a>');
        $smarty->assign('title', 'Jurgen-Meijer.nl - Welkom op de webpagina van Jurgen Meijer');
    }

    else
    {
        $smarty->assign('content', file_get_contents($_GET['p'].'.php'));
        $smarty->assign('breadcrumb', '<a href="index.php?p='.$_GET['p'].'">'.$names[$_GET['p']].'</a>');
        $smarty->assign('title', 'Jurgen-Meijer.nl - '.$names[$_GET['p']]);
    }
}

?>


Het doel is dus dat ik Smarty code wil gebruiken op de included pagina's maar deze worden gewoon letterlijk op het scherm weergegeven. Is het misschien een optie om de variablen te parsen voordat ik hem aan een smarty var koppel en hoe moet dit?
Gewijzigd op 01/01/1970 01:00:00 door Jurgen assaasas
 
PHP hulp

PHP hulp

26/01/2020 09:35:59
 
Stien ss

stien ss

10/01/2009 17:23:00
Quote Anchor link
Dit komt omdat je file_get_contents gebruikt.
Als je het op deze manier wilt doen dan moet je is naar de ob_* functies kijken, daarmee kan je wat jij wilt.

Toch raad ik aan om smarty.include te gebruiken, dat is een stuk makkelijker.
 
Jurgen assaasas

Jurgen assaasas

10/01/2009 17:27:00
Quote Anchor link
Ja, dat werkt voor de template, maar ik wil dus verschillende pagina's kunnen includen d.m.v. één variabelen (die heet in de .tpl file {$content}) deze veranderd elke keer als er op een andere link wordt geklikt. Dus de vraag is eigenlijk hoe kan ik de navigatie maken zodat ik wel verschillende pagina's kan includen, maar ook nog smarty tags gebruiken op die include pagina's.

mijn template ziet er zo uit:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
<body>
<div class="wrapper">
    <div class="header">
    <div class="menu">
        <ul class="menu">
            <li><a href="index.php">Home</a></li>
            <li><a href="index.php?p=about">Over mij</a></li>
            <li><a href="http://fotoalbum.jurgen-meijer.nl" target="_blank">Fotoalbum</a></li>
            <li><a href="http://mediacollectie.jurgen-meijer.nl" target="_blank">Media collectie</a></li>
            <li><a href="index.php?p=portfolio">Portfolio</a></li><li><a href="index.php?p=cv">CV</a></li>
            <li><a href="index.php?p=links">Links</a></li>
            <li><a href="index.php?p=contact">Contact</a></li>    
        </ul>
        <a href="http://www.linux.org" target="_blank" style="float: right;"><img src="/smarty/templates/design/images/tux.png" alt="Linux" /></a>
    </div>
    <div class="headertext">
        <strong>Jurgen-Meijer.nl</strong>
        <span class="subtext"><strong>Webdevelopment, zware metalen en meer!</strong></span>
    </div>
    <div class="quote">{$quote}</div>
    </div>
    <div class="content">
        <div class="breadcrumb">U bent hier: {$breadcrumb}</div>
        {$content}
        {$emailmessage}
    </div>
    <div class="footer">
    &copy; <strong>Jurgen Meijer</strong> 2008 alle rechten voorbehouden.
    </div>
    <div class="submenu">
        <ul>
            <li><a href="http://validator.w3.org/check?uri=www.jurgen-meijer.nl">XHTML</a></li>
            <li><a href="http://jigsaw.w3.org/css-validator/validator?uri=http://www.jurgen-meijer.nl" target="_blank">CSS</a></li>
            <li><a href="sitemap.xml">Sitemap</a></li>
        </ul>
    </div>
</div>
</body>
Gewijzigd op 01/01/1970 01:00:00 door Jurgen assaasas
 
- SanThe -

- SanThe -

10/01/2009 17:28:00
Quote Anchor link
file_get_contents() geeft geparste php, oftewel html terug.
include() is pure php code die er als het ware tussen wordt gezet.

Testje gedaan
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$var
= 1;
echo '<br/>' . $var;
$file1 = file_get_contents('bla.php');
echo '<br/>' . $var;
include('bla.php');
echo '<br/>' . $var;
?>


En in bla.php deze code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$var
=$var+1;
?>


Resultaat:
1
1
2
 
Jurgen assaasas

Jurgen assaasas

10/01/2009 17:30:00
Quote Anchor link
Ja, maar ik kan een include toch niet aan een variabelen hangen?
 
Stien ss

stien ss

10/01/2009 17:34:00
Quote Anchor link
@SanThe ok wist ik niet.

@TS

Wat je kan doen:

ipv
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $smarty->assign('content', file_get_contents($_GET['p'].'.php')); ?>


doe je:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $smarty->assign ( 'content', $_GET['p'] . '.php' ); ?>


Dan kan je in je tpl file zoiets doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php {include file="$content"} ?>


Als het goed is wordt dan wel je smarty geparsed in je geinclude file.
 
Jurgen assaasas

Jurgen assaasas

10/01/2009 17:41:00
Quote Anchor link
Hartelijk dank Stien dit werkt perfect! Hier worstel ik al een aantal maanden mee.
 



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.