您在這裡

如何修改 Drupal 6 版型,在 body 中插入語系的 class

tky's 的頭像
tky 在 2014-07-17 (四) 09:50 發表

最近接到一個丟不掉的賽差,得讓一個網站有雙語切換的功能。本來以為說裝個 i18n 模組就可以搞定,卻沒想到前任網管使用的版型完全不支援語言轉換,主選單綁死無法切換,又缺乏相關的 CSS tag 可用,想把東西藏起來都辦不到。真的是(以下省略不雅語言 500 字....)

在不能換版型的情況下,基本上就是改版型程式碼,至少讓它在不同語系下可以在 body 處生出語系代碼,讓我可以用 CSS 來做簡易的 hack。
麻煩是,這網站是 D6 的

是 D6 的
是 D6 的
是 D6 的
是 D6 的
是 D6 的
是 D6 的
是 D6 的
是 D6 的
是 D6 的
..............

阿我早忘記 D6 該怎麼弄這部份了!

有沒有人知道這要怎麼處理,或者那兒有簡易教程呢? for D6 的喔。

Danny,謝了,我會試試看。不過這模組看來是處理內容而非版型的。

我目前遇到的主要困難在於,版型把 menu 寫死在 page.tpl 裏面,選單項目又不支援語系轉換,所以切到英語版本的時候,中文選單仍會出現 Orz。
我希望透過 CSS 在英文版中把主選單隱藏起來,另外用區塊來顯示英語選單。(好啦,我知道這是一個很懶的作法....)
只是說這版型沒有在任何地方提供語系脈絡的 CSS 類別,讓我連這個作法都辦不到。

我需要的是在 page.tpl 中插入一小段程式碼,讓 body 可以隨語系轉換而有 zh-hant 或 en 這樣的 class 可用,如此就可以解決我的問題了。

有用過 Zen 的人一定可以明白我在講啥;習慣用 Zen 的人就可以知道我現在有多痛苦。

tky

看第四行:
http://cgit.drupalcode.org/drupal/tree/themes/garland/page.tpl.php?h=6.x#n4

假如,你是使用了很隨便的版型,比如這樣的


你可以
language ?>">

--------------------------

假如是類似的:
http://cgit.drupalcode.org/drupal/tree/themes/garland/page.tpl.php?h=6.x...

應該更簡單,可以直接在 template.php 找相應的 FUNCTION 加進入

--------------------------

不需要理會 IE6 的更簡單:

[lang="zh-hant"] .here-is-the-menu-class-name { display:none }

Ref: http://caniuse.com/#feat=css-sel2

--------------------------

既然你的 MENU 寫死了,不如直接點

<?php
if($language->language != 'en') {
echo '中文';
}
else {
echo "ENG";
}
?>

突然想到你是版型問題,有可能上面的方式,還是不行。試試看,不行就只好改template了。

不過你也可以小改template 配合context 一起用,讓context可以加上 body class 就行了。

附註: zen theme, body class 的產生,不是在page.tpl, 所以如果你的問題在page.tpl, 用context 加上body class , 估計是可行的。

Danny,謝了,我會試試看。不過這模組看來是處理內容而非版型的。

我目前遇到的主要困難在於,版型把 menu 寫死在 page.tpl 裏面,選單項目又不支援語系轉換,所以切到英語版本的時候,中文選單仍會出現 Orz。
我希望透過 CSS 在英文版中把主選單隱藏起來,另外用區塊來顯示英語選單。(好啦,我知道這是一個很懶的作法....)
只是說這版型沒有在任何地方提供語系脈絡的 CSS 類別,讓我連這個作法都辦不到。

我需要的是在 page.tpl 中插入一小段程式碼,讓 body 可以隨語系轉換而有 zh-hant 或 en 這樣的 class 可用,如此就可以解決我的問題了。

有用過 Zen 的人一定可以明白我在講啥;習慣用 Zen 的人就可以知道我現在有多痛苦。

tky

看第四行:
http://cgit.drupalcode.org/drupal/tree/themes/garland/page.tpl.php?h=6.x#n4

假如,你是使用了很隨便的版型,比如這樣的


你可以
language ?>">

--------------------------

假如是類似的:
http://cgit.drupalcode.org/drupal/tree/themes/garland/page.tpl.php?h=6.x...

應該更簡單,可以直接在 template.php 找相應的 FUNCTION 加進入

--------------------------

不需要理會 IE6 的更簡單:

[lang="zh-hant"] .here-is-the-menu-class-name { display:none }

Ref: http://caniuse.com/#feat=css-sel2

--------------------------

既然你的 MENU 寫死了,不如直接點

<?php
if($language->language != 'en') {
echo '中文';
}
else {
echo "ENG";
}
?>

突然想到你是版型問題,有可能上面的方式,還是不行。試試看,不行就只好改template了。

不過你也可以小改template 配合context 一起用,讓context可以加上 body class 就行了。

附註: zen theme, body class 的產生,不是在page.tpl, 所以如果你的問題在page.tpl, 用context 加上body class , 估計是可行的。