[PHP / Yapter] Replace blok replaced alle voorgaande blokken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • siggy
  • Registratie: Juni 2001
  • Laatst online: 27-05 12:07

siggy

Wait.... what?

Topicstarter
Situatie
Ik heb een testscriptje gemaakt waarin ik een aantal punten onder elkaar (via php icm yapter naar simpel html) plaats waarbij sommige van die punten ook aparte opsompunten hebben. Dit wil dus zeggen dat ik bij een punt een block niet moet parsen en bij een ander block. Dit regel ik in het php bestand zelf.

Problmeem
Wanneer het eerste punt een aantal eigen opsompunten bevat en de rest niet, werkt het script naar behoren. Echter, wanneer alléén het 2e punt (of een van de volgende) eigen opsompunten moet bevatten, worden alleen de hoofdpunten geparsed.

Template
Mijn testtemplate ziet er als volgt uit:
code:
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
<html>
<head>
</head>
<body>

<table class=hoofdtabel>

[BLOCK groteloop]

    <tr><td>{vargroteloop}</td></tr>


    [BLOCK kleineloop]

        <tr><td><li>{varkleineloop}</li></td></tr>

    [END kleineloop]


[END groteloop]


[SET empty]

[END empty]


</table>

</body>
</html>


Redelijk simpel dus. Een block bevat een kleiner block en dat kleiner block moet niet altijd geparsed worden. Dit heb ik proberen op te lossen door het te replacen met de SET empty die niet automatisch geparsed wordt.

PHP
In php ziet het scriptje alsvolgt eruit:

PHP:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
// First, of course, include the Yapter library 
require("tpl_engine/yapter.php");
////

// Now, create a new template 
$tp = new Template("templates/test.tpl"); 
////

$vargroteloop = 0;
$varkleineloop = 0;

while ($vargroteloop<5)
{
        $varkleineloop=0;

        $tp->set("vargroteloop", $vargroteloop);

        if ($vargroteloop==0)
        {

            while ($varkleineloop<5)
            {

                $tp->set("varkleineloop", $varkleineloop);

                $tp->parse("kleineloop");

                $varkleineloop++;

            }

        }

        else
        {

            $tp->replace("kleineloop", "empty");
            $tp->clear("kleineloop");
            $tp->clear("varkleineloop");

        }

        $vargroteloop++;

        $tp->parse("groteloop");
        $tp->clear("kleineloop");

}

// Now output the contents to the screen 
// Note that you always end with these 2 lines! 
$tp->parse(); 
$tp->spit(); 
////
?>


Dit geeft dus als resultaat het gewenste effect dat het eerste punt een 5-tal subpunten bevat en de andere punten geen. Wanneer if ($vargroteloop==0) verandert in if ($vargroteloop==1) komt er bij geen enkel punt een aantal subpunten.

Als ik de replace weghaal krijgt het tweede punt in de lijst wel een 5-tal subpunten, maar dan krijgen alle andere punten ook een leeg punt. En dát is wat ik niet wil. Ik meen toch dat zoiets simpels als dit toch moet kunnen.

Even voor de duidelijkheid, dit wil ik dus in html krijgen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<html>
<head>
</head>
<body>

<table class=hoofdtabel>

    <tr><td>0</td></tr>
    <tr><td>1</td></tr>
        <tr><td><li>0</li></td></tr>
        <tr><td><li>1</li></td></tr>
        <tr><td><li>2</li></td></tr>
        <tr><td><li>3</li></td></tr>
        <tr><td><li>4</li></td></tr>
    <tr><td>2</td></tr>
    <tr><td>3</td></tr>
    <tr><td>4</td></tr>

</table>

</body>
</html>


offtopic:
Ik heb niet gedronken en drink ook niet, dus mocht dit een al te stomme vraag zijn.....

"I don't take life too seriously, no one gets out alive anyways..."


Acties:
  • 0 Henk 'm!

  • siggy
  • Registratie: Juni 2001
  • Laatst online: 27-05 12:07

siggy

Wait.... what?

Topicstarter
Sorry voor de kick maar beschrijf ik het zo onduidelijk of is het gewoon niet mogelijk?

Het moet toch mogelijk zijn dat de gebruiker zelf bepaalt dat iets geparsed wordt en wat niet, dus zeg maar iets parsen en dat dat dan ook daadwerkelijk al in html wordt uitgespuugd zodat de php code verder kan gaan met zijn ding.

"I don't take life too seriously, no one gets out alive anyways..."