2011-05-03 2 views
2

탐색에 최대 3 개의 계층 구조가있을 수있는 사이트에서 작업하고 있습니다. CodeIgniter를 사용한 효율적인 웹 사이트 탐색

  • 하위 탐색 과거에 그
  • 아래 왼쪽

  • 옵션 하위 서브 탐색의 상단 헤더

    • 주요 섹션 나는 PHP로 내 자신을 압연 한 때 , 네비게이션을 출력하기 위해 모든 섹션과 서브 섹션과 두 개의 함수를위한 클래스와 배열을 가진 navigation.php 파일을 생성 할 것입니다. 내 사이트의 모든 페이지 (current_section = '', current_sub_section = '')에서 변수를 설정하면 탐색 기능이 강조 표시 할 항목을 알 수 있습니다.

      CodeIgniter에서이 방법을 여전히 사용하는 것이 좋은지 궁금합니다.

  • 답변

    0

    가장 좋은 방법은 컨트롤러에 당신은 당신이

    $top[current] = something; 
    $top[current_sub] = somethingelse; 
    $this->load->view('top_nav', $top); 
    $this->load->view('left_nav',$left); 
    ... 
    
    같은 것을 할 것입니다 수 있도록 apporiate 각보기에 바르 전달할 수있는 3 가지 뷰, 평면도, 좌측보기 및 저면도를 사용하는 것입니다

    다음보기에서 전달 된 변수를 처리 할 수 ​​있습니다.

    6

    메인 네비게이션 섹션이 컨트롤러에 거의 직접 매핑된다고 가정합니다. 이 경우

    • /홈
    • /뉴스
    • /이벤트

    , 당신이 이미 가지고 :

    최상위 표시 줄에서

    Home | News | Events

    는에 매핑 nav 배열을 선택하는 간단한 방법.

    컨트롤러 생성자 &의 nav 항목 링크 쌍을 출력의 하위보기로 전달할 수 있습니다.

    예 :

    class HomeController extends CI_Controller 
    { 
        private $nav; 
        public function __construct() 
        { 
        parent::__construct(); 
    
        $this->nav = array(
         array('Browse', site_url('news/browse')), 
         array('Edit', site_url('news/edit')) 
        ); 
    
        $this->load->vars(array('NavigationArray' => $this->nav)); 
        } 
    
        // ... 
    
    } 
    

    이제 당신이했던 것은 자동 등록 표시 이름의 배열을 포함 모든 뷰 $NavigationArray에 변수를 - 링크쌍.

    그런 다음 해당 변수에서 서브 넷을 빌드하는 기본 탐색보기를로드 할 수 있습니다 (모든 곳에서 사용 가능).

    <? foreach($NavigationArray as $entry): ?> 
        <a href="<?=$entry[1];?>"><?=$entry[0];?></a> 
    <? endforeach; ?> 
    

    그리고 당신은 당신이 선택적으로 컨트롤러에 설정할 수 있습니다, 또는 무엇이든 (세 번째 옵션 탐색이 당신에 대한 이야기) 하위 탐색 배열의 실존

    <? if(exists($SubNavigationArray)): ?> 
        <? foreach($SubNavigationArray as $entry): ?> 
        <a href="<?=$entry[1];?>"><?=$entry[0];?></a> 
        <? endforeach; ?> 
    <? endif; ?> 
    

    를 찾을 수 아래

    하세요 이 예제는 매우 기본적인 것이지만, 일반적으로 데이터를 전달하는 방법이므로 전역 변수를 아무 데나 놓고 대기열에 넣기를 원하지는 않을 것입니다.뷰 엔진에 변수를 단순히 "로드"하면 뷰/하위 뷰를 렌더링 할 때 사용할 수 있습니다.

    이 방법으로 컨트롤러 에 어떤 탐색 항목이 표시되는지 제어합니다.

    또한주의 :

    당신은 그들이 당신의보기의 범위에 존재합니다 신뢰의 명시 적으로 대신 변수를 전달할 수 있습니다.

    $this->load->view('myview', array('NavigationArray' => $this->nav)); 
    

    희망이 있습니다.

    2

    여기에 내가 CodeIgniter의에서 "활성"링크를 결정하기 위해 뭘 기본적이다 :

    $active_class = ''; 
    $url = site_url('your/link/url'); 
    
    if ($url == current_url()) 
    { 
        $active_class = ' class="active"'; 
    } 
    
    $link = '<a href="'.$url.'"'.$active_class.'>Link Text</a>"; 
    

    이 기본적인 예입니다 명심 보통 루프에서 실행됩니다. 가장 좋은 방법은 탐색 배열의 모양과 href가 부분적으로 URL과 일치하는 링크를 "활성화"하고자하는 "활성"상태에 따라 다릅니다.