Jeszcze jeden blog o programowaniu

Radosne twórczości leniwego programisty

Drupal 6 – Własny blok zmiany języka

leave a comment »

Domyślny blok „Przełączanie języków” nie posiada zbyt ciekawych możliwości formatowania. Często tego typu elementy opisuje się w HTML na liście, co później znacznie ułatwia dla tej struktury określanie kaskadowych arkuszy stylów. Poniżej  sposób na zastosowanie swojego bloku bazujący na module locale domyślnie dostarczanym z Drupalem:

<?php
/**
* Implements hook_block();
*/
function hook_block($op = 'list', $delta = 0, $edit = array()) {
  if ($op == 'list') {
    $blocks['custom_language_switcher'] = array(
      'info' => t('Custom Language Switcher'),
    );
  return $blocks;
} else if ($op == 'view') {
  switch ($delta) {
    case 'custom_language_switcher':
      if (variable_get('language_count', 1) > 1
        && variable_get('language_negotiation', LANGUAGE_NEGOTIATION_NONE) != LANGUAGE_NEGOTIATION_NONE) {
        $path = drupal_is_front_page() ? '<front>' : $_GET['q'];
        $languages = language_list('enabled');
        $links = array();
        foreach ($languages[1] as $language)
          $links[$language->language] = array(
            'href' => $path,
            'title' => $language->native,
            'language' => $language,
            'attributes' => array('class' => 'language-link'),
          );
        drupal_alter('translation_link', $links, $path);

        $block = array(
          'subject' => t('Custom Language Switcher'),
          'content' => _custom_get_language_switcher($links)
        );
      }
      break;
    }
    return $block;
  }
}

function _custom_get_language_switcher($links = array()) {
  global $language;
  $html = '';
  if (count($links)) {
    $html = '<ul class="language-switcher">';
    foreach ($links as $key => $value) {
    $active = '';
      if ($key == $language->language)
        $active = ' class="active"';
      $html .= "\t\t" . '<li' . $active . '><a href="' . url($value['href'], array('language' => $value['language'])) . '"' . $active . '>' . $value['title'] . '</a></li>' . "\n";
    }
    $html .= "\t" . '</ul>' . "\n";
  }
  return $html;
}
Reklamy

Written by filipgorczynski

2012.10.12 @ 18:56:26

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

%d blogerów lubi to: