Pergunta

Eu criei um menu com guias no meu módulo Drupal 6 personalizado. Quero posicionar uma lista suspensa HTML à direita do menu com guias na parte superior da página do meu módulo. A lista demitirá alguns eventos do AJAX na mudança, por exemplo, alterando a cláusula de limite na consulta SQL, especificando 10,20,50.100 resultados. Como posso conseguir isso no Drupal sem modelos de hackers?

Obrigado,

Foi útil?

Solução

Você poderia fazer isso substituindo theme_menu_local_tasks() dentro do seu tema:

function yourTheme_menu_local_tasks() {
  // Prepare empty dropdown to allow for unconditional addition to output below
  $dropdown = '';
  // Check if the dropdown should be added to this menu
  $inject_dropdown = TRUE; // TODO: Add checking logic according to your needs, e.g. by inspecting the path via arg()
  // Injection wanted?
  if ($inject_dropdown) {
    // Yes, build the dropdown using Forms API
    $select = array(
      '#type' => 'select',
      '#title' => t('Number of results:'),
      '#options' => array('10', '20', '50', '100'),
    );
    // Wrap rendered select in <li> tag to fit within the rest of the tabs list
    $dropdown = '<li>' . drupal_render($select) . '</li>';
  }

  // NOTE: The following is just a copy of the default theme_menu_local_tasks(),
  // with the addition of the (possibly empty) $dropdown variable output
  $output = '';
  if ($primary = menu_primary_local_tasks()) {
    $output .= "<ul class=\"tabs primary\">\n". $primary . $dropdown . "</ul>\n";
  }
  if ($secondary = menu_secondary_local_tasks()) {
    $output .= "<ul class=\"tabs secondary\">\n". $secondary ."</ul>\n";
  }

  return $output;
}

(Nota: código não testado - digitação em potencial)

Outras dicas

Como você está se referindo ao código para colocar em um módulo, o módulo deve implementar hook_theme_registry_alter(), o que permitiria ao módulo substituir a função theme_menu_local_tasks(). O módulo deve armazenar o valor do retorno de chamada anterior, para que ainda possa chamá -lo no caso da página que não deve mudar.
A implementação de um gancho no módulo permite que você tenha as guias de menu normal, uma vez que o módulo fosse desativado; Alterar o tema atual exigiria que você o alterasse mais quando quiser a funcionalidade e, se estiver usando um tema feito de outra pessoa, deve alterar o tema o tempo todo para baixar uma nova versão. Se você estiver usando mais de um tema, faça a alteração em cada tema usado.
Em geral, uma modificação para um tema exigido de um módulo deve ser feito dentro de um módulo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top