Vreau ca la finalizarea comenzii sa nu mai fie obligatorie completarea casutei codului postal.
Am gasit pe forum o explicatie:
-you have to modify the value of the is_required field in the eav_attribute table for postal code to 0
-remove all the ‘class="required”’ instances that you have in your templates for th postal code field
-for the checkout to work you have to override a model: checkout/Model/Type/OnePage.php
N-am reusit prima parte, nu ma pricep la SQL, restul le-am rezolvat.
Poate cineva sa ma indrume?
Mersi.
am facut chestia asta dar tot imi cere cod postal.
attribute id 14 este default shipping, de fapt id 28 este postcode, l-am setat required 0 si nimic.
EDIT: SOLVED
ok, s-a rezolvat problema.
1. in phpmyadmin
UPDATE eav_attribute SET is_required = 0 WHERE attribute_id = 28;
2. am sters
<span class="required">*</span>
din urmatoarele fisiere, la zip/postal code:
.../template/checkout/onepage/billing.phtml
.../template/checkout/onepage/shipping.phtml
.../template/customer/address/edit.phtml
3. in aceleasi fisiere, la zip/postal code am inlocuit:
4. am copiat fisierul /app/code/core/Mage/Customer/Model/Address/Abstract.php si l-am pus in /app/code/local/Mage/Customer/Model/Address/
am comentat urmatoarele linii de cod:
/* if (!Zend_Validate::is($this->getPostcode(), 'NotEmpty')) { $errors[] = $helper->__('Please enter zip/postal code.'); } */
UPDATE eav_attribute SET is_required = 0 WHERE attribute_id = 28;
Banuiesc ca attribute_id==28 este numai pentru `entity_type_id`==2, adica “customer_address” din tabela `eav_entity_type`.
Trebuie sa mai faci update si pe `entity_type_id`==12(order_address).
Campul `is_required` este folosit in special in admin cand sunt randate automat attributele/fields.
Mai corect:
UPDATE `eav_attribute` SET `is_required`=0 WHERE `attribute_code`="postcode" AND (`entity_type_id`=2 OR `entity_type_id`="12");
La primele versiuni de Magento erau 3 sau chiar 4 ‘entity types’ folosite in general pentru adrese.
Ca sa fim mai siguri:
UPDATE `eav_attribute`, `eav_entity_type` SET `eav_attribute`.`is_required`=0 WHERE `eav_attribute`.`attribute_code`="postcode" AND (`eav_entity_type`.`entity_type_code`="customer_address" OR `eav_entity_type`.`entity_type_code`="order_address") AND `eav_attribute`.`entity_type_id`=`eav_entity_type`.`entity_type_id`;
Cel mai usor ar fi sa rulezi odata un action dintr-un controller cu urmatorul cod:
am facut chestia asta dar tot imi cere cod postal.
attribute id 14 este default shipping, de fapt id 28 este postcode, l-am setat required 0 si nimic.
EDIT: SOLVED
ok, s-a rezolvat problema.
1. in phpmyadmin
UPDATE eav_attribute SET is_required = 0 WHERE attribute_id = 28;
2. am sters
<span class="required">*</span>
din urmatoarele fisiere, la zip/postal code:
.../template/checkout/onepage/billing.phtml
.../template/checkout/onepage/shipping.phtml
.../template/customer/address/edit.phtml
3. in aceleasi fisiere, la zip/postal code am inlocuit:
4. am copiat fisierul /app/code/core/Mage/Customer/Model/Address/Abstract.php si l-am pus in /app/code/local/Mage/Customer/Model/Address/
am comentat urmatoarele linii de cod:
/* if (!Zend_Validate::is($this->getPostcode(), 'NotEmpty')) { $errors[] = $helper->__('Please enter zip/postal code.'); } */
Cam asta a fost. Sper sa ajute si pe altii.
nu ma descurc in phpmyadmin unde ai postat acel cod in ce rubrica? am gasit eav_attribute_set dar nu stiu cum sa pun codul poti fii mai explicit sau cel putin pentru cei care sunt la inceput ca mine. cu respect!
Nu le mai stiu nici eu pe de rost ca a trecut mult timp dar parca in tab-ul SQL ai treaba. Acolo rulezi query-urile. Sper.
Fa backup si apoi bijutereste.
Nu le mai stiu nici eu pe de rost ca a trecut mult timp dar parca in tab-ul SQL ai treaba. Acolo rulezi query-urile. Sper.
Fa backup si apoi bijutereste.
ms de info dar nu m-am descurcat
am intrat in mgnt_eav_attribute_set, apoi SQL
acolo aveam deja acest cod:1 SELECT * FROM `mgnt_eav_attribute_set` WHERE 1
apoi am bagat codul 2 UPDATE eav_attribute SET is_required = 0 WHERE attribute_id = 28;
Explicatiile mele de mai sus sunt vechi, valabile la o versiune mai veche de Magento.
Ultima versiune de Magento are optiunea asta in admin, adica sa selectezi tarile pentru care nu e obligatoriu codul postal, nu mai trebuie sa faci hack-uri prin sql si linii de cod.