나는 위에서 언급 한 내용을 보았을 때 조금 더 콤팩트 한 것을 찾고 있다고 생각했습니다. Codeigniter에는 기본적으로 이와 같은 기능이 없지만 쉽게 작성할 수 있습니다. 이것은 내가 지금 함께 맺은 것일 뿐이지 만, 당신이 갖고 싶어하는 것일 수도 있습니다.
먼저, 설명서의 URL 도우미를 살펴보십시오. http://codeigniter.com/user_guide/helpers/url_helper.html
앵커 기능을 자세히 살펴보고 사용법을 이해하십시오. 이 도우미, HTML 도우미 및 양식 도우미를 사용하는 습관이 있어야합니다. 그것은 당신의 견해를 향상시킬 것입니다. 모든 도우미는 시스템 폴더에서 사용할 수 있습니다. 내가 한 일은 URL 도우미를 열고 앵커 코드를 복사 한 다음 응용 프로그램의 도우미 폴더에 자체 헬퍼 파일을 만들었습니다. 매뉴얼에서 직접 헬퍼를 만들고 자동로드하는 방법에 대해 자세히 읽을 수 있습니다.
그런 다음 몇 가지 사항을 변경했습니다. 최종 결과는 다음과 같습니다 당신이 볼 수 있듯이
if (! function_exists('menu_anchor'))
{
function menu_anchor($uri = '', $title = '', $attributes = '')
{
$title = (string) $title;
if (! is_array($uri))
{
$site_url = (! preg_match('!^\w+://! i', $uri)) ? site_url($uri) : $uri;
}
else
{
$site_url = site_url($uri);
}
if ($title == '')
{
$title = $site_url;
}
if ($attributes != '')
{
$attributes = _parse_attributes($attributes);
}
$attributes .= ($site_url == current_url()) ? ' selected' : '';
return '<a href="'.$site_url.'"'.$attributes.'>'.$title.'</a>';
}
}
, 그것은 단지 하나 개의 라인 변경은 다음과 같습니다. $ 속성 = ($의 SITE_URL == current_url을())? 'selected': '';
기본적으로 검색된 페이지의 URL이 앵커가 링크 된 papge와 일치하면 선택한 클래스를 추가합니다. 선택된 링크를 특정 위치에 링크하지 않으려면 $ site_url을 # 또는 다른 값으로 설정하여이 링크를 쉽게 수정할 수 있습니다.
-1. 왜 서버 측 솔루션이 쉬운 지 JavaScript를 사용하는 이유는 무엇입니까 (Paul Dragoonis 응답 참조)? –
localhost에서 Paul의 더 짧은 형식을 사용할 수 없기 때문에 작동합니다. 여전히 'old php if ($ pageName =='index ') echo'id = "active" '; ?> – anroots
내 방법이 여전히 적용됩니다. 앱 구성 방법에 따라 'uri'개체를 사용하여 CI에서 $ pageName을 가져와야합니다. –