Archief - Spoon library : selected nav item

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

little

Legacy Member
Hey iedereen

Ik knoei nu al even met de spoon library en ik geraak hier echt niet uit, ( zelfs niet na uitleg van 1 van de makers ...) terwijl het echt wel eenvoudig is.

Ik wil mijn selected nav item de class="selected" meegeven, maar heb geen idee hoe. Iemand die me kan helpen?

index.php
PHP:
<?php 
require_once 'spoon.inc.php'; 
require_once 'db.inc.php'; 

$page = $_GET['page'];



$tpl = new SpoonTemplate(); 
 
 
$tpl->setForceCompile(true); 

$tpl->setCompileDirectory('compiled/'); 

$tpl->assign('site_name', 'EDEKA bvba');
$tpl->assign('resource_url', 'static.bubblefish.be/');
$tpl->assign('site_url', 'http://demo1.bubblefish.be/');


// NAVIGATIE
$navigatie = $db->getRecords('SELECT ID, naam, page, rang, omschrijving FROM navigatie ORDER by rang DESC'); 

$tpl->assign('navigatie', $navigatie); 


	
	$tpl->display('layout/content.tpl'); 
	

}



?>

template file:

Code:
<div id="container">

	<div class="header">
    
    	<h1 id="replace"><a href="{$site_url}" title="">{$site_name}<br /> <span>Verwarming - Sanitair</span></a></h1>
        
        <p class="crumb">U bevindt zich hier: <a href="{$site_url}" title="">{$site_name}</a></p>
        
        <ul id="nav">
            {iteration:navigatie} 
              <li{option:navigation.selected} class="selected"{/option:navigation.selected}>
              <a href="{$navigatie.page}" title="{$navigatie.omschrijving}">{$navigatie.naam|uppercase}</a></li>
            {/iteration:navigatie}  

        </ul>
    
    </div>

Zero Grav

Legacy Member
Gewoon in uw iteration checken of {$navigatie.page} overeenkomt met {$page} (die ge dan ook wel gaat moeten doorgeven aan uw template).

Met Smarty syntax bijvoorbeeld:

Code:
{foreach from=$menu key=key item=item}
                <li>
                    <a href="?page={$key}" {if $page == $key} class="current" {/if}>{$item}</a>
                </li>
                {/foreach}

dJeez

Legacy Member
Ik ken spoon niet, maar in de template lijkt het er sterk op dat je navigation en navigatie aan het mixen bent (iteration:navigatie en option:navigation). Misschien is dat dus wel het probleem?

adeepersilence

Legacy Member
Zoals dJeez al zei: je option dien je 'navigatie' te noemen.

Doe dan:
Code:
foreach($navigatie as $key => &$item)
{
    if($item['page'] == $page) $item['selected'] = true;
}
Om een waarde in een iteration te assignen, moet de key (selected in dit geval) ook bestaan in de array die je laat parsen.

On a sidenote, hou je code in het engels ;)

Als het nog niet lukt, laat maar weten dan. [email protected]

little

Legacy Member
alvast bedankt voor de hulp en replies.

Navigatie <-> navigation : domme fout, was een copy paste uit verschillende oefenbestanden, vandaar de naamverwarring

Alles toegepast wat er opgegeven werd en ik krijg inderdaad mijn selected op true ( zie dump op : nav dump .
Probleem : als ik mijn option op niet zet ( met !) toont hij de class, anders niet. De option wordt dus niet doorgegeven aan de template... Wat ben ik nu weer vergeten?

little

Legacy Member
Ik post het even ipv te mailen omdat anderen er mss ook wel iets aan hebben ...

Met andere vragen, als je het niet erg vindt, neem ik even contact op via mail.

index.php

PHP:
<?php 
require_once 'inc/spoon.inc.php'; 
require_once 'inc/db.inc.php'; 

$page = $_GET['page'];



$tpl = new SpoonTemplate(); 
 
/*
 * Should this template be recompiled to PHP every time you execute this 
 * PHP script. This is encouraged to be enabled during development, since 
 * changes to your template file won't be visible otherwise. 
 */ 
 
$tpl->setForceCompile(true); 

$tpl->setCompileDirectory('compiled/'); 

$tpl->assign('site_name', 'EDEKA bvba');
$tpl->assign('resource_url', 'static.bubblefish.be/');
$tpl->assign('site_url', 'http://demo1.bubblefish.be/');



// NAVIGATIE
$navigation = $db->getRecords('SELECT ID, naam, page, rang, omschrijving FROM navigatie ORDER by rang DESC'); 

$tpl->assign('navigation', $navigation); 


foreach($navigation as $index => &$value)
{
    if($value['page'] == $page) { $value['selected'] = true; }
}

/*
foreach ($navigatie AS $index=>$value) 
{ 
	
		foreach ($navigatie[$index] AS $index2=>$value2) 
    { 
	
		if($index2 == "page" && $value2 == $page)
			{   
			
		$navigatie["selected"] = true;
			 
		echo "<p>";
    	echo $index2;
		echo $value2;
		echo "</p>";
		
		}		
		
    } 
	
	
}

*/


if(isset($page)) {
	
		
		/*
		$getcontent = $db->getRecords('SELECT ID, titel, page, content FROM page_content where page="'.$page.'"'); 
		
		$tpl->assign('getcontent', $getcontent); 
			*/
			
			
		$tpl->display('layout/content.tpl'); 
		
		 Spoon::dump($navigation);
		


}else{


	/*

	$intro = $db->getRecords('SELECT titel, intro_txt, particulier, professional FROM intro'); 
	
	$tpl->assign('intro', $intro); 
	
	*/
	
	$tpl->display('layout/content.tpl'); 
	
	


}




?>

content.tpl
Code:
<ul id="nav">
            {iteration:navigation} 
              <li{option:navigation.selected} class="selected"{/option:navigation.selected}>
              	<a href="index.php?page={$navigation.page}" title="{$navigation.omschrijving}">{$navigation.naam|uppercase}</a>
              </li>
            {/iteration:navigation}  

        </ul>

adeepersilence

Legacy Member
Je dient het foreach gedeelte vóór de tpl->assign te zetten. In jouw voorbeeld zit de selected key nog niet in de array wanneer je $navigation in de template stampt. That should do it.

little

Legacy Member
Super! Moest ik eigenlijk zelf ook gezien hebben...
Mercikes voor de hulp! ( en merci voor spoon :p )
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan