보기_메뉴 2,버전 4.9 엑스
보기_메뉴 2 는 웹 사이트 베이커의 코드 스 니펫입니다. 이 웹 사이트에는 다음과 같은 기능이 포함되어 있습니다.
이전 메뉴 표시 기능이 완전히 대체되고 메뉴 표시 2 로 확장됩니다. 메뉴를 만드는 데 필요한 모든 데이터는 단일 데이터베이스 쿼리에 의해 생성됩니다. 가능한 모든 메뉴 유형(목록,이동 경로,사이트 맵 등)생성 할 수 있습니다.2374>
설치 업
일반적으로 웹 사이트 베이커에 메뉴 2 가 표시되므로 설치가 필요하지 않습니다. 기대에 반하는,그것이 존재하지 않는 경우,당신은 여기에서 다운로드 할 수 있습니다.
메뉴 2 표시 사용
메뉴 2 표시를 사용하려면 메뉴를 표시할 템플릿을 수정해야 합니다. 참고:이전 메뉴 호출이 대체되는 경우 메뉴 2 를 표시하는 해당 새 매개 변수도 사용해야 합니다.
대부분의 경우 표시 _메뉴 2 의 매개 변수가 4 개 이상 있는 표준 호출이면 충분합니다. 이 경우 기본값이 사용되며 현재 페이지와 현재 페이지의 하위 페이지를 표시하는 메뉴가 만들어집니다:
show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);
참고:메뉴 2 를 표시 하는 호출은
<?php show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM); ?>
이 기본 메뉴는 이미 여러 클래스를 사용하여 목록 기준으로 전체 메뉴를 만듭니다. 예를 들어,클래스”메뉴-현재”는 현재 메뉴 항목의<리>태그에 추가됩니다. 또한 하위 항목의 각 메뉴 항목에는”메뉴-확장”클래스가 포함되어 있습니다. 이를 통해 각 메뉴 항목에 대해 매우 차별화 된 규칙을 만들 수 있습니다.
예:
li.menu-expand { font-weight: bold; }li.menu-current { background: red; }
어떤 클래스가 어떤 요소에 할당되는지에 대한 자세한 설명이 포함되어 있습니다. 메뉴 2 함수 호출에서 다른 매개 변수를 사용 하 여 매우 광범위 하 고 다른 메뉴 구조를 만들 수도 있습니다. 예를 들어 메뉴 구조의 최상위 수준에 있는 메뉴 항목만 표시하려면 다음 호출을 사용할 수 있습니다:
show_menu2(0, SM2_ROOT, SM2_START, SM2_TRIM);
또는 예를 들어 현재 페이지의 하위 수준을 최대 두 개까지 표시할 수 있습니다:
show_menu2(0, SM2_CURR+1, SM2_CURR+2, SM2_TRIM);
다른 메뉴 구조를 만들 수있는 많은 가능성이 있습니다. 데모 웹 사이트에서 수많은 예제를 찾을 수 있습니다. 더 간단한 문서가 있습니까?
: 아니요,이 문서는 이미 간단한 문서이기 때문입니다.
질문:드롭 다운 메뉴를 어떻게 만들 수 있습니까?
에이:이 쇼 메뉴 2 와 아무 관련이 없습니다. 드롭다운 메뉴를 만들려면 해당 템플릿의 코드만 조정하면 됩니다. 필요한 조정은 웹 사이트 베이커 애드온 저장소의”올씨 2″템플릿에서 찾을 수 있습니다-> https://addon.websitebaker.org/
질문:다국어 웹 사이트 베이커 페이지에서 검색 기능을 사용한 후 메뉴가 사라지는 이유는 무엇입니까?
에이:사용 된 템플릿에 필요한 줄이 없습니다:
<input type="hidden" name="referrer" value="" />
<input type="hidden" name="referrer" value="<?php echo defined('REFERRER_ID')?REFERRER_ID:PAGE_ID;?>" />
질문:다국어? 즉 좋은 소리. 당신은 그것을 어떻게합니까?
: https://help.websitebaker.org/en/designerguide/multilingual-websites.php
다음 경고 메시지가 생성됩니다.: 잘못된 값 또는 잘못된 수의 값이 함수에 전달되었습니다.
$옵션 매개 변수에 전달할 올바른 플래그 값에 대한 매개 변수 섹션을 참조하십시오.
질문:메뉴의 각 항목에 대해 다른 클래스/그림/색상/위젯을 어떻게 사용합니까?
:형식 문자열을 사용 하 여$오픈 문자열입니다. 각 메뉴 항목에 대해 고유 한 클래스 또는 아이디를 만든 다음 해당 항목을 참조하여 원하는 것을 할 수 있습니다.
각 메뉴 항목(또는 이와 유사한)에 대해 고유 한 클래스를 추가하려면):
"<li><a href="" target="" class=" p"></a>"
… 같은 메뉴 항목을 만들기…
<li><a href="/pages/foo/bar.php" target="_top" class="menu-top p45">Top Menu</a>
:
a.p45 { color: red; }
각 메뉴 항목(또는 이와 유사한 항목)에 대해 고유 한 아이디를 추가하려면):
"<li><a href="" target="" class=""></a>"
… 같은 메뉴 항목을 만들기…
<li><a href="/pages/foo/bar.php" target="_top" class="menu-top">Top Menu</a>
:
a#p45 { color: red; }
해당 메뉴가 생성되어 페이지에 한 번만 표시되는 경우에만 아이디를 사용할 수 있습니다.
함수
전체 호출 및 메뉴 2 표시의 기본 매개 변수 값은 다음과 같습니다:
show_menu2( $aMenu = 0, $aStart = SM2_ROOT, $aMaxLevel = SM2_CURR+1, $aOptions = SM2_TRIM, $aItemOpen = '</a>', $aItemClose = '</li>', $aMenuOpen = '', $aMenuClose = '</ul>', $aTopItemOpen = false, $aTopMenuOpen = false);
“매개 변수”섹션에는 각 개별 매개 변수에 대한 자세한 설명이 포함되어 있습니다.
각 매개 변수는 절대적으로 올바르게 사용해야합니다. 다음 규칙이 도움이 될 수 있습니다.
이 경우 다음 중 하나를 사용할 수 있습니다.이 문제를 해결하려면 다음을 수행하십시오.
몇 가지 특별한 경우를 제외하고 옵션은”2_”로 시작하는 값만 허용됩니다.
다른 모든 매개 변수에는 메뉴의 출력을 제어하는 태그가 포함되어 있습니다.
에서 시작$에이트열기 각 매개 변수는 각각의 기본값을 얻기 위해 거짓 값을 전달할 수 있습니다.
예를 들어 번호가 매겨진 목록을 만드는 데 사용할 수 있지만 기본값은 개별 메뉴 항목에 계속 사용됩니다:
show_menu2(0, SM2_ROOT, SM2_ALL, SM2_ALL, false, false, '<ol>', '</ol>');
참고:최대$옵션 포함 모든 매개 변수는 명시 적으로 전달되어야합니다!
이에 관계없이 후속 클래스는 항상 각 메뉴에 사용되며,필요한 경우 개별 메뉴 항목도 여러 클래스를 가질 수 있습니다.
클래스 | 할당 |
---|---|
메뉴-맨 위 | 첫 번째 메뉴 항목. |
메뉴-상위 | 모든 주 메뉴 항목. |
메뉴-현재 | 현재 페이지의 메뉴 항목만. |
메뉴-형제 | 현재 페이지의 모든”형제”. |
메뉴-자식 | 현재 페이지의 모든 하위 메뉴. |
메뉴- | 하위 메뉴가 있는 메뉴를 확장합니다. |
메뉴-첫 번째 | 모든 메뉴 또는 하위 메뉴의 첫 번째 항목입니다. |
메뉴-마지막 | 메뉴 또는 하위 메뉴의 마지막 항목입니다. |
메뉴-엔 | 각 메뉴 항목,여기서 엔 각 메뉴 항목의 절대 메뉴 깊이(0 부터 시작)를 나타냅니다. 따라서 최상위 레벨은 항상 메뉴-0 이고 다음 레벨은 메뉴-1 등입니다. |
메뉴-자식-엔 | 현재 페이지의 각 하위 메뉴. |
출력 예:
<ul class="menu-top menu-0"> <li class="menu-0 menu-first"> ... </li> <li class="menu-0 menu-expand menu-parent"> ... <ul class="menu-1"> <li class="menu-1 menu-expand menu-first"> ... <ul class="menu-2"> <li class="menu-2 menu-first"> ... <li class="menu-2 menu-last"> ... </ul> </li> <li class="menu-1 menu-expand menu-parent"> ... <ul class="menu-2"> <li class="menu-2 menu-expand menu-current menu-first"> ... ** CURRENT PAGE ** <ul class="menu-3"> <li class="menu-3 menu-child menu-child-0 menu-first"> ... <ul class="menu-4"> <li class="menu-4 menu-child menu-child-1 menu-first"> ... </li> <li class="menu-4 menu-child menu-child-1 menu-last"> ... </li> </ul> </li> <li class="menu-3 menu-child menu-child-0 menu-last"> ... </li> </ul> </li> <li class="menu-2 menu-sibling menu-last"> ... </li> </ul> </li> <li class="menu-1"> ... </li> <li class="menu-1 menu-expand menu-last"> ... <ul class="menu-2"> <li class="menu-2 menu-first menu-last"> ... </li> </ul> </li> </ul> </li> <li class="menu-0 menu-last"> ... </li> </ul>
매개 변수 업
$아메 누
$시작
는 현재 레이어에서 시작됩니다. 현재 레벨
의 모든 형제들은 모든 하위 레벨을 가진 현재 레이어 아래에 레이어를 시작합니다.
이 페이지의 모든 하위 메뉴가 표시됩니다. (페이지 아이디는 관리 백엔드에서 페이지를 편집함으로써 결정될 수 있으며,브라우저의 주소 표시줄에 표시될 것이다: http://SITE/admin/pages/modify.php?page_id=35
$최대 레벨
는$아스타트에 지정된 레벨부터 여기에 지정된 레벨까지 시작됩니다.제한 없음,모든 레벨이 표시됩니다.현재 페이지 수준을 표시합니다.모든 상위 계층+현재 하위 계층+3
시작+엔
현재 페이지의 레벨에 관계없이 레벨이 표시됩니다.
시작 레벨+1 레벨 이하.시작 레벨부터 최대 레벨을 표시합니다.
현재 레벨 아래의 레이어는 표시되지 않습니다.
$옵션
예를 들어 트림과 예쁜 것을 모두 정의하려면 다음을 사용하십시오.
그룹 1
——-
이 그룹에서 항상 하나의 플래그를 지정해야 합니다. 이 플래그는 메뉴 트리의 형제 요소가 출력에서 표시되지 않는 방법을 결정합니다.
SM2_ALL
A-1 -> B-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3 A-2 -> B-3 -> B-4
SM2_TRIM
경로에 없는 항목의 모든 하위 메뉴입니다.
삭제즉,현재
메뉴 항목 및 이 항목으로 이어지는 모든 메뉴 항목을 표시합니다.현재 페이지의 형제 메뉴만 표시됩니다. 다른 모든 항목은 표시되지 않습니다.
A-1 -> B-2 -> C-1 -> C-2 (CURRENT) -> D-1 -> D-2 -> C-3
그룹 2
——-
이 플래그는 선택 사항이며 임의의 숫자로 결합 할 수 있습니다.메뉴 클래스와 하위 메뉴 클래스를 추가합니다.데이터베이스의 페이지 테이블에서 모든 필드를 로드합니다.
이로 인해 메모리 소비가 상당히 많이 발생하므로
를 사용해야 합니다.
즉,예를 들어 키워드,페이지 설명 및
일반적으로
가 아닌 다른 모든 정보를 로드할 수 있습니다.
참고: 이 플래그는 첫 번째 호출에서 설정해야합니다.
데이터베이스에서 읽은 데이터는 메뉴 2 를 다시 호출할 때 다시 사용되지 않고 데이터베이스에서 다시 읽습니다.
는 읽기 쉬운 형식으로 줄 바꿈합니다. 이 기능은 메뉴 출력을 디버깅할 때 특히 유용합니다.그러나 내부적으로 저장한 다음 전체 문자열로 출력합니다.다른 모든 최상위 메뉴가 표시되지 않습니다.
현재 메뉴 분기의 메뉴 항목만 표시됩니다.
필요한 경우 이 플래그를 그룹 1 의 모든 플래그와 결합할 수 있습니다.
이전 웹 사이트 베이커 설치에 필요할 수 있습니다.
유효한 출력을 생성합니다.
숨김
활성화된 경우를 제외하고 페이지를 숨기려는 경우에는 개인 페이지를 사용합니다. 그러나 릴리스 4.8 과의 호환성을 위해 숨겨진 페이지가 활성 상태일 때 표시되도록 하려면 이 플래그를 제공합니다.또는로 서식이 지정된 링크에서 대상 사양을 제거하고 인수 제목=””을 삽입하여 링크의 호환성을 보장합니다. 수동으로 컴파일 된 링크의 경우 디자이너는 다음을 담당합니다.
제목 속성 또는 서식이 지정된 링크의 내용의 출력을 표시하지 않습니다.
이 매개 변수에는 옵션이 연관 배열로 전달되는 확장 모드도 있습니다. 자세한 내용은 고급 옵션 섹션을 참조하십시오. 그러나 대부분의 응용 프로그램에 대 한이 필요 하지 않습니다.
$각 개별 메뉴 항목이 시작되는 형식 문자열을 정의합니다. 다른 형식 문자열을 사용하여 첫 번째 메뉴 항목에 대해 정의 할 수 있습니다.
이 매개 변수를 거짓으로 설정하면 웹 사이트 베이커 표준 함수와의 호환성을 보장하기 위해 기본 형식 문자열
‘</>’이 표시됩니다.
<>태그에 적용할 때 형식 지정이 더 쉬운 경우가 많으므로 다음 형식 문자열을 사용하는 것이 좋습니다.
이 매개 변수는 메뉴에 대한 서식 클래스의 인스턴스로도 사용할 수 있습니다. 더 자세한 설명은 포맷터 섹션에서 찾을 수 있습니다. 여기에 포맷터를 지정하면 모든 인수가 무시됩니다.
$항목 닫기
이 매개 변수를 거짓으로 설정하면 기본값'</리>’이 사용됩니다.
$메뉴 열기
이 매개 변수가 거짓으로 설정된 경우 기본값”이 사용됩니다.
$아메 누 클로즈
이 매개 변수를 거짓으로 설정하면 기본값'</>’이 사용됩니다.
$열
$메뉴 열기
고급 옵션 업
$옵션 매개 변수는 두 가지 방법으로 사용할 수 있습니다. 첫째,위의 매개 변수 섹션에서 설명한 것처럼 이 형식은 대부분의 사용 사례에 충분해야 합니다. 그러나 특별한 경우에 특별한 옵션을 다룰 수 있으려면 필요한 값을 연관 배열로 제공해야 합니다.
참고:여기에 플래그도 필요하며’플래그’로 전달되어야 합니다.
이 항상$스타트에 정의 된 메뉴 레벨을 기준으로 표시되는 수준의 수를 정의합니다. 이렇게 하면 이러한 수준에 대해 플래그가 무시됩니다.
이 배열을 사용하려면 먼저 배열을 만든 다음 생성된 배열에 옵션 매개 변수를 제공하는 것이 좋습니다:
$options = array('flags' => (SM2_TRIM|...), 'notrim' => 1); show_menu2(0, SM2_ROOT, SM2_CURR+1, $options);
형식 문자열
다음 태그는 형식 문자열에서 사용할 수 있습니다.
<클래스가 없는>태그:
'<a href="" target="">' |
|
<>클래스가 있는 태그:
'<a href="" target="" class="">' |
|
<리>클래스 태그:
'<li class="">' |
|
<클래스 태그:
'<ul class="">' |
|
이 페이지의 클래스 목록 | |
메뉴 제목 의 텍스트입니다.) |
|
일반 표현으로 이미지 파일에 대한 링크 | |
활성/호버 표시가 있는 이미지 파일로 이동합니다. | |
페이지 제목 텍스트 ) |
|
페이지 관련 이미지 파일 | |
<>태그의 페이지 | |
<>태그의 페이지 대상 | |
현재 메뉴 항목의 페이지 아이디. | |
상위 메뉴 항목의 페이지 아이디. | |
당신은 페이지 수준,이”메뉴-엔”태그에 사용되는 동일한 번호입니다. | |
현재 메뉴 항목의 형제 수. | |
이 메뉴의 모든 형제 수. | |
조건(자세한 내용은”조건부 서식”섹션 참조) |
다음 태그는 플래그가 설정된 경우에만 사용할 수 있습니다.
페이지 설명 | |
페이지의 키워드 |
조건부 서식 최대
조건부 서식 문은 다음 형식 중 하나를 사용할 수 있습니다:
‘}’문자를 포함하지 않는 문자열일 수 있습니다.
가 포함될 수 있습니다. 섹션
형식 문자열’의 모든 형식 문자열을 포함 할 수 있지만 더 이상의 조건 테스트는 없습니다(문자’}’가 허용되지 않기 때문에).
기음
‘}’문자를 포함하지 않는 문자열일 수 있습니다.
가 포함될 수 있습니다. 섹션
형식 문자열’의 모든 형식 문자열을 포함 할 수 있지만 더 이상의 조건 테스트는 없습니다(문자’}’가 허용되지 않기 때문에).
조건은 하나 이상의 부울 비교의 조합입니다.
둘 이상의 비교가 필요한 경우||(부울 또는-또는)또는&&(부울 및-및)를 사용하여 연결할 수있는 다른 비교
와 결합해야합니다.
단일 비교는 왼쪽 피연산자,연산자 및 오른쪽 피연산자로 구성됩니다.
예:엑스==와이-여기서 엑스 왼쪽 피연산자,==연산자 및 와이 오른쪽 피연산자.
클래스 | 이 클래스가 있는지 확인하십시오. 만”==”와”!=”연산자가 허용됩니다. 이 경우 연산자는”같음”또는”같지 않음”대신”포함”또는”포함하지 않음”이라는 의미를 갖습니다. |
레벨 | 페이지 레벨 확인. |
현재 페이지의 형제 수를 확인하십시오. | |
현재 메뉴에서 총 형제 수를 확인하십시오. | |
이 페이지를 확인하십시오. | |
대상 | 대상 규격의 검증. |
< | 보다 작음 |
<= | 보다 작거나 같음 |
== | 동등한 |
!= | 같지 않음 |
>= | 보다 크거나 같음 |
> | 보다 큼 |
클래스 | “출력”섹션에 지정된”메뉴-*”클래스 이름 중 하나입니다. |
수준 | 다음 값에 대해 페이지 수준을 확인하십시오:
|
다음 값에 대해 페이지 아이디를 확인하십시오:
|
|
이 메뉴에서 형제 수를 확인하는 양의 정수 또는”십수”입니다. | |
양의 정수 | |
대상 | 가능한 대상 사양을 나타내는 문자열입니다. |
하위 메뉴가 있습니다 | |
메뉴의 첫 번째 항목이 다음과 같은 경우 | |
메뉴의 첫 번째 항목이 아닙니다 | |
메뉴의 마지막 항목이 다음과 같은 경우 | |
최상위 레벨에 위치 | |
최고 수준에 있지 않습니다 | |
메뉴의 두 번째 항목이 다음과 같은 경우 | |
둘 이상의 항목이 있는 메뉴에 있는 경우 | |
메뉴에 있음 즉,정확히 2 항목이 없습니다 | |
형제 메뉴 또는 형제 메뉴의 하위 메뉴에 있음 | |
현재 아이디의 부모 지점이다. | |
문자열’_자체’는 대상 특성에 포함되어 있습니다. |
다른 절이 추가되면 다른 모든 경우에 실행됩니다.
예를 들어,”푸”는 검사가 잘못되었을 때 항상 실행됩니다.:
메뉴의 두 번째 항목이 아닙니다 | |
두 개 이상의 항목이 있는 메뉴에 없는 경우 |
첫 번째 항목이거나 메뉴에서 네 번째 또는 그 이상의 항목입니다 | |
현재 항목이 하위 메뉴이고 하위 메뉴가 있는 경우 |
참고:
모든 검사는 기록 된 순서대로 수행됩니다.:
- 가능한 루프에 대한 검사가 없습니다(모든 검사가 항상 실행됨).
- 검사는 그룹화되지 않습니다(검사 괄호는 지원되지 않음)
- 이 두 가지 모두 동일한 값을 갖습니다.
포맷 업
주의:이 고급 거의 사용되지 않는 기능입니다!
형식을 사용할 수 있습니다.
에 포함되어 있습니다.당신은 포맷터를 작성하는 방법을 볼 수 있습니다.
다음과 같이 사용되어야 합니다.:
class SM2_Formatter{ // called once before any menu is processed to allow object initialization function initialize() { } // called to open the menu list function startList($aPage, $aUrl) { } // called to open the menu item function startItem($aPage, $aUrl, $aCurrSib, $aSibCount) { } // called to close the menu item function finishItem() { } // called to close the menu list function finishList() { } // called once after all menu has been processed to allow object finalization function finalize() { } // called once after finalize() if the SM2_NOOUTPUT flag is used function getOutput() { }};