Можно ли сделать в оформлении заказа в адресе доставки город по умолчанию?
Хотелось бы узнать - кто-нибудь реализовывал подобное?
Сейчас если переходить в корзину и оформлять заказ сразу автоматом проставляется Россия в Стране.
Также хотелось бы установить по умолчанию город и область!
Re: Можно ли сделать в оформлении заказа в адресе доставки город по умолчанию?
DriveRU, надо в xsl-шаблоне "МагазинАдресДоставки", изменить javascript который находится сразу после закрывающего тега form. Этот javascript загружает элементы списка для выбранной по-умолчанию страны. Можно, например, добавить в функцию doSetLocation() третий параметр в котором указать id области по-умолчанию, и изменить саму функцию в файле /hostcmsfiles/main.js, так чтобы область с указанным id устанавливалась в списке активной.
А после вызова функции doSetLocation() необходимо вызвать doSetCity(), также добавив к ней еще один параметр для города по умолчанию, и модифицировав саму функцию аналогично предыдущей.
<!-- Заполняем все дочерние элементы страны -->
<SCRIPT type="text/javascript" language="JavaScript">
var oldHandler=window['onload'];
window['onload']=function(){if(typeof(oldHandler)=='function'){oldHandler();}newHandler();};
function newHandler(){
doSetLocation(document.getElementById('country').options[document.getElementById('country').selectedIndex].value, '<xsl:value-of select="/locations/shop/path" />cart/');
}
</SCRIPT>
</xsl:template>
<!-- Шаблон заполняет options для стран -->
<xsl:template match="country">
<xsl:choose>
<!-- Если страна задана по умолчанию -->
<xsl:when test="@select=1">
<option value="{@id}" selected="selected" style="font-weight: bold;">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</option>
</xsl:when>
<xsl:otherwise>
<option value="{@id}">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</option>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Re: Можно ли сделать в оформлении заказа в адресе доставки город по умолчанию?
DriveRU, куда уж предметнее-то?
А файлы-то можно было сюда и не выкладывать, я их видел неоднократно
Но то что вы их нашли - это уже хорошо.
Теперь попробуйте сделать с ними те действия, которые я написал выше
Re: Можно ли сделать в оформлении заказа в адресе доставки город по умолчанию?
DriveRU, ну так и руки вам в руки!
Javascript в xsl-шаблоне после тега form нашли?
Вызов функции doSetLocation() в нем обнаружили?
В конце вызова этой функции, перед закрывающей скобкой поставьте запятую, и укажите цифрой id той области, которая должны быть по умолчанию.
Потом перейдите в файл main.js и в заголовке этой функции, после параметра path поставьте запятую и напишите любое название переменной для третьего параметра.
Это еще не все, но сохраните оба файла и обновите страницу с адресом доставки, чтобы убедиться что вы ничего не поломали
Если все работает как раньше, то переходим к следующему шагу:
Находим в функции doSetLocation() вот этот фрагмент
for (var key in req.responseJS.result)
{
oSelect.options[oSelect.options.length] = new Option(req.responseJS.result[key], key);
}
и вставляем в него проверку условия что третий параметр у нас задан и что он равен текущему id области, и если да, то добавляем в new Option() признак выделения строки по-умолчанию (подробнее о параметрах new Option() см. здесь - ), а если условие ложно то оставляем строку new Option() без изменений.
Ну и все, собственно. Сохраняем файл и проверяем что ничего не поломали. Область по-умолчанию должна загрузиться автоматически после загрузки страницы.
С городом - по аналогии.
Re: Можно ли сделать в оформлении заказа в адресе доставки город по умолчанию?
for (var key in req.responseJS.result)
{if (key==25){oSelect.options[oSelect.options.length] = new Option(req.responseJS.result[key], key, true, true);}
else {oSelect.options[oSelect.options.length] = new Option(req.responseJS.result[key], key);}
}
Вместо 25 ставите ID того значения, который хотите, чтобы выбирался у вас в списке по умолчанию.
Данный вариант можно ставить для любого из списков выбора значений.
Ничего более в main.js (\admin\js\main.js) я не менял.