最近接了母公司的兩個網站要做,開了兩次會之後總算動工了,目前正在一步步用 Drupal 把功能需求做出來。
其中有一項是要有個像 ASUS 切換語言顯示的下拉式選單,下拉式選單的部份可以用 Nice Menu 這個模組完成,語言切換則交給 Localizer 模組來負責,可是問題是 Localizer 只提供區塊,沒有提供選單~
後來我在 Customizing the ui locale switching block 找到一段程式碼,拿那個來改造。
完成品在這:

<?php
$languages=localizer_block_switchuilocale_links(variable_get('localizer_switchblock_showflags', TRUE), variable_get('localizer_switchblock_showlangname',TRUE), variable_get('localizer_switchblock_flagseparator', ' ', FALSE));
echo '<ul class="nice-menu nice-menu-down">';
echo '<li class="menuparent menu-path-node-add"><a>' . t('Language') . '</a><ul>';
foreach($languages as $i=>$link) {
  echo '<li>' . $link . '</li>';
}
echo '</ul></li></ul>';
?>

使用方法很簡單,新增一個區塊,區塊內容填入上面那段程式碼,輸入格式選 PHP Code 即可。
然後把這個區塊塞入適當的區域即可。

重點就是那個 class= 那一串,要寫出 Nice Menu 可以處理的形式~

另外,如果真的一定要用 select 作下拉式選單的話,就填入下面的程式:

<?php
$languages=localizer_block_switchuilocale_links(variable_get('localizer_switchblock_showflags', TRUE), variable_get('localizer_switchblock_showlangname',TRUE), variable_get('localizer_switchblock_flagseparator', ' ', FALSE));

echo '<select onchange="location=this.options[this.selectedIndex].value">';
echo '<option selected="" value="#">' . t('Language') . '</option>';
foreach($languages as $i=>$link) {
  $split=array();
  preg_match('/ href="(.*)".*>(.*)</U', $link, $split);
  echo '<option value="' . $split[1] . '">' . $split[2] . '</option>';
}
echo '</select>';

?>

本來我是直接在 option 裡面加 onClick 事件,不過我覺得用 select 的 onChange 比較好。
創作者介紹

失落的技術

HACGIS 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • 新手
  • 这段代码真好,不知道是否能够将这个功能添加到localizer中?,也就是点localizer的change后,实现区块,内容,菜单的同时转换?而不是单建一个菜单进行转换? 多谢

    版主回覆:(06/03/2008 05:44:09 AM)


    你可以隨便拿去用~
    至於localizer那邊,目前他們面臨Drupal 6的模組改寫,所以我無意去建議原作者加入這些東西。

找更多相關文章與討論