Автор Тема: Подстановка smarty в jQuery  (Прочитано 16513 раз)

Оффлайн Bas916

  • Пользователь
  • **
  • Сообщений: 79
    • Просмотр профиля
Подстановка smarty в jQuery
« : Апреля 13, 2014, 03:24:13 pm »
Добрый день, уважаемые гуру. В очередной раз приходится обращаться к Вам за помощью. Можно ли в скрипт jQuery подставлять переменные smarty? Если да, то как исправить код ниже, чтобы скрипт выполнялся:
<script type="text/javascript">

jQuery(document).ready(function() {
$('#countdown_dashboard22077').stopCountDown();
end_sale = false;
$('#countdown_dashboard22077').countDown({
        targetDate: {
            'day':      {$special_offer.offer_days_end_sale}, //число
            'month':    {$special_offer.offer_month_end_sale},  //месяц
            'year':     {$special_offer.offer_year_end_sale},   //год
            'hour':    {$special_offer.offer_hours_end_sale}, //час
            'min':      {$special_offer.offer_minuts_end_sale},  //минуты
            'sec':      {$special_offer.offer_seconds_end_sale},   //секунды
'utc':      true
        },
onComplete: function() {
$('#byer22077').slideUp()
$('#complete_info_message22077').slideDown()
$.get( '../includes/end_sale.php', { product_id: '22077', end_sale: 'true'});
}
});
$('#countdown_dashboard22077').startCountDown();

});

</script>

Собственно загвоздка в подстановке значений {$special_offer.offer_days_end_sale} в скрипт. {literal}{/literal} пробовал - скрипт не работает :(
Заранее благодарю за помощь. Спасибо.
« Последнее редактирование: Апреля 13, 2014, 03:26:26 pm от Bas916 »

Оффлайн Bas916

  • Пользователь
  • **
  • Сообщений: 79
    • Просмотр профиля
Re: Подстановка smarty в jQuery
« Ответ #1 : Апреля 13, 2014, 03:56:59 pm »
Еще пробовал вставлять смарти в тег div, а оттуда уже брать через document.getElementById(offer_days_end_sale).value результат - выводит нужно число (которое хранится в базе) на экран, но скрипт не работает с такой подстановкой.

Оффлайн Bas916

  • Пользователь
  • **
  • Сообщений: 79
    • Просмотр профиля
Re: Подстановка smarty в jQuery
« Ответ #2 : Апреля 13, 2014, 05:24:01 pm »
Вариант 1) проверил - не работает.
Вариант 2) проверил - работает  :)

Для себя нашел такой метод:
<div id="offer_days_end_sale" hidden="true">{$special_offer.offer_days_end_sale}</div>

var days = document.getElementById('offer_days_end_sale').innerHTML;

Но с какого-то перепугу он лишние сутки добавляет при расчетах... Ваш метод работает точно, буду переписывать под него, спасибо.

Оффлайн Bas916

  • Пользователь
  • **
  • Сообщений: 79
    • Просмотр профиля
Re: Подстановка smarty в jQuery
« Ответ #3 : Апреля 13, 2014, 05:33:00 pm »
А фиг там, с 1 подстановкой  - работает, 2 и больше - не работает...

Оффлайн Bas916

  • Пользователь
  • **
  • Сообщений: 79
    • Просмотр профиля
Re: Подстановка smarty в jQuery
« Ответ #4 : Апреля 13, 2014, 07:25:38 pm »
2-й вариант почему-то сразу заработал, а спустя пару минут - все числа 1-чки, вместо тех, что должно из базы тянуться. Решил все же своим способом, в итоге получился код копипастный строк на 100 больше, чем было в коде страницы, но главное что работает + вывел в админку настройки. А делал - модуль таймера вешал на витрину, когда все доделаю, выставлю на суд общий, а пока сыроват, еще кучу идей нужно реализовать :)

Ваш метод тоже частично использовал, так как при 1 параметре Smarty - работает, а дальше непонятно что, в общем его использовал только для того, чтобы в jQuery передать Id товара, а дальше уже везде приписывал эту переменную:
var id = document.getElementById('offer_end_sale_id_'+{$special_offer.productID}).innerHTML;
var year = document.getElementById('offer_year_end_sale_'+id).innerHTML;
и так далее
« Последнее редактирование: Апреля 13, 2014, 07:28:27 pm от Bas916 »

Оффлайн Bas916

  • Пользователь
  • **
  • Сообщений: 79
    • Просмотр профиля
Re: Подстановка smarty в jQuery
« Ответ #5 : Апреля 13, 2014, 09:54:03 pm »
А что вам мешало сделать так
$.get( '../includes/end_sale.php', { product_id: '{/literal}{$special_offer.productID}{literal}', end_sale: 'true'});или где вы там его используете..
не-не-не,  '../includes/end_sale.php' вообще не для этого писался, сейчас все делалось в шаблоне страницы (*.tpl.html) с использованием jQuery, php здесь был вообще почти не при чем (разве что только запрос в базу на добавление полей с датой и временем, его модификацией и считыванием, но не более того). В общем данный модуль уже дописал, и кучу текста, которую настрочил за день переписывать нет ни малейшего желания, даже если w3 ругаться будет, а он будет, так как в jQuery как минимум вставки с "{" и "}" не пройдут валидацию.

Оффлайн Heisenberg

  • Спец
  • ***
  • Сообщений: 157
    • Просмотр профиля
Re: Подстановка smarty в jQuery
« Ответ #6 : Апреля 14, 2014, 09:12:12 pm »
Для себя нашел такой метод:
<div id="offer_days_end_sale" hidden="true">{$special_offer.offer_days_end_sale}</div>
var days = document.getElementById('offer_days_end_sale').innerHTML;
можно пробовать и так : <input type="hidden" value="выводим_из _пхп_значение" name="как_удобно_обозвать" />
и в js "обнародовать":
 $( "input[name='имя']").val();
можно и id для простоты привязать:
("#мой_id").val();