it-swarm-korea.com

메뉴에 추가 정보를 추가하려면 어떻게해야합니까?

표준 메뉴 모듈 (Drupal 6, BTW)에서 관리되는 몇 가지 메뉴가 있습니다. CSS를 통해 "새로 만들기"배너 표시를 제어하기 위해 메뉴 항목을 편집 할 때 확인란을 추가하고 싶습니다 (확인란이 켜져있는 항목에 대한 클래스 추가).

내 확인란을 다음과 같은 양식으로 가져올 수 있습니다.

function mymodule_form_menu_edit_item_alter(&$form, &$form_state) {
  $form['menu']['newbanner'] = array(
    '#title' => 'New banner',
    '#type' => 'checkboxes',
    '#description' => "Add a 'New' banner to this item?",
    '#options' => array( 'new_banner' => t("This item is new") )
    );
}

그러나 실제로 내 확인란의 상태를 저장하고 사용하는 방법을 잘 모르겠습니다. mymodule_form_menu_edit_item_submit() 함수를 만드는 것으로 시작하고 싶습니까? 그러나 데이터베이스 안팎으로 내 정보를 가져 와서 프런트 엔드에서 생성 된 메뉴에 클래스를 추가하는 데 어떻게 사용합니까?

3
Dougal Campbell

지금까지 작성한 코드는 정확합니다. 저장된 설정을 가져 오기위한 코드와이를 저장하기위한 코드 만 추가하면됩니다.

function mymodule_form_menu_edit_item_alter(&$form, &$form_state) {
  // Get the mlid ID of the menu item.
  $mlid = $form['menu']['mlid']['#value'];

  $form['menu']['newbanner'] = array(
    '#title' => 'New banner',
    '#type' => 'checkboxes',
    '#description' => "Add a 'New' banner to this item?",
    '#default_value' => variable_get("mymodule_newbanner_$mlid", 0),
    '#options' => array('new_banner' => t("This item is new")),
  );

  $form['#submit'][] = 'mymodule_menu_item_submit';
}

function mymodule_menu_item_submit($form, &$form_state) {
  $item = &$form_state['values']['menu'];
  // Get the last ID inserted in the table.
  if (empty($item['mlid'])) {
    $item['mlid'] = db_last_insert_id('menu_links', 'mlid');
  }

  variable_set('mymodule_newbanner_' . $item['mlid'], $item['newbanner']);
}

메뉴 항목이 처음 생성 될 때 mlid는 0이 될 수 있습니다. 이 경우 양식 제출 핸들러는 menu_link_save () 를 사용하여 테이블에 메뉴 항목을 저장하는 menu.module에 의해 추가 된 양식 제출 핸들러 후에 실행되므로 테이블에서이를 가져옵니다.

3
kiamlaluno

행 수준 데이터를 변수 테이블에 추가하지 마십시오. 전체 변수 테이블은 모든 페이지에서 캐시되고로드되어 각 페이지 요청의 메모리 공간에 추가됩니다.

이 경우 저장된 모든 메뉴 항목에 대해 변수가 생성되어 빠르게 추가 될 수 있습니다. 이 개별 사례가 그다지 많은 추가 데이터를 추가하지 못할 수도 있지만 많은 모듈이 변수 테이블을 데이터 덤프 장소로 사용했다고 상상해보십시오.

일반적으로 데이터에 여러 행이있는 경우 별도의 테이블을 사용해야합니다.

0
zroger

메뉴 속성 모듈을 살펴볼 수 있습니다.

이렇게하면 css 또는 jquery로 대상으로 지정할 수있는 클래스 및 ID를 포함하여 메뉴 항목에 다양한 추가 속성을 설정할 수 있습니다.

이 모듈에 대한 자세한 정보 (프로젝트 페이지에서) :

이 간단한 모듈을 사용하면 id, 이름, 클래스, 스타일 및 rel과 같은 메뉴 항목에 대한 몇 가지 추가 속성을 지정할 수 있습니다.

이 모듈은 다음과 같은 경우에 사용해야합니다.

  • 사이트를 통한 PageRank의 흐름을 조각하기 위해 특정 메뉴 항목을 "따르지 않기"를 원합니다.
  • JQuery를 사용하여 쉽게 선택할 수 있도록 메뉴 항목에 ID를 부여하려고합니다.
  • 메뉴 항목에 추가 클래스 또는 스타일을 추가하려는 경우

모듈은 현재 각 메뉴 항목에 대해 다음 속성을 설정할 수 있습니다.

  • 신분증
  • 이름
  • 표적
  • Rel
  • 수업
  • 스타일
  • 액세스 키
0
Dave