• 05-10-2014, 02:10:20
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba,

    işimi kolaylaştırmak adına her sayfada tekrarlayan menümü ayrı bir dosyaya aldım her sayfada onu çektiriyorum. ama linki aktif olduğunda (herhangi bir sayfaya girildiğinde) class değişsin istiyorum ama çözemedim

    <li class="start active ">
    					<a href="index.php">
    						<i class="fa fa-home"></i>
    						<span class="title">
    							Ana Sayfa
    						</span>
    						<span class="selected">
    						</span>
    					</a>
    				</li>
    
    <li>
    					<a href="2.php">
    						<i class="fa fa-home"></i>
    						<span class="title">
    							2. link
    						</span>
    						<span class="selected">
    						</span>
    					</a>
    				</li>
    
    <li>
    					<a href="3.php">
    						<i class="fa fa-home"></i>
    						<span class="title">
    							3. link
    						</span>
    						<span class="selected">
    						</span>
    					</a>
    				</li>
    şeklinde menu dosyam var. hangi sayfaya girilirse onun <li> tagi <li class="start active "> şeklinde olmasına uğraşıyorum.

    bunun yolunu yordamını bilen var mı?
  • 05-10-2014, 05:48:57
    #2
    Üyeliği durduruldu
    Mesaj içeriğini sildim.
  • 05-10-2014, 05:57:50
    #3
    Merhabalar,

    Belki biraz dolaylı yoldan yapıyorum daha kolayı olabilir fakat kendi yaptığım yazılımlarda şu yöntemi izliyorum.

    İlk önce menü elemanlarını bir dizin içerisinde tanımlıyorum:
    $menuler = array(
    	'index.php'	=>	array(
    		'icon'	=>	'fa-home',
    		'title'	=>	'Ana Sayfa'
    	),
    	'2.php'	=>	array(
    		'icon'	=>	'fa-home',
    		'title'	=>	'2. link'
    	),
    	'3.php'	=>	array(
    		'icon'	=>	'fa-home',
    		'title'	=>	'3. link'
    	),
    );
    Daha sonra ise senin koduna uygun bir şekilde bu dizini yazdırmak için şu şekilde bir kullanım izlenebilir:
    <?php
    foreach($menuler as $script_name => $menu)
    {
    	$active = false;
    	if($_SERVER['SCRIPT_NAME'] == $script_name)
    	{
    		$active = true;
    	}
    	?>
    	<li<?php if($active){ echo '  class="start active"'; } ?>>
    		<a href="<?php echo $script_name; ?>"> 
    			<i class="fa <?php echo $menu['icon']; ?>"></i> 
                <span class="title"> 
    				<?php echo $menu['title']; ?>
                </span> 
                <span class="selected"> 
                </span> 
            </a>
    	</li>
    	<?php
    }
    ?>
  • 05-10-2014, 10:30:42
    #4
    Hocam istersen css in :active metodunu kullanarak hızlıca çözebilirsin bence. bütün linklere bir class ver mesela "myLink" sonra style de .myLink:active{color: yellow} şeklinde olabilir.
  • 05-10-2014, 14:45:21
    #5
    hazır bir şablon olduğu için css den bulmak ya da o css leri düzenleme daha zoruma gitti

    fonksiyon sanki daha kısa bir çözüm diye düşündüm ama şu an çalışmıyor

    <? function aktifMenu($a){
    if(strpos($_SERVER['REQUEST_URL'], $a)){
    echo "active";
    }
    }
    
    ?>
    şeklinde fonksiyonu tanımladım

    <li class ="<? echo aktifMenu($a) ?>" >
    					<a href="index.php">
    						<i class="fa fa-home"></i>
    						<span class="title">
    							Ana Sayfa
    						</span>
    						<span class="selected">
    						</span>
    					</a>
    				</li>
    				<li class ="<? echo aktifMenu($a) ?>" >
    					<a href="javascript:;">
                        <i class="fa fa-table"></i>
    						<span class="title">
    							1. menü
    						</span>
    						<span class="arrow ">
    						</span>
    					</a>
    					<ul class="sub-menu">
    						<li>
    							<a href="#">
    								3. menü
    							</a>
    						</li>
    						<li class ="<? echo aktifMenu($a) ?>" >
    							<a href="link.php">
    							4. menü
    							</a>
    						</li>
    şeklinde de menüm var. ama linke gidildiğinde aktif etmiyor (kaynaktan bakıyorum <li> içine class boş geliyor)
  • 05-10-2014, 16:01:55
    #6
    Üyeliği durduruldu
    Mesaj içeriğini sildim.
  • 05-10-2014, 16:28:45
    #7
    <? function aktifMenu($a){
    if(strpos($_SERVER['REQUEST_URL'], 'index.php')){
    echo "selected";
    }
    }
    
    ?>
    <li class="<? echo aktifMenu($a) ?>">
    					<a href="index.php">
    						<i class="fa fa-home"></i>
    						<span class="title">
    							Ana Sayfa
    						</span>
    						
    					</a>
    				</li>
    gibi mi tam anlayamadım.

    ikinci php kutucuğunda akfitmenu yazan yere selected yazsa yetiyor aslında. her linkte bu şekilde <li> tag arasına selected yazması benim istediğim
  • 05-10-2014, 18:09:48
    #8
    Üyeliği durduruldu
    Mesaj içeriğini sildim.
  • 06-10-2014, 12:51:43
    #9
    Sanırım fonsiyon hazırlarken bi yerde hata yapıyorum ama bir türlü çözemedim.

    <? function aktifMenu($a){
    if		(strpos($_SERVER['REQUEST_URI'], 'test.php'))	 { echo "aktif";	} 
    elseif	(strpos($_SERVER['REQUEST_URI'], 'test2.php'))	 { echo "pasif";	}
    else { echo "Hiç birisi";
    	
    } 
    } 
    
    ?>
    fonsiyonum bu

     <? echo aktifMenu('test.php') ?>
     <? echo aktifMenu('test2.php') ?>
    bu iki satırıda hem test hemde test2 diye iki dosya üzerinden sunucuda çalıştırdığımda

    test.php
    aktif aktif

    test2.php
    pasif pasif

    bunlarda aslında sadece tek kelime olması gerekmiyor mu? ya da neden 2 tane yazıyor? 1 tane yazsa iş bitti gitti