magento - 如何在 Magento 1.6.2 中添加新的州/省和城市下拉列表?

标签 magento add state city

如何在 Magento 1.6.2 中添加新的州/省和城市下拉列表?当我们选择美国作为国家/地区时,我们会找到州/省的下拉列表。但这并非适用于所有国家。

我想要的是 - 如果我选择一个国家(例如爱尔兰),它将在该国家/地区的下拉列表中显示所有州/省,如果我选择一个州/省,它将在下拉列表中显示所有城市那个州/省。我们如何才能做到这些。

我找到了一个在线添加州/省部分的链接。但是城市没有线索。这里是链接 http://www.manojyadav.co.in/magento/adding-stateprovince-india-sql-magento/

如果我能从你那里得到一个文件,我可以用我自己的替换州城市,那将是一个很大的帮助。

最佳答案

如果您想将城市配置为下拉选项,请按照以下步骤操作:
步骤
假设 MagePsycho_Citydropdown 骨架模块已经创建。
<强>1。添加填充城市的功能。
文件: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(语言环境、city_id、名称)

<强>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>
  1. 重新加载结账页面,您可以看到阿拉伯联合酋长国的城市选项

以类似的方式,您也可以为其他国家/地区配置城市选项。以类似的方式,您也可以为其他国家/地区配置城市选项 干杯。

关于magento - 如何在 Magento 1.6.2 中添加新的州/省和城市下拉列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11195216/

相关文章:

css - Magento 从特定 View 中删除 css 或 js

mysql - Magento 2重命名表元数据锁

php - magento 客户端被服务器配置拒绝

magento - 无法提取从 magento 下载的 .tgz 文件

python - 如何向包含静态预定义列表的现有 Pandas 数据框添加一列?

javascript - ReactJS - 将 Prop (状态)传递给 child 的 child

javascript - 在react.js中每3秒更改一次图像

android - 在另一个 linearLayout 中插入一个 linearLayout

android - 以编程方式向 recyclerview 添加新项目?

reactjs - 如果我没有更改状态的引用,为什么 React 会调用渲染函数?