Обратный звонок в CS-Cart 4.3.x
В очередной версии платформы электронной коммерции появилась интересная фича, реализованная отдельным аддоном, call-requests. Аддон реализует блок вывода телефона компании со ссылкой, при клике по которой появляется pop-up с формой ввода имени, телефона и удобного времени звонка. При этом в админпанели также выдается информация, на какой именно странице или со страницы какого товара была эта форма заполнена. Все такие заявки аккумулируются в одном разделе: Заказы - Обратный звонок.
Так же этот аддон добавляет кнопку и форму "Купить в один клик"... Вот тут у меня и возникли потребности некоторого изменения кода, а поскольку начиная с версии 4.3.1 центр обновлений перестал выдавать вносимые изменения в файлы при обновлении, просто затирая их новыми файлами (не везде можно воспользоваться post и pre контроллерами, а owerride влечет за собой массу ответственности по отслеживанию изменений всего перезаписываемого кода или шаблона) то запишу изменения и для себя на будущее.
Итак, "Купить в одни клик". Форма из трех полей, имя, телефон, ИЛИ email. Если покупатель пишет email - его обращение попадает в заказы. Если пишет только телефон - то в заявку на обратный звонок. Не было бы в этом ничего такого, если бы заявку из обратных звонков можно было кнопкой конвертировать в заказ. А так просто "разброд и шатание". Чуточку порядка наведем в шаблоне, изменения небольшие, но приятные. Открываем файл /design/themes/{ваша_тема}/addons/call_requests/views/call_requests/components/call_requests_content.tpl
Для каждого инпута (имя, телефон, email) - прописываем в элемент label класс cm-required
в label для поля email для класса cm-required удаляем условие проверки {if !$product}...{/if} и в тэге form удаляем это условие для класса cm-ajax-full-render (в результате мы делаем все поля обязательными, и требуем полную проверку заполнения формы при отправке.
меняем
Так же этот аддон добавляет кнопку и форму "Купить в один клик"... Вот тут у меня и возникли потребности некоторого изменения кода, а поскольку начиная с версии 4.3.1 центр обновлений перестал выдавать вносимые изменения в файлы при обновлении, просто затирая их новыми файлами (не везде можно воспользоваться post и pre контроллерами, а owerride влечет за собой массу ответственности по отслеживанию изменений всего перезаписываемого кода или шаблона) то запишу изменения и для себя на будущее.
Итак, "Купить в одни клик". Форма из трех полей, имя, телефон, ИЛИ email. Если покупатель пишет email - его обращение попадает в заказы. Если пишет только телефон - то в заявку на обратный звонок. Не было бы в этом ничего такого, если бы заявку из обратных звонков можно было кнопкой конвертировать в заказ. А так просто "разброд и шатание". Чуточку порядка наведем в шаблоне, изменения небольшие, но приятные. Открываем файл /design/themes/{ваша_тема}/addons/call_requests/views/call_requests/components/call_requests_content.tpl
Для каждого инпута (имя, телефон, email) - прописываем в элемент label класс cm-required
в label для поля email для класса cm-required удаляем условие проверки {if !$product}...{/if} и в тэге form удаляем это условие для класса cm-ajax-full-render (в результате мы делаем все поля обязательными, и требуем полную проверку заполнения формы при отправке.
меняем
<div class="ty-cr-or">— {__("or")} —</div>на
<div class="ty-cr-or">— {__("and")} —</div>меняем
<label class="control-group__title cm-required"на
for="call_data_{$id}_name">{__("your_name")}</label>
<label class="control-group__title cm-required"что позволяет явно указать последовательность ввода имени и фамилии и на последок штрих - меняем значение языковой переменной your_name с "Ваше имя" на "Ваши Имя"
for="call_data_{$id}_name">
{__("your_name")} {__("and")} {__("last_name")}</label>
=======
Фай шаблона
=======
<div id="{$id}">
<form name="call_requests_form{if !$product}_main{/if}" id="form_{$id}" action="{""|fn_url}" method="post" class="cm-ajax cm-ajax-full-render" data-ca-product-form="product_form_{$obj_prefix}{$obj_id}">
<input type="hidden" name="result_ids" value="{$id}" />
<input type="hidden" name="return_url" value="{$config.current_url}" />
{if $product}
<input type="hidden" name="call_data[product_id]" value="{$product.product_id}" />
<div class="ty-cr-product-info-container">
<div class="ty-cr-product-info-image">
{include file="common/image.tpl" images=$product.main_pair image_width=$settings.Thumbnails.product_cart_thumbnail_width image_height=$settings.Thumbnails.product_cart_thumbnail_height}
</div>
<div class="ty-cr-product-info-header">
<h1 class="ty-product-block-title">{$product.product}</h1>
</div>
</div>
{/if}
<div class="control-group">
<label class="control-group__title cm-required" for="call_data_{$id}_name">{__("your_name")} {__("and")} {__("last_name")}</label>
<input id="call_data_{$id}_name" size="50" class="ty-input-text-full" type="text" name="call_data[name]" value="" />
</div>
<div class="control-group">
<label for="call_data_{$id}_phone" class="control-group__title cm-required">{__("phone")}</label>
<input id="call_data_{$id}_phone" class="ty-input-text-full cm-cr-mask-phone" size="50" type="text" name="call_data[phone]" value="" />
</div>
{if $product}
<div class="ty-cr-or">— {__("and")} —</div>
<div class="control-group">
<label for="call_data_{$id}_email" class="control-group__title cm-email cm-required">{__("email")}</label>
<input id="call_data_{$id}_email" class="ty-input-text-full" size="50" type="text" name="call_data[email]" value="" />
</div>
<div class="cr-popup-error-box">
<div class="hidden cm-cr-error-box help-inline">
<p>{__("call_requests.enter_phone_or_email_text")}</p>
</div>
</div>
{else}
<div class="control-group">
<label for="call_data_{$id}_convenient_time" class="control-group__title">{__("call_requests.convenient_time")}</label>
<input id="call_data_{$id}_convenient_time" class="ty-input-text cm-cr-mask-time" size="6" type="text" name="call_data[time_from]" value="" placeholder="09:00" /> -
<input id="call_data_{$id}_convenient_time" class="ty-input-text cm-cr-mask-time" size="6" type="text" name="call_data[time_to]" value="" placeholder="20:00" />
</div>
{/if}
<div class="buttons-container">
{include file="buttons/button.tpl" but_name="dispatch[call_requests.request]" but_text=__("submit") but_role="submit" but_meta="ty-btn__primary ty-btn__big cm-form-dialog-closer ty-btn"}
</div>
</form>
<!--{$id}--></div>
Комментарии
Отправить комментарий