市区町村をドロップダウン オプションとして設定する場合は、次の手順に従ってください。
手順スケルトン モジュールが既に作成されている
と仮定します。1.都市に人口を配置するための機能を追加します。
ファイル:
コード:MagePsycho_Citydropdown
app/code/local/MagePsycho/Citydropdown/Helper/Data.php
<?php
/**
* @category MagePsycho
* @package MagePsycho_Citydropdown
* @author magepsycho@gmail.com
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
class MagePsycho_Citydropdown_Helper_Data extends Mage_Core_Helper_Abstract
{
public function getUaeCities()
{
$helper = Mage::helper('directory');
$cities = array(
$helper->__('Abu Dhabi'),
$helper->__('Ajman'),
$helper->__('Al Ain'),
$helper->__('Dubai'),
$helper->__('Fujairah'),
$helper->__('Ras al Khaimah'),
$helper->__('Sharjah'),
$helper->__('Umm al Quwain'),
);
return $cities;
}
public function getUaeCitiesAsDropdown($selectedCity = '')
{
$cities = $this->getUaeCities();
$options = '';
foreach($cities as $city){
$isSelected = $selectedCity == $city ? ' selected="selected"' : null;
$options .= '<option value="' . $city . '"' . $isSelected . '>' . $city . '</option>';
}
return $options;
}
}
注: データベース テーブルに都市を入力して、より動的にすることもできます。たとえば、地域に似た次のテーブルを作成できます:
+ directory_country_city (city_id, country_id, code, default_name)
+ directory_country_city_name (locale, city_id, name)
2. javascript
2.1を使用して、入力テキストの都市フィールドをドロップダウンに置き換えます。
ファイル:app/design/frontend/[package]/[theme]/template/checkout/onepage/billing.phtml
コード: 上記のテンプレートの最後に次のコードを追加します。
<script type="text/javascript">
<?php
$helper = Mage::helper('citydropdown');
$address = Mage::getSingleton('checkout/session')->getQuote()->getBillingAddress();
$defaultCity = $address->getCity();
$citiesOptions = addslashes($helper->getUaeCitiesAsDropdown($defaultCity));
?>
var billingCity = '<?php echo $defaultCity ; ?>';
function billingSwitchCityField(){
var selectVal = jQuery('#billing\\:country_id option:selected').val();
if(selectVal == "AE"){
jQuery("#billing\\:city")
.replaceWith('<select id="billing:city" name="billing[city]" class="required-entry">' +
'<option value=""></option>' +
'<?php echo $citiesOptions; ?>' +
'</select>');
}else{
jQuery("#billing\\:city")
.replaceWith('<input type="text" class=" input-text required-entry absolute-advice " title="City" value="' + billingCity + '" id="billing:city" name="billing[city]" autocomplete="off">');
}
}
jQuery(document).ready(function(){
billingSwitchCityField();
jQuery('#billing\\:country_id').change(function() {
billingSwitchCityField();
});
})
</script>
2.2
ファイル:app/design/frontend/[package]/[theme]/template/checkout/onepage/shipping.phtml
コード: 上記のテンプレートの最後に次のコードを追加します
<script type="text/javascript">
<?php
$helper = Mage::helper('citydropdown');
$address = Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress();
$defaultCity = $address->getCity();
$citiesOptions = addslashes($helper->getUaeCitiesAsDropdown($defaultCity));
?>
var shippingCity = '<?php echo $defaultCity ; ?>';
function shippingSwitchCityField(){
var selectVal = jQuery('#shipping\\:country_id option:selected').val();
if(selectVal == "AE"){
jQuery("#shipping\\:city")
.replaceWith('<select id="shipping:city" name="shipping[city]" class="required-entry">' +
'<option value=""></option>' +
'<?php echo $citiesOptions; ?>' +
'</select>');
}else{
jQuery("#shipping\\:city")
.replaceWith('<input type="text" class=" input-text required-entry absolute-advice " title="City" value="' + shippingCity + '" id="shipping:city" name="shipping[city]" autocomplete="off">');
}
}
jQuery(document).ready(function(){
shippingSwitchCityField();
jQuery('#shipping\\:country_id').change(function() {
shippingSwitchCityField();
});
})
</script>
- チェックアウト ページをリロードすると、アラブ首長国連邦の都市オプションが表示されます
同様の方法で、他の国の都市オプションも設定できます。同様の方法で、他の国の都市オプションも設定できます。