Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Как задействовать модуль Новости для простых статей без отображения даты

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 8
Просмотров: 4945
Последний ответ 28 Апреля 2013, 22:07:18
от Axiomateria
Вывод даты в формате unix-timestamp

Автор muldyРаздел Шаблоны XSLT

Ответов: 6
Просмотров: 5185
Последний ответ 27 Февраля 2013, 18:17:03
от muldy
Модуль новости, вывод даты

Автор johnРаздел Шаблоны XSLT

Ответов: 1
Просмотров: 2206
Последний ответ 24 Сентября 2012, 11:13:12
от niakriss
Вывод даты с днем недели

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 3
Просмотров: 3038
Последний ответ 02 Июля 2013, 07:36:09
от BaceH
Проблема вывода даты из order

Автор SumrakrndРаздел Шаблоны XSLT

Ответов: 9
Просмотров: 1931
Последний ответ 19 Апреля 2016, 12:46:22
от aghigay

0 Пользователей и 1 Гость просматривают эту тему.

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Всплывающий календарь для выбора даты
« Ответ #15 : 26 Июля 2013, 14:41:27 »
?fields_filter[start_tour]=123 означает выводить элементы, у которых в поле start_tour значение равно 123
и если вы используете поля типа дата указывайте время в unix timestamp формате
Этот вариант я уже пробовал, но туры выводятся по прежнему не только за выбранное число (например 10 июля), но и за остальные последующие числа тоже (после 10-го июля).
Упоминая "поле start_tour значение равно 123" Вы имеете ввиду значение ,которое подставляется при выборе даты пользователем из выпадающего календаря ?
и если вы используете поля типа дата указывайте время в unix timestamp формате
Уточните, пожалуйста, где конкретно указать формат даты - в шаблоне объекта (тура) ?
И речь идёт о вызове
<xsl:value-of select="document(concat('udata://system/convertDate/', page/properties/group/property/value/@unix-timestamp, '/(d.m.Y)/'))/udata"/>
?
« Последнее редактирование: 26 Июля 2013, 15:06:28 от Axiomateria »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Всплывающий календарь для выбора даты
« Ответ #16 : 29 Июля 2013, 15:46:01 »
Как вы и где выведите unix-timestamp это уже зависит от вашего шаблона и организации типов данных, так что тут, общими словами ничего не насоветуешь.

Насчет того, что у вас не работает фильтрация через fields_filter:

вот ваша страница (пути пишу относительные, но это примеры с вашего сайта)
/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/

вот её же вариант отфильтрованный по полю  в диапазоне от Mon, 01 Jul 2013 00:00:00 до Wed, 10 Jul 2013 00:00:00
/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/?fields_filter[start_tour][0]=1372622400&fields_filter[start_tour][1]=1373400000

В итоге, у вас вывелись только те туры, которые начинаются в этом диапазоне дат.

Дело осталось за малым, передавать эти параметры в адресную строку при загрузке страницы. Либо при загрузке страницы использовать usel, который вы можете вызывать в xslt шаблоне передавая ему unix-timestamp время. Usel прекрасно работает с ним см. документацию по usel/ Вот небольшая вырезка из документации
Цитировать
Для полей типа "дата" можно задать формат значения для поиска, используя атрибут format ("timestamp" либо "UTC").

<property name="last_request_time">
 <min-value format="timestamp">3600</min-value>
 <max-value format="UTC">2007-11-10 14:48:10</max-value>
</property>

P.S. значение времени приведено в unix timestamp  формате их можно получить при работе с полем типа дата. Посмотрите на примере /upage://110, у поля start_tour есть атрибут @unix-timestamp.

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Всплывающий календарь для выбора даты
« Ответ #17 : 31 Июля 2013, 13:04:31 »
/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/?fields_filter[start_tour][0]=1372622400&fields_filter[start_tour][1]=1373400000

В итоге, у вас вывелись только те туры, которые начинаются в этом диапазоне дат.
вот в этом то всё и дело, что диапозон "с и по" не нужен, нужна только одна дата которая выводит только те туры, которые проходят по этой дате как активные.
Дело осталось за малым, передавать эти параметры в адресную строку при загрузке страницы.
Вот здесь я и застопорился... пробую использовать такую строку по вашей рекомендации
 <form>
                  <div class="buttom-link2">          
                  <input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour]" />
                   <input type="text" class="textinputs datepicker_class" id="publish_time" value="" />
                  <input class="button4" type="submit" value="Найти" />
                  </div>
              </form>
, но всё равно выводятся все туры начиная с этой даты,а не только в эту дату, а в адресной строке такое содержание:
/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/?fields_filter[start_tour]=1373400000
« Последнее редактирование: 31 Июля 2013, 13:06:34 от Axiomateria »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Всплывающий календарь для выбора даты
« Ответ #18 : 31 Июля 2013, 17:54:39 »
/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/?fields_filter[start_tour][0]=1372622400&fields_filter[start_tour][1]=1373400000

В итоге, у вас вывелись только те туры, которые начинаются в этом диапазоне дат.
вот в этом то всё и дело, что диапозон "с и по" не нужен, нужна только одна дата которая выводит только те туры, которые проходят по этой дате как активные.
Дело осталось за малым, передавать эти параметры в адресную строку при загрузке страницы.
Вот здесь я и застопорился... пробую использовать такую строку по вашей рекомендации
 <form>
                  <div class="buttom-link2">           
                   <input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour]" />
                   <input type="text" class="textinputs datepicker_class" id="publish_time" value="" />
                  <input class="button4" type="submit" value="Найти" />
                  </div>
              </form>
, но всё равно выводятся все туры начиная с этой даты,а не только в эту дату, а в адресной строке такое содержание:
/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/?fields_filter[start_tour]=1373400000

для вывода конкретной даты попробуйте такие параметры fields_filter[start_tour][0]=1372622400&fields_filter[start_tour][1]=1372622400, то есть одну дату для значение от и до.
Соответственно input в форме, которую вы отправляете, поменяйте, чтобы в адресной строке получился вышеописанный пример

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Всплывающий календарь для выбора даты
« Ответ #19 : 01 Августа 2013, 00:55:33 »
для вывода конкретной даты попробуйте такие параметры fields_filter[start_tour][0]=1372622400&fields_filter[start_tour][1]=1372622400, то есть одну дату для значение от и до.
я так уже пробовал вставлять в адресную строку и мне действительно выводились туры на одну конкретную дату и как в данном случае только туры на 1-е июля.
Соответственно input в форме, которую вы отправляете, поменяйте, чтобы в адресной строке получился вышеописанный пример
Вот у меня и вопрос об этом - как же её эту форму <input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour]" /> так поменять, что бы
 
Выдавал только туры на конкретную дату ?

Вот так пробовал:
<input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour{0}&fields_filter[start_tour]{1}" />

 но ошибка получается
Warning: XSLTProcessor::importStylesheet(): /var/www/clients/client0/web106/web/templates/rusgorod/xslt/modules/catalog/category-view-id150.xsl:17: parser error : EntityRef: expecting ';'
и далее по тексту...
 

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Всплывающий календарь для выбора даты
« Ответ #20 : 01 Августа 2013, 01:54:01 »

Вот так пробовал:
<input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour{0}&fields_filter[start_tour]{1}" />

 но ошибка получается
Warning: XSLTProcessor::importStylesheet(): /var/www/clients/client0/web106/web/templates/rusgorod/xslt/modules/catalog/category-view-id150.xsl:17: parser error : EntityRef: expecting ';'
и далее по тексту...
 

<input type="hidden" class="textinputs" id="publish_time_hidden" value="1373400000" name="fields_filter[start_tour][0]" />
<input type="hidden" class="textinputs" id="publish_time_hidden" value="1373400000" name="fields_filter[start_tour][1]" />

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Всплывающий календарь для выбора даты
« Ответ #21 : 01 Августа 2013, 12:20:13 »
<input type="hidden" class="textinputs" id="publish_time_hidden" value="1373400000" name="fields_filter[start_tour][0]" />
<input type="hidden" class="textinputs" id="publish_time_hidden" value="1373400000" name="fields_filter[start_tour][1]" />

Сделал так, но не выходит желаемый результат.
Вкратце о ситуации: если в адресной строке вручную ввести ?fields_filter[start_tour][0]=1373400000&fields_filter[start_tour][1]=1373400000
то действительно выводится только туры за 10 июля,  или вот ещё так
?fields_filter[start_tour][0]=1374436800&fields_filter[start_tour][1]=1374436800
где туры только на 22 июля.
Вручную результат - что надо.

НО в действительности  если не в ручную, а через выбор из календаря дату 22 июля, то вот с таким адресом
?fields_filter[start_tour][0]=1374436800&fields_filter[start_tour][1]=1373400000
выводятся туры и за 22 июля и за 10 июля... очевидно что только первое значени подставляется 1374436800 вместо 1373400000 для fields_filter[start_tour][0], а для fields_filter[start_tour][1] значение остаётся прежним  1373400000

Походу дела не обойтись без создания второго поля "конечная дата" ? То есть надо всё-таки сделать Выбор тура по дате "Начальная и конечная дата" ?

« Последнее редактирование: 01 Августа 2013, 13:54:23 от Axiomateria »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Всплывающий календарь для выбора даты
« Ответ #22 : 04 Августа 2013, 04:01:35 »
я честно говоря не вижу, в вашем случае, неверного поведения системы. Еще раз кратко все что я рассказывал....

Параметр в адресной строке с
  • на конце означает что система будет искать все объекты больше этого значения. Например параметр fields_filter[start_tour][0]=1373400000 позволит вывести туры, укоторых в поле start_tour значение больше 1373400000 (то есть позже даты Tue, 09 Jul 2013 20:00:00 GMT)


Параметр в адресной строке с [1] на конце означает что система будет искать все объекты меньше этого значения. Например параметр fields_filter[start_tour][1]=1373400000 позволит вывести туры, укоторых в поле start_tour значение меньше 1373400000 (то есть раньше даты Tue, 09 Jul 2013 20:00:00 GMT).

Цитировать
НО в действительности  если не в ручную, а через выбор из календаря дату 22 июля, то вот с таким адресом
?fields_filter[start_tour][0]=1374436800&fields_filter[start_tour][1]=1373400000
выводятся туры и за 22 июля и за 10 июля... очевидно что только первое значени подставляется 1374436800 вместо 1373400000 для fields_filter[start_tour][0], а для fields_filter[start_tour][1] значение остаётся прежним  1373400000
Теперь о вашей задаче. Если вам надо вывести все мероприятия, дата начала которых лежит в определенном диапазоне, то задайте 2 вышеприведенных параметр указав им соответствующие даты начала и конца временного диапазона. Что вы в общем то и сделали, только перепутали даты у вас получилось вывести мероприятия дата начала которых меньше  09 Jul 2013 и больше 21 Jul 2013, но система за вас поменяла их местами.

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

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Всплывающий календарь для выбора даты
« Ответ #23 : 04 Августа 2013, 04:06:42 »
причем на вашем тестовом сайте я выбираю дату (например 7 июня) и получаю только один тур. Но проверяя параметры которые вы подставили в адресную строку я вижу что при моей дате 7 июня в адресную строку ушли параметры диапазона дат 6 июня - 9 июня что не совсем точно, так как у вас могло бы быть мероприятие за 9 июня и оно бы тоже попало в результат.

Если вы сами создаете этот диапазон, со создавайте его по принципу... человек указал 7 июня, значит передаем в параметры значения 7 июня 00:00 - 7 июня 23:59 (или 8 июня 00:00)

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Всплывающий календарь для выбора даты
« Ответ #24 : 05 Августа 2013, 14:39:27 »
я честно говоря не вижу, в вашем случае, неверного поведения системы.
В итоге у меня вопрос вы получили именно то что и хотели, но вы явно пишите что что-то работает не так. Что вы хотели получить в результате?
Результат устраивает на половину, то есть система выводит туры ОТ выбранной даты, но вот пока не решён вопрос с датой которая ДО.
А в итоге нужен работающий механизм, формирующий в адресной строке запрос с одинаковым значением даты ОТ и ДО. То есть пользователь выбирает (например) 22 июля из выпадающего календаря.и ему в итоге должна сформироваться такая адресная строка  http://temp03.web-image.ru/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/?fields_filter[start_tour][0]=1374436800&fields_filter[start_tour][1]=1374436800

но сейчас по факту формируется такая строка http://temp03.web-image.ru/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/?fields_filter[start_tour][0]=1374436800&fields_filter[start_tour][1]=

с обнуленными значения полей для value=""
                   <input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour][0]" />
                   <input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour][1]" />

то есть на данный момент значение поля  выбранной даты пользователем через календарь подставляется в value="" для параметра  fields_filter[start_tour][0], а для value="" fields_filter[start_tour][1] пусто...

Как сделать так что бы дата подставлялась для обоих параметров
  • и [1]  сразу ?


 что бы туры по дате ,которая (дата )будет одинакова по значению для

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Всплывающий календарь для выбора даты
« Ответ #25 : 05 Августа 2013, 15:23:16 »
а тут вы встали на грабли неправильного использования js... так как, у обоих input одинаковый id, который и используется js для подставки значения в input.. что и приводит ошибке

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Всплывающий календарь для выбора даты
« Ответ #26 : 05 Августа 2013, 16:08:49 »
а тут вы встали на грабли неправильного использования js... так как, у обоих input одинаковый id, который и используется js для подставки значения в input.. что и приводит ошибке

вот такой код сейчас выводит всплывающий календарь
               <script>
                  $(function() {
                     $( ".datepicker_class" ).datepicker({
           altField: '#publish_time_hidden',
           altFormat: "@",
           numberOfMonths: 1,
           dateFormat :'d MM, yy',
           firstDay: 1,
           dayNamesMin: [ "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" ],
           monthNames: [ "Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря" ],
           monthNamesShort: [ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" ],
           onSelect: function(dateText, inst) {
   var alt_Field = jQuery('#'+jQuery(this).attr('id')+'_hidden');
   var altFieldVal = jQuery(alt_Field).val();
   jQuery(alt_Field).val(Math.round((altFieldVal / 1000)));
        }
         });
       });
               </script>

вопрос теперь в том, как ещё один ID такой же вставить как #publish_time_hidden?

я попробовал вот так:
              
<script>
                  $(function() {
                     $( ".datepicker_class" ).datepicker({
           altField: '#publish_time_hidden',
                                    altField: '#publish_time_hidden1',
           altFormat: "@",
           numberOfMonths: 1,
           dateFormat :'d MM, yy',
           firstDay: 1,
           dayNamesMin: [ "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" ],
           monthNames: [ "Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря" ],
           monthNamesShort: [ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" ],
           onSelect: function(dateText, inst) {
   var alt_Field = jQuery('#'+jQuery(this).attr('id')+'_hidden');
   var altFieldVal = jQuery(alt_Field).val();
   jQuery(alt_Field).val(Math.round((altFieldVal / 1000)));
        }
         });
       });
               </script>

вот в такими инпутами:                  
                  <input type="hidden" class="textinputs" id="publish_time_hidden" value="" name="fields_filter[start_tour][0]" />
                   <input type="hidden" class="textinputs" id="publish_time_hidden1" value="" name="fields_filter[start_tour][1]" />

получилось вот такое (выбор даты 10 июля) http://temp03.web-image.ru/travel_tours/prefabricated_tours_to_st_petersburg_for_individual_tourists/?fields_filter[start_tour][0]=0&fields_filter[start_tour][1]=1373400000000, то есть теперь первый параметр fields_filter[start_tour][0] в адресной строке равен нулю...

Вопрос в js - для меня сложный. подскажите, пожалуйста, как надо правильно вписать второй ID в js ?




*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Всплывающий календарь для выбора даты
« Ответ #27 : 05 Августа 2013, 16:21:01 »
это вопрос к js. вы не верно используете указание параметров , второй параметр просто перекрывает первый.

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Всплывающий календарь для выбора даты
« Ответ #28 : 05 Августа 2013, 17:27:31 »
это вопрос к js. вы не верно используете указание параметров , второй параметр просто перекрывает первый.
да, я понимаю, что перекрытие случается при таких условиях, однако как сделать так, что бы последний параметр не перекрывал предыдущий, ведь в нашем случает без второго ID не обойтись ?

 

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Всплывающий календарь для выбора даты
« Ответ #29 : 05 Августа 2013, 17:45:49 »
перешустрить интернет на тему того, как при выборе даты в datepicker вписать значение в 2 поля. Это вопрос уже не к umi а к js, а так как дальше будет только больше такого, стоит потратить время и разобраться с этими вопросами