drupal กับปุ่มเปลี่ยนภาษา
April 17, 2008
ตอนลองกับ drupal5 ใช้โค๊ดนี้ไม่มีปัญหา
<?php
// modified function
function excl_translation_get_links($path = '', $query = NULL, $names = NULL) {
$current = i18n_get_lang();
$names = $names ? $names : i18n_languages('native');
foreach (array_keys(i18n_supported_languages()) as $lang){
if ($lang != $current) {
$url = translation_url($path, $lang);
$links[]= theme('i18n_link', $names[$lang], i18n_path($url, $lang) , $lang, $query);
}}
return $links;
}
$lang_list = theme('item_list', excl_translation_get_links($_GET['q'], empty($query) ? NULL : $query));
echo $lang_list;
?>แต่พอมา drupal6 จอดสนิทเลยครับ
คือ ผมอยากให้มันแสดงปุ่มภาษาเฉพาะอันที่ยังไม่ได้เลือกนะครับ เช่นตอนนี้ภาษาไทยก็ไม่ต้องแสดงปุ่มภาษาไทยออกมา แล้วก็ไม่อยากใช้ block ด้วยนะครับ เพราะผมทำ theme ใหม่หมดวางโครงไว้หมดแล้ว
ตอนนี้ใช้ drupal 6.2 ครับ
ขอบคุณครับ

เปลี่ยน
เปลี่ยน
i18n_supported_languages()เป็นlanguage_list()ส่วนi18n_get_lang()มี$languageเป็น global ให้ใช้ครับไม่สำเร็จ
ไม่สำเร็จครับ T_T
มี error มั๊ย
มี error มั๊ย
ไม่มีครับ
ไม่มีครับ หน้าขาวไปเลย
ตอนนี้พยายามทำแบบนี้อยู่ครับ
template.php
function phptemplate_locale_block() { $languages = language_list('enabled'); $links = array(); foreach ($languages[1] as $language) { $links[$language->language] = array( 'href' => $_GET['q'], 'title' => $language->native, 'language' => $language, 'attributes' => array('class' => 'language-link'), ); } // Allow modules to provide translations for specific links. // A translation link may need to point to a different path or use // a translated link text before going through l(), which will just // handle the path aliases. drupal_alter('translation_link', $links, $_GET['q']); $block = theme('links', $links, array()); return $block; }page.tpl.php
มันก็จะแสดงผลออกมาปกติ คือ2ภาษาไทยกับอังกฤษ
พอจะมีวิธีทำให้มันแสดงแค่ภาษาที่ยังไม่ได้เลือกได้ไหมครับ ลองใส่ if ดูมันก็ไม่ได้ผล เพราะเหมือนมันไปคิวรี่ซ้อนอีกทีกับตัวนี้ drupal_alter('translation_link', $links, $_GET['q']); ก็ทำให้แสดง 2 ภาษาเหมือนเดิม
ขอบคุณครับ
ใน page.tpl.php
ใน page.tpl.php น่าจะเป็น
ส่วนใน
phptemplate_locale_blockน่าจะลบภาษาอื่นออกจาก$linksหลังจากเรียกdrupal_altersites/all/themes/yourtheme/te
sites/all/themes/yourtheme/template.php
function phptemplate_locale_block($current_lang) { $languages = language_list('enabled'); $links = array(); foreach ($languages[1] as $language) { $links[$language->language] = array( 'href' => $_GET['q'], 'title' => $language->native, 'language' => $language, 'attributes' => array('class' => $language->language), ); } // Allow modules to provide translations for specific links. // A translation link may need to point to a different path or use // a translated link text before going through l(), which will just // handle the path aliases. drupal_alter('translation_link', $links, $_GET['q']); foreach($links as $linkz){ if(($linkz[language]->language)==($current_lang))continue; $links=array($linkz); } $block = theme('links', $links, array()); return $block; }sites/all/themes/yourtheme/template.php
ปล. ลองใส่เป็น <?php print theme('locale_block','$language->language'); ?> แล้วมันนิ่งครับ
ตอนนี้แสดงผลเฉพาะภาษาที่ยังไม่ได้เลือกเรียบร้อยแล้วครับ ขอบคุณครับ
ควรจะเป็น
ควรจะเป็นแบบนี้
หรือไม่ก็ไป global อยู่ใน function