森林之原
五月 22, 2012, 10:12:47 am *
歡迎光臨, 訪客. 請先 登入註冊一個帳號.

請輸入帳號, 密碼以及預計登入時間
新聞: 官方釋出 SMF 2.0 beta。繁體中文已經完成。請到 SMF 的版面下載測試。如有問題請通知。
 
   首頁   說明 搜尋 日曆 登入 註冊  
頁: [1]   向下
  寄送主題  |  列印  
作者 主題: [修改][討論]中文地址 - 格式, 顯示和修改  (閱讀 10618 次)
0 會員 以及 1 訪客 正在閱讀本篇主題.
seethrou
訪客
« 於: 九月 12, 2005, 03:14:30 pm »

中文地址格式的顯示,和修改

之前做了些中文化的工作,因為近期一段時間不穩定,放下了沒有完成,
其中之一是,地址顯示的中文化修改試驗,大致上是可以用的,不過還需要其他的細緻配合,
現在先放上來,希望有興趣的朋友一起討論,加以改善,大家一同分享成果!

現在這修改主要針對是,在新會員登記時的資料登記表格,
經修改後的效果,可在下面圖像 chinese_login.gif 中看到,修改時間順利的約用十分鍾。

不過在修改前,請用以下的準備,也是我一般修改的習慣
---------------------------------------------------------------------------------
1.  在做任何動作之前,請先備份 !!!!!!!!!!!!!

2.  在中文和英文語系,都分開使用不同的佈景模板,在這修改更加要這樣,可則會互相干擾

3.  肯定要用「優先取代」


以下修改,是在 v1.2.6 試驗的
-----------------------------------------

需修改檔案,原檔案在
 /includes/templates/template_default/templates tpl_login_default.php

把它複製到
 /includes/templates/YOUR_TEMPLATE/templates tpl_login_default.php

修改行號 128 至 135 ,其實只是姓氏和名字在表格上下的對掉
程式碼:
        <tr>
          <td class="main"><?php echo ENTRY_FIRST_NAME?></td>
          <td class="main"><?php echo zen_draw_input_field('firstname'''zen_set_field_length(TABLE_CUSTOMERS'customers_firstname''40')) . '&nbsp;' . (zen_not_null(ENTRY_FIRST_NAME_TEXT) ? '<span class="inputRequirement">' ENTRY_FIRST_NAME_TEXT '</span>'''); ?></td>
        </tr>
        <tr>
          <td class="main"><?php echo ENTRY_LAST_NAME?></td>
          <td class="main"><?php echo zen_draw_input_field('lastname'''zen_set_field_length(TABLE_CUSTOMERS'customers_lastname''40')) . '&nbsp;' . (zen_not_null(ENTRY_LAST_NAME_TEXT) ? '<span class="inputRequirement">' ENTRY_LAST_NAME_TEXT '</span>'''); ?></td>
        </tr>

修改後成為
程式碼:
        <tr>
          <td class="main"><?php echo ENTRY_LAST_NAME?></td>
          <td class="main"><?php echo zen_draw_input_field('lastname'''zen_set_field_length(TABLE_CUSTOMERS'customers_lastname''40')) . '&nbsp;' . (zen_not_null(ENTRY_LAST_NAME_TEXT) ? '<span class="inputRequirement">' ENTRY_LAST_NAME_TEXT '</span>'''); ?></td>
        </tr>
        <tr>
          <td class="main"><?php echo ENTRY_FIRST_NAME?></td>
          <td class="main"><?php echo zen_draw_input_field('firstname'''zen_set_field_length(TABLE_CUSTOMERS'customers_firstname''40')) . '&nbsp;' . (zen_not_null(ENTRY_FIRST_NAME_TEXT) ? '<span class="inputRequirement">' ENTRY_FIRST_NAME_TEXT '</span>'''); ?></td>
        </tr>

修改行號 194
程式碼:
    <td class="plainBox"><?php require(DIR_WS_BLOCKS 'blk_address_format_us.php'); ?></td>

成為
程式碼:
    <td class="plainBox"><?php require(DIR_WS_BLOCKS 'blk_address_format_tw.php'); ?></td>

其實是要調動下面新加入的地址格式檔案 blk_address_format_tw.php, 它也是表格上下的對掉而已。


新增的檔案應該放在  - 注意這是沒有優先取代的,請備份
---------------------------------------------------------------------------------------
 /includes/blocks/blk_address_format_tw.php

blk_address_format_tw.php 的檔案內容是
程式碼:
<table border="0" cellspacing="0" cellpadding="2" width="100%">
  <tr>
    <td class="main"><?php echo ENTRY_COUNTRY?></td>
    <td class="main">  <?php echo zen_get_country_list('country'$selected_country) . '&nbsp;' . (zen_not_null(ENTRY_COUNTRY_TEXT) ? '<span class="inputRequirement">' ENTRY_COUNTRY_TEXT '</span>'''); ?></td>
  </tr>
<?php
  
if (ACCOUNT_SUBURB == 'true') {
?>

  <tr>
    <td class="main"><?php echo ENTRY_STATE?></td>
    <td class="main">
<?php
    
if ($process == true) {
      if (
$entry_state_has_zones == true) {
        
$zones_array = array();
        
$zones_query "select zone_name
                        from " 
TABLE_ZONES "
                        where zone_country_id = '" 
. (int)$country "'
                        order by zone_name"
;

        
$zones_values $db->Execute($zones_query);

        while (!
$zones_values->EOF) {
          
$zones_array[] = array('id' =>$zones_values->fields['zone_name'], 'text' =>$zones_values->fields['zone_name']);
          
$zones_values->MoveNext();
        }

        echo 
zen_draw_pull_down_menu('state'$zones_array$zone_name);

      } else {
        echo 
zen_draw_input_field('state'''zen_set_field_length(TABLE_ADDRESS_BOOK'entry_state''40'));
      }
    } else {
      echo 
zen_draw_input_field('state'''zen_set_field_length(TABLE_ADDRESS_BOOK'entry_state''40'));
    }

    if (
zen_not_null(ENTRY_STATE_TEXT)) echo '&nbsp;<span class="inputRequirement">' ENTRY_STATE_TEXT '</span>';?>
      </td>
  </tr>
<?php
  
}
?>

  <tr>
    <td class="main"><?php echo ENTRY_CITY?></td>
    <td class="main"><?php echo zen_draw_input_field('city'''zen_set_field_length(TABLE_ADDRESS_BOOK'entry_city''40')) . '&nbsp;' . (zen_not_null(ENTRY_CITY_TEXT) ? '<span class="inputRequirement">' ENTRY_CITY_TEXT '</span>'''); ?></td>
  </tr>
<?php
  
if (ACCOUNT_STATE == 'true') {
?>

  <tr>
    <td class="main"><?php echo ENTRY_STREET_ADDRESS?></td>
    <td class="main"><?php echo zen_draw_input_field('street_address'''zen_set_field_length(TABLE_ADDRESS_BOOK'entry_street_address''40')) . '&nbsp;' . (zen_not_null(ENTRY_STREET_ADDRESS_TEXT) ? '<span class="inputRequirement">' ENTRY_STREET_ADDRESS_TEXT '</span>'''); ?></td>
  </tr>
<?php
  
}
?>

  <tr>
    <td class="main"><?php echo ENTRY_SUBURB?></td>
    <td class="main"><?php echo zen_draw_input_field('suburb'''zen_set_field_length(TABLE_ADDRESS_BOOK'entry_suburb''40')) . '&nbsp;' . (zen_not_null(ENTRY_SUBURB_TEXT) ? '<span class="inputRequirement">' ENTRY_SUBURB_TEXT '</span>'''); ?></td>
  </tr>
  <tr>
    <td class="main"><?php echo ENTRY_POST_CODE?></td>
<?php
  $selected_country 
= ($_POST['country']) ? $country SHOW_CREATE_ACCOUNT_DEFAULT_COUNTRY;
?>

    <td class="main"><?php echo zen_draw_input_field('postcode'''zen_set_field_length(TABLE_ADDRESS_BOOK'entry_postcode''40')) . '&nbsp;' . (zen_not_null(ENTRY_POST_CODE_TEXT) ? '<span class="inputRequirement">' ENTRY_POST_CODE_TEXT '</span>'''); ?></td>
  </tr>
</table>


另外有一快速的修改調整,在這順便一提,它會在地址目錄、和訂單等中看到的
-----------------------------------------------------------------------------------------------------------
現存在資料庫中,預設有五種地址格式,不過都不合用,所以新增第 6 種格式

#6 - 新增中文用的格式,
$lastname $firstname$cr$country$cr$state$cr$city$cr$streets$cr( $postcode )
$country / $state / $city

請使用 phpadmin 在資料庫的表格 address_format, 新增第 6 個記錄,並輸入以下的資料

address_format_id
6   

address_format
$lastname $firstname$cr$country$cr$state$cr$city$cr$streets$cr( $postcode )   

address_summary
$country / $state / $city


之後,在後台管理頁,設置國家地區
------------------------------------------------------------
=>
地區/稅金
    * 國 - 家

在國家中,去到第 11 頁,選擇 =>  Taiwan (台灣),
把 => 地址格式: 6   <== 把它設定成 6, 預設是 1


再到 =>
--------------------------------------------------------------
配置設定
    * Customer Details
       Create Account Default Country ID     Taiwan  把它設定為 Taiwan (台灣)


好了這裡的修改已經完成,您可以到 login 登錄頁面、通訊錄和新發出的訂單確認通知中,看看新的效果。
修改後的檔案亦放上,提供給大家試驗修改,有好的結果請大家回報交流!


另外還有其他需要修改調整的,如國家、地區定義的中文化等,也有電郵的問題等,有時間另文詳細討論。







[附件已被管理員刪除]
« 最後編輯時間: 十月 24, 2005, 11:59:10 am 由 seethrou » 向版主檢舉   已記錄
plone
見習生
**
離線 離線

文章: 77


« 回覆文章 #1 於: 九月 13, 2005, 01:36:09 am »

很受用,謝謝seethrou !
有一個問題:
建立帳號的頁面中,國家的下拉式選單,在修改之前會自動以「United States」為預設選項,修改之後,則以「請選擇所在地國家」
為預設顯示。
要改哪裡,才可以自動以「Taiwan」為預設的選項呢?
« 最後編輯時間: 九月 13, 2005, 01:39:57 am 由 plone » 向版主檢舉   已記錄
seethrou
訪客
« 回覆文章 #2 於: 九月 13, 2005, 05:37:45 am »

很受用,謝謝seethrou !
有一個問題:
建立帳號的頁面中,國家的下拉式選單,在修改之前會自動以「United States」為預設選項,修改之後,則以「請選擇所在地國家」
為預設顯示。
要改哪裡,才可以自動以「Taiwan」為預設的選項呢?


因為  /includes/blocks/blk_address_format_us.php 原先要檢查 => State 縣市: 的設定,

現改為以下新的
 /includes/blocks/blk_address_format_tw.php

主要是,把國家放回最後,暫時解決問題!  smiley01_053

程式碼:
<table border="0" cellspacing="0" cellpadding="2" width="100%">
  <tr>
    <td class="main"><?php echo ENTRY_STATE?></td>
    <td class="main"><?php
    
if ($process == true) {
      if (
$entry_state_has_zones == true) {
        
$zones_array = array();
        
$zones_query "select zone_name
                        from " 
TABLE_ZONES "
                        where zone_country_id = '" 
. (int)$country "'
                        order by zone_name"
;

        
$zones_values $db->Execute($zones_query);

        while (!
$zones_values->EOF) {
          
$zones_array[] = array('id' =>$zones_values->fields['zone_name'], 'text' =>$zones_values->fields['zone_name']);
          
$zones_values->MoveNext();
        }

        echo 
zen_draw_pull_down_menu('state'$zones_array$zone_name);

      } else {
        echo 
zen_draw_input_field('state'''zen_set_field_length(TABLE_ADDRESS_BOOK'entry_state''40'));
      }
    } else {
      echo 
zen_draw_input_field('state'''zen_set_field_length(TABLE_ADDRESS_BOOK'entry_state''40'));
    }

    if (
zen_not_null(ENTRY_STATE_TEXT)) echo '&nbsp;<span class="inputRequirement">' ENTRY_STATE_TEXT '</span>';?>
</td>
  </tr>
<?php
  
if (ACCOUNT_SUBURB == 'true') {
?>

  <tr>
    <td class="main"><?php echo ENTRY_CITY?></td>
    <td class="main"><?php echo zen_draw_input_field('city'''zen_set_field_length(TABLE_ADDRESS_BOOK'entry_city''40')) . '&nbsp;' . (zen_not_null(ENTRY_CITY_TEXT) ? '<span class="inputRequirement">' ENTRY_CITY_TEXT '</span>'''); ?> </td>
  </tr>
<?php
  
}
?>

  <tr>
    <td class="main"><?php echo ENTRY_STREET_ADDRESS?></td>
    <td class="main"><?php echo zen_draw_input_field('street_address'''zen_set_field_length(TABLE_ADDRESS_BOOK'entry_street_address''40')) . '&nbsp;' . (zen_not_null(ENTRY_STREET_ADDRESS_TEXT) ? '<span class="inputRequirement">' ENTRY_STREET_ADDRESS_TEXT '</span>'''); ?></td>
  </tr>
<?php
  
if (ACCOUNT_STATE == 'true') {
?>

  <tr>
    <td class="main"><?php echo ENTRY_SUBURB?></td>
    <td class="main"><?php echo zen_draw_input_field('suburb'''zen_set_field_length(TABLE_ADDRESS_BOOK'entry_suburb''40')) . '&nbsp;' . (zen_not_null(ENTRY_SUBURB_TEXT) ? '<span class="inputRequirement">' ENTRY_SUBURB_TEXT '</span>'''); ?></td>
  </tr>
<?php
  
}
?>

  <tr>
    <td class="main"><?php echo ENTRY_POST_CODE?></td>
    <td class="main"><?php echo zen_draw_input_field('postcode'''zen_set_field_length(TABLE_ADDRESS_BOOK'entry_postcode''40')) . '&nbsp;' . (zen_not_null(ENTRY_POST_CODE_TEXT) ? '<span class="inputRequirement">' ENTRY_POST_CODE_TEXT '</span>'''); ?></td>
  </tr>
  <tr>
    <td class="main"><?php echo ENTRY_COUNTRY?></td>
<?php
  $selected_country 
= ($_POST['country']) ? $country SHOW_CREATE_ACCOUNT_DEFAULT_COUNTRY;
?>

    <td class="main"><?php echo zen_get_country_list('country'$selected_country) . '&nbsp;' . (zen_not_null(ENTRY_COUNTRY_TEXT) ? '<span class="inputRequirement">' ENTRY_COUNTRY_TEXT '</span>'''); ?></td>
  </tr>
</table>
向版主檢舉   已記錄
plone
見習生
**
離線 離線

文章: 77


« 回覆文章 #3 於: 九月 13, 2005, 09:22:52 pm »

有一個問題不知道要修改哪裡:
在改之前,建立帳號的頁面有幾個輸入欄位的格式背景顏色是黃色
修改之後,輸入欄位的格式背景一樣也有黃色,只是欄位不一樣。(E-MAIL,郵遞區號,電話號碼)
關於輸入欄的格子背景顏色的設定是在哪個檔?

向版主檢舉   已記錄
plone
見習生
**
離線 離線

文章: 77


« 回覆文章 #4 於: 九月 14, 2005, 11:33:41 pm »

有一個問題不知道要修改哪裡:
在改之前,建立帳號的頁面有幾個輸入欄位的格式背景顏色是黃色
修改之後,輸入欄位的格式背景一樣也有黃色,只是欄位不一樣。(E-MAIL,郵遞區號,電話號碼)
關於輸入欄的格子背景顏色的設定是在哪個檔?
在別的電腦看就沒這個問題,可能是瀏覽器的問題
向版主檢舉   已記錄
seethrou
訪客
« 回覆文章 #5 於: 九月 17, 2005, 05:56:21 am »

顏色要在 css 改
向版主檢舉   已記錄
koku
初學者
*
離線 離線

文章: 17


« 回覆文章 #6 於: 十一月 08, 2005, 09:05:02 pm »

地址格式的修正,除了各位上述的檔案需要修正外,以下的檔案也必須做相同的修正才可cover所有的頁面
/www/shop/includes/templates/YOURTEMPLATES/templates/tpl_modules_checkout_new_address.php
/www/shop/includes/templates/YOURTEMPLATES/templates/tpl_create_account_default.php

它們分別是使用在結帳時送貨地址與登錄地址不同時輸入用的畫面,
以及會員註冊時,若有輸入錯誤,而必須再次輸入時所顯示的畫面

由於日文的姓名格式與地址格式與中文是相同的,所以我這些檔案是直接使用日文版的
若是直接使用日文版的話,則還必須上載這些檔案到你的主機
/www/shop/includes/templates/YOURTEMPLATES/templates/tpl_login_default.php
/www/shop/includes/blocks/blk_address_format_jp.php

有興趣的朋友,可下載日文版來試試看
http://osdn.dl.sourceforge.jp/zencart-jp/14573/zen-cart-v1.2.0-l10n-jp-3.zip

只是,日文版的後台也是“姓在前名在後”的顯示方式
中文版的後台卻依然是“名在前姓在後”的顯示方式
這不知要從哪裡修改
向版主檢舉   已記錄
seethrou
訪客
« 回覆文章 #7 於: 十一月 09, 2005, 01:13:26 am »

謝謝提供意見和資料!  smiley01_055

這個在後台相對來說, 只是小問題,
一般不建議更改,不是因為修改的難度,而是基於後台管理的統一和工作穩定性,

他們分散在多個檔案,而且要修改主程式,請非常小心,必須備份,
請用搜尋來找檔案,以下只舉例怎找檔案,

關鍵字
first_name
last_name
ENTRY_FIRST_NAME
ENTRY_LAST_NAME

Search String: first_name
找到其中檔案
Processing file :  /admin/customers.php

程式碼:
Line  82 -         if (strlen($customers_firstname) < ENTRY_<FIRST_NAME>_MIN_LENGTH) {
Line 356 -   if (customers_firstname == "" || customers_firstname.length < <?php echo ENTRY_<FIRST_NAME>_MIN_LENGTH?>) {
Line 357 -     error_message = error_message + "<?php echo JS_<FIRST_NAME>; ?>";
Line 509 -             <td class="main"><?php echo ENTRY_<FIRST_NAME>; ?></td>
Line 514 -       echo zen_draw_input_field('customers_firstname', $cInfo->customers_firstname, zen_set_field_length(TABLE_CUSTOMERS, 'customers_firstname', 50)) . '&nbsp;' . ENTRY_<FIRST_NAME>_ERROR;

還有很多其他的,不一一枚舉。
« 最後編輯時間: 十一月 09, 2005, 01:19:35 am 由 seethrou » 向版主檢舉   已記錄
koku
初學者
*
離線 離線

文章: 17


« 回覆文章 #8 於: 十一月 09, 2005, 01:18:20 am »

補充一點

使用日文版的檔案之後
「國家」的拉下式選單即使放在最前面
也會顯示預設值,而不是顯示「請選擇所在地國家」


seethrou大大
謝謝您的回應
剛剛用 first_name 搜尋了一下
果然關聯的檔案很多,修改似乎很麻煩,
我想還是等我功力更深之後再作修改吧 smiley01_041

日文版的討論版還有一些其他有用的外掛
等有空時,我先試過後再介紹給大家吧!
« 最後編輯時間: 十一月 09, 2005, 01:33:25 am 由 koku » 向版主檢舉   已記錄
seethrou
訪客
« 回覆文章 #9 於: 十一月 09, 2005, 04:05:26 am »

請參考,

怎樣: 作多語系國家下拉式列表,一個簡單方法解決國家名稱 (亂碼)

官網上的
Howto: Multilingual Country Dropdown List, An easy way to fix the countries naming
http://www.zen-cart.com/modules/ipb/index.php?act=ST&f=11&t=34304&s=

向版主檢舉   已記錄
頁: [1]   向上
  寄送主題  |  列印  
 
前往:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Valid XHTML 1.0! Valid CSS!