Автор Тема: Помогите! НЕ обновляется стоимость в корзине (установлен сторонний шаблон)  (Прочитано 446 раз)

05 Июля 2015, 00:04:13
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Все привет! Значит так... Познакомился я с Престой только пару недель назад. До этого "жил" всегда на Джумле. Поэтому возможно я где-то ошибусь, но мне кажется, что следующая проблема возникла не по моей вине... Так вот... Скачал я Престу вместе со сторонним шаблоном (то есть уже установленная CMS вместе с шаблоном и демо данными этого самого шаблона).
На сайте было пару маленьких глюка. Я исправил их через html код. Но обнаружился уже серьезный глюк... И исправить я это не в силах т.к. не знаю php и javascript...
На страницу "корзина" через соответствующий хук выведен модуль carriercompare (сравнение перевозчиков). Это расчет стоимости доставки... Модуль находится в папке с шаблоном... Внизу есть две кнопки: "update cart" и "update carrier list". При нажатии "update carrier list" обновляется список перевозчиков... Эта та область, которую я выделил на скриншоте... Обновляется быстро - за 1 сек. Но проблема в том, что при нажатии "update cart" тоже самое не происходит. НЕ обновляется верхняя область (там где корзина с продуктами и стоимость общая). Появляется надпись "Refreshing the page and updating your cart..." и значок загрузки, который крутится ВЕЧНО  :'(

На сайте я занимался практически только переводом... большие изменения не вносил... Поэтому моя вина исключена...
Не знаю в чем именно проблема, но подозреваю, что в php / javascript коде есть маленькая ошибочка, из-за которой не происходит обновление. Прошу помощи у знающих  php / javascript. Скорее всего проблема смешная, но я смотрю в код и ничего не понимаю без соответствующих знаний! К данному сообщению я прикрепил маленький архив, в котором папка с этим модулем! Если не трудно, то напишите какой код и в каком файле нужно подправить! Или возможно у вас есть другие мысли для решения проблемы! Буду очень благодарен!
Версия Prestashop 1.6.0.11. Но пробовал обновить до 1.6.0.14 или даже до 1.6.1.0. Разницы никакой!
05 Июля 2015, 12:47:01
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 85943
  • Репутация: +25399/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В этом модуле нет функции обновления корзины. В этом модуле нет функции расчета доставки.
Есть только сравнение стоимости доставки от разных перевозчиков по разным странам.
05 Июля 2015, 13:01:44
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 32988
  • Репутация: +26759/-0
    • Просмотр профиля
У вас модуль связан с шаблоном. По одному модулю ошибки не определить. Если судить по модулю, то все должно работать.
Проверять нужно шаблоны темы. Цена обновляется по полю total_price.
$('#total_price').html(total);Ищите в своих шаблонах это поле, возможно что вы удалил ид при редактировании шаблонов.
05 Июля 2015, 14:40:13
Ответ #3
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В этом модуле нет функции обновления корзины. В этом модуле нет функции расчета доставки.
Есть только сравнение стоимости доставки от разных перевозчиков по разным странам.
У вас модуль связан с шаблоном. По одному модулю ошибки не определить. Если судить по модулю, то все должно работать.
Проверять нужно шаблоны темы. Цена обновляется по полю total_price.
$('#total_price').html(total);Ищите в своих шаблонах это поле, возможно что вы удалил ид при редактировании шаблонов.
Спасибо вам большое за ответы! Да! Это модуль самой Престы! Извините! Я забыл добавить файлы модулей, которые в самом шаблоне. Вот. Сейчас прикрепил файлы модуля carriercompare из папки шаблона. Там есть файлы carriercompare.tpl и configuration.tpl. Я подозреваю, что проблема в одном из этих файлов.

Файл carriercompare.tpl
{if !$opc}
<form class="box" id="compare_shipping_form" method="post" action="#" >
<fieldset id="compare_shipping">
<h1 class="page-heading bottom-indent">{l s='Estimate the cost of shipping & taxes.' mod='carriercompare'}</h1>
<div class="form-group">
<label for="id_country">{l s='Country' mod='carriercompare'}</label>
<select name="id_country" id="id_country" class="form-control">
{foreach from=$countries item=country}
<option value="{$country.id_country}" {if $id_country == $country.id_country}selected="selected"{/if}>{$country.name|escape:'html':'UTF-8'}</option>
{/foreach}
</select>
</div>
<div id="states" class="form-group" style="display: none;">
<label for="id_state">{l s='State' mod='carriercompare'}</label>
<select name="id_state" id="id_state" class="form-control">
<option></option>
</select>
</div>
<div class="form-group last">
<label for="zipcode">{l s='Zip/postal code' mod='carriercompare'}</label>
<input class="form-control" type="text" name="zipcode" id="zipcode" value="{$zipcode|escape:'html':'UTF-8'}"/> ({l s='Needed for certain carriers.' mod='carriercompare'})
</div>
<div id="carriercompare_errors" style="display: none;">
<ul id="carriercompare_errors_list"></ul><br />
</div>
<div id="SE_AjaxDisplay">
<img src="{$new_base_dir}loader.gif" alt="Loading data" /><br />
<p></p>
</div>
<div id="availableCarriers" style="display: none;">
<table cellspacing="0" cellpadding="0" id="availableCarriers_table" class="table table-bordered">
<thead>
<tr>
<th class="carrier_action first_item"></th>
<th class="carrier_name item">{l s='Carrier' mod='carriercompare'}</th>
<th class="carrier_infos item">{l s='Information' mod='carriercompare'}</th>
<th class="carrier_price last_item">{l s='Price' mod='carriercompare'}</th>
</tr>
</thead>
<tbody id="carriers_list">

</tbody>
</table>
</div>
<p class="alert alert-warning text-center" id="noCarrier" style="display: none;">
{l s='No carrier has been made available for this selection.' mod='carriercompare'}
</p>
<p class="SE_SubmitRefreshCard">
            <button class="btn btn-default button button-small" id="carriercompare_submit" type="button" name="carriercompare_submit">
            <span>{l s='Update cart' mod='carriercompare'}<i class="icon-chevron-right right"></i></span>
            </button>
            <button id="update_carriers_list" type="button" class="btn btn-default button button-small">
            <span>{l s='Update carrier list' mod='carriercompare'}<i class="icon-chevron-right right"></i></span>
            </button>
</p>
</fieldset>
</form>
{addJsDef taxEnabled=$use_taxes}
{addJsDef displayPrice=$priceDisplay}
{addJsDef currencySign=$currencySign|html_entity_decode:2:"UTF-8"}
{addJsDef currencyRate=$currencyRate|floatval}
{addJsDef currencyFormat=$currencyFormat|intval}
{addJsDef currencyBlank=$currencyBlank|intval}
{addJsDef id_carrier=$id_carrier|intval}
{addJsDef id_state=$id_state|intval}
{addJsDef SE_RefreshMethod=$refresh_method|intval}

{addJsDefL name=SE_RedirectTS}{l s='Refreshing the page and updating your cart...' mod='carriercompare' js=1}{/addJsDefL}
{addJsDefL name=SE_RefreshStateTS}{l s='Checking available states...' mod='carriercompare' js=1}{/addJsDefL}
{addJsDefL name=SE_RetrievingInfoTS}{l s='Retrieving information...' mod='carriercompare' js=1}{/addJsDefL}
{addJsDefL name=txtFree}{l s='Free!' mod='carriercompare' js=1}{/addJsDefL}
{/if}

Файл configuration.tpl

{if isset($display_error)}
{if $display_error}
<div class="error">{l s='An error occured during form validation.' mod='carriercompare'}</div>
{else}
<div class="conf">{l s='Configuration updated' mod='carriercompare'}</div>
{/if}
{/if}

<form method="post" action="{$smarty.server.REQUEST_URI|escape:'html':'UTF-8'}">
<fieldset>
<div class="warn">
{l s='This module is only available during the standard five-step checkout process. The carrier list has already been defined for one-page checkout. ' mod='carriercompare'}.
</div>
<legend>{l s='Global Configuration' mod='carriercompare'}</legend>

<label for="refresh_method">Refresh carrier list method</label>
<div class="margin-form">
<select id="refresh_method" name="refresh_method">
<option value="0" {if $refresh_method == 0}selected{/if}>{l s='Anytime' mod='carriercompare'}</option>
<option value="1" {if $refresh_method == 1}selected{/if}>{l s='The required information is set.' mod='carriercompare'}</option>
</select>
<p>{l s='How would you like to refresh information for a customer?' mod='carriercompare'}</p>
</div>

<div class="margin-form">
<input name="setGlobalConfiguration" type="submit" class="button" value="{l s='Submit' mod='carriercompare'}">
</div>
</fieldset>
</form>

И кстати! Я только заметил, что оказывается даже в официальной демо версии шаблона в интернете эта функция не работает... То есть получается проблема изначально была.
05 Июля 2015, 14:47:38
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 1190
  • Репутация: +28/-1
  • Сообщество PrestaShop
    • Просмотр профиля
У вас модуль связан с шаблоном. По одному модулю ошибки не определить. Если судить по модулю, то все должно работать.
Проверять нужно шаблоны темы. Цена обновляется по полю total_price.
$('#total_price').html(total);Ищите в своих шаблонах это поле, возможно что вы удалил ид при редактировании шаблонов.
Проблема не в этих шаблонах. Вы же пишите, что выбор курьеров работает нормально. Не работает перерасчет стоимости корзины.
Цитировать
НЕ обновляется верхняя область (там где корзина с продуктами и стоимость общая).
Вы хотите заменять стоимость в корзине. Это шаблон темы shopping-cart.tpl. В нем дожен быть блок с id="total_price". В этом блоке должна меняться цена. 
05 Июля 2015, 15:06:01
Ответ #5
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вы хотите заменять стоимость в корзине. Это шаблон темы shopping-cart.tpl. В нем дожен быть блок с id="total_price". В этом блоке должна меться цена.
Спасибо за ответ! Вот я нашел в папке шаблона shopping-cart.tpl и shopping-cart-product-line.tpl
Т.к. в это сообщение весь код не помещается, то прикрепил эти файлы в архиве.
05 Июля 2015, 15:42:58
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 13121
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В шаблонах нет ошибок. Ошибка скорее всего в javacsript или в каком-то другом шаблоне синтаксическая ошибка, которая прерывает загрузку js функций.
Включите показ ошибок ошибок в prestashop. Так можно получить больше информации об ошибках.
05 Июля 2015, 15:43:33
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 13121
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
05 Июля 2015, 16:19:35
Ответ #8
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В шаблонах нет ошибок. Ошибка скорее всего в javacsript или в каком-то другом шаблоне синтаксическая ошибка, которая прерывает загрузку js функций.
Включите показ ошибок ошибок в prestashop. Так можно получить больше информации об ошибках.
Адрес сайта какой?
Спасибо за ответ! Шаблон очень известный - Titanshop.
Вот ссылка на полную версию (CMS + шаблон и демо данные):
https://yadi.sk/d/OIU9SaRhhg6ZV
Установка полной версии:
1) Распаковать содержимое папки "titanshop-full-package" например в папку myteststore.com на локальном сервере
2) Создать базу данных (например mystoredb) в phpMyAdmin
3) Импортировать в созданную базу данных сначала файл 1_sample-database.sql, а потом и 2_update-database.sql
4) Потом найти в базе данных ps_shop_url и изменить domain на myteststore.com,  domain_ssl также изменить на myteststore.com, physical_uri изменить на /
5) Зайти в папку с сайтом и в папке config найти файл settings.inc.php.default и переименовать его в settings.inc.php. Потом изменить в нем следующее:
define('_DB_SERVER_', 'myteststore.com');
define('_DB_NAME_', 'mystoredb');
define('_DB_USER_', 'root');
define('_DB_PASSWD_', '');
-------------------------------------------
Вход в админку будет:
myteststore.com/psadmin/
Эмейл адрес: demo@presthemes.com
Пароль: presthemes
-------------------------------------------

А вот ссылка только на сам шаблон без cms:
https://yadi.sk/d/CERbaJrUhg8QJ

Даже в официальной онлайн демо версии эта функция не работает:
http://demo.presthemes.com/titanshop/default/index.php
Если добавить в корзину что-то и перейти в корзину и нажать update cart, то опять мы видим вечную загрузку. Что очень странно... Шаблон данный вроде бы очень популярный... Неужели никто не заметил, что эта функция не работает?

Адреса сайта нет т.к. он на локалхосте. Чуть позже открою доступ для доступа извне и напишу тут айпи адрес, по которому сможете зайти. Открою доступ к неизменной полной версии - там чистая CMS + шаблон.
05 Июля 2015, 16:30:31
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 2156
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
В демо нет функции переопределния стоимости заказа. Они видно не закончили или забыли ее добавить.
05 Июля 2015, 17:04:30
Ответ #10
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В демо нет функции переопределния стоимости заказа. Они видно не закончили или забыли ее добавить.
Проблема в том, что эта функция не работает не только в демо, но и в версии шаблона, который уже для скачивания и установки. Что можете посоветовать? Может этот модуль другим похожим можно заменить? Вроде бы остальное в шаблоне работает исправно...
Я не думаю, что они забыли завершить создание модуля... Скорее всего где-то в коде малюсенькая ошибка. Потому что в этом шаблоне я уже находил маленькую ошибку в html, из-за чего часть выражений перевести через админку не получалось. Вообще это очень странно, что платные шаблоны как попало делают.. Код нормально не проверяют...  :-\
05 Июля 2015, 17:16:35
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 2156
  • Репутация: +49/-4
  • Сообщество PrestaShop
    • Просмотр профиля
Если шаблон куплен, то проще написать в техподежку и они исправят. В другом случае нужно самому добавить эту фугкцию. Или вообще отключить сравнение перевозчиков.
05 Июля 2015, 17:29:24
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 32988
  • Репутация: +26759/-0
    • Просмотр профиля
Демо версия и то что вы выложили на форуме отличаются друг от друга.
В вашем шаблоне должно работать перерасчет цены при выборе разных перевозчиков.
05 Июля 2015, 17:30:01
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 32988
  • Репутация: +26759/-0
    • Просмотр профиля
Попробую установить ваш шаблон и проверю. О результатх напишу.
05 Июля 2015, 18:13:55
Ответ #14
  • Новичок
  • *
  • Сообщений: 7
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если шаблон куплен, то проще написать в техподежку и они исправят. В другом случае нужно самому добавить эту фугкцию. Или вообще отключить сравнение перевозчиков.
Это я понимаю... Пока не куплен... Вот думаю купить сейчас или нет... Пока тестирую. Если все устроит, то наверное куплю для получения обновлений. Просто странно, что даже в демо версии такая важная функция не работает.
Демо версия и то что вы выложили на форуме отличаются друг от друга.
В вашем шаблоне должно работать перерасчет цены при выборе разных перевозчиков.
Чем отличаются? Там скорее всего эта же версия и установлена.. раз уж не работает сравнение перевозчиков... В моей версии шаблона тоже не работает. Шаблон я просто скачал из интернета. Ни один из файлов не изменен мной.
Попробую установить ваш шаблон и проверю. О результатх напишу.
Большое спасибо  :)
Я попробовал установить отдельно тему на чистую CMS + скачать отдельно модуль сравнения перевозчиков. Но изменений нет...