Я использую magento и создаю продукт. Есть ли способ связи с настраиваемым примером: mystore.com/bedding-sheets
скажем, я хочу отправить другу ссылку на лист размером 250 * 250 см, я бы подумал, что ссылка может быть: mystore.com/bedding-sheets?attribute496=1 (за исключением того, что это не так)
<dl class="last"> <dt><label>Size<span class="required"> *</span></label></dt> <dd class="last"> <select class="required-entry super-attribute-select" id="attribute496" name="super_attribute[496]"> <option value="">Choose option...</option> <option value="4">200*200cm</option> <option value="3">200*230cm</option> <option value="2">200*250cm</option> <option value="1">250*250cm</option></select> </dd> </dl>
Кто-нибудь знает, можно ли создать такую ссылку?
EDIT: Так что я смог узнать, как добавить элемент в свою корзину, используя / checkout / cart / add? Product = 47 & qty = 1 & super_attribute [496] = 4
однако я хочу, чтобы пользователь получил предварительный просмотр предмета, который они получили, вместо того, чтобы просто сбрасывать его в корзину.
Это невозможно сделать без внесения изменений в Magento.
Теперь предположим, что вы хотели предопределить выбранные опции поля выбора в URL-адресе:
Сначала вам нужно переписать блок Mage_Catalog_Block_Product_View_Options_Type_Select . (Я предполагаю, что вы уже создали свой собственный модуль – у меня нет и вам нужна помощь, чтобы сообщить мне)
Для этого вам нужно добавить эту запись в свой файл config.xml:
<config> <global> <blocks> <catalog> <rewrite> <product_view_options_type_select>YourCompany_YourModuleName_Product_View_Options_Type_Select</product_view_options_type_select> </rewrite> </catalog> </blocks> </global> </config>
Затем добавьте класс YourCompany_YourModuleName_Product_View_Options_Type_Select, которому необходимо расширить Mage_Catalog_Block_Product_View_Options_Type_Select .
В этом классе вы должны теперь перезаписать функцию getValuesHtml () . Чтобы начать, вы должны скопировать его из класса, который вы расширяете.
В этой функции вы должны найти этот foreach
:
foreach ($_option->getValues() as $_value) { $priceStr = $this->_formatPrice(array( 'is_percent' => ($_value->getPriceType() == 'percent') ? true : false, 'pricing_value' => $_value->getPrice(true) ), false); $select->addOption( $_value->getOptionTypeId(), $_value->getTitle() . ' ' . $priceStr . '' ); }
После этого вы добавляете:
$standardValue = $this->getRequest()->getParam($_option->getid()); //Mage::log("Option Name: "$_option->getid()); $select->setValue($standardValue);
Это должно сделать это. К сожалению, я не могу проверить это прямо сейчас. Поэтому дайте мне знать, если вы столкнулись с проблемами.
Я не уверен, что $_option->getid()
– это правильное имя для вашего параметра. Но вы можете попытаться это выяснить, если вы прокомментируете одну строку, которую я прокомментировал для вас в списке кода сверху. В вашей установке Magento откройте файл var / log / system.log, где теперь должно появиться имя ваших параметров URL.
Теперь, когда вы знаете, как назвать параметры URL, вы можете делать именно то, что вы хотели: url / to / product? Option_id = value_id
PS: Если вы спросите себя, почему мы создаем новый класс, а не меняем его непосредственно в ядре Magento: мы делаем это, чтобы предотвратить проблемы при обновлении до новой версии Magento.
Надеюсь, я смогу помочь.