#php #forms #magento #magento-1.8 #shipping
#php #формы #magento #magento-1.8 #Доставка
Вопрос:
В корзине покупок Magento всегда есть форма по умолчанию для оценки стоимости доставки на странице корзины покупок, и эти поля всегда обязательны для заполнения,
Country
State/Province
Poscode
Как я могу упростить эту форму, требуя только ввода страны?
Это список форм кода оценки доставки,
<ul class="form-list">
<li>
<label for="country" class="required"><?php echo $this->__('Country') ?><em>*</em></label>
<div class="box-input">
<?php echo Mage::getBlockSingleton('directory/data')->getCountryHtmlSelect($this->getEstimateCountryId()) ?>
</div>
</li>
<?php if($this->getStateActive()): ?>
<li>
<label for="region_id"<?php if ($this->isStateProvinceRequired()) echo ' class="required"' ?>><?php if ($this->isStateProvinceRequired()) echo '<em>*</em>' ?><?php echo $this->__('State/Province') ?></label>
<div class="box-input">
<select id="region_id" name="region_id" title="<?php echo $this->__('State/Province') ?>" style="display:none;"<?php echo ($this->isStateProvinceRequired() ? ' class="validate-select"' : '') ?>>
<option value=""><?php echo $this->__('Please select region, state or province') ?></option>
</select>
<script type="text/javascript">
//<![CDATA[
$('region_id').setAttribute('defaultValue', "<?php echo $this->getEstimateRegionId() ?>");
//]]>
</script>
<input type="text" id="region" name="region" value="<?php echo $this->escapeHtml($this->getEstimateRegion()) ?>" title="<?php echo $this->__('State/Province') ?>" class="input-text" style="display:none;" />
</div>
</li>
<?php endif; ?>
<?php if($this->getCityActive()): ?>
<li>
<label for="city"<?php if ($this->isCityRequired()) echo ' class="required"' ?>><?php if ($this->isCityRequired()) echo '<em>*</em>' ?><?php echo $this->__('City') ?></label>
<div class="box-input">
<input class="input-text<?php if ($this->isCityRequired()):?> required-entry<?php endif;?>" id="city" type="text" name="estimate_city" value="<?php echo $this->escapeHtml($this->getEstimateCity()) ?>" />
</div>
</li>
<?php endif; ?>
<li>
<label for="postcode"<?php if ($this->isZipCodeRequired()) echo ' class="required"' ?>><?php if ($this->isZipCodeRequired()) echo '<em>*</em>' ?><?php echo $this->__('Zip/Postal Code') ?></label>
<div class="box-input">
<input class="input-text validate-postcode<?php if ($this->isZipCodeRequired()):?> required-entry<?php endif;?>" type="text" id="postcode" name="estimate_postcode" value="<?php echo $this->escapeHtml($this->getEstimatePostcode()) ?>" />
</div>
</li>
</ul>
если я удалю поля State / Province и Poscode вручную, эта форма не будет работать.
Есть идеи, что я могу сделать, чтобы требовалось только поле страны?
Но мне нужно, чтобы штат / провинция и Poscode были обязательны на моей странице оформления заказа…
Файл CSV.
Country Region/State Zip/Postal Code # of Items (and above) Shipping Price
FRA * * 1 12
FRA * * 12 0
GBR * * 1 25
GBR * * 12 0
Комментарии:
1. мой вопрос в том, как методы доставки будут возвращать оценку без состояния / почтового индекса? Вы просто используете табличные или фиксированные тарифы для доставки?
2. итак, в таблице тарифов вы должны использовать * для штатов и почтовых индексов и указывать цены только для кодов стран ?.. или вы используете ту же цену для штатов и не используете * в csv?
3. вы могли бы просто создать скрытые поля состояния и почтового индекса с поддельными данными в этой форме .. затем с поддельным почтовым индексом и состоянием и возвращаемой реальной страной вы должны получить ответ. Не уверен, что это сработает, но попробовать стоит.
4. просто мусор.. например, почтовый индекс будет 99999 и штатом Техас, если страна действительна, и вы используете * для штата и почтового индекса, тогда Magento должен вернуть котировку из таблицы rate. Это относится только к странице корзины, а не к оформлению заказа
5. дайте мне знать, если это сработает, как я уже сказал, я никогда этого не пробовал, но теоретически это должно сработать