Перейти к содержимому


Упрощаем работу с шаблонами


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 96

#41 Koderhan

Koderhan

    Активный участник

  • Модератоpы
  • 6 227 сообщений

Отправлено 26 Декабрь 2012 - 13:51

Просмотр сообщенияgalkinalexey (26 Декабрь 2012 - 13:28) писал:

Спасибо за скорый ответ.
Постараюсь объяснить :)
Предположим я создаю контент-страницу, например она будет называться "КОНТЕНТ", а в URL ее название будет .../page/kontent
Эту страницу я заполняю всякой информацией, и хочу повесить на нее слайдер сверху.
Если в шаблоне "HTML" написать код:

<!-- Вешаем слайдер -->
{% IF PAGE_CONTENT %}
  <!-- Обёртка, указывающая стиль темы -->
  <div class="theme-default" style="padding-top:1em;">
<!-- Непосредственный код слайдера -->
<div id="slider" style="display:none;">
  <a href="url"><img src="url" alt="Описание" />
  <a href="url"><img src="url" alt="Описание">
  <a href="url"><img src="url" alt="Описание" /><!--title="Пример картинки с заголовком"-->
</div>
  </div>

  <!-- Запуск слайдера -->
  <script type="text/javascript">
$(window).load(function() {
$('#slider').show().nivoSlider();
});
  </script>
{% ENDIF %}


То слайдер появится на всех контент страницах, какие только были созданы.
А мне необходимо чтобы на определенной контент-странице был слайдер.
Я попытался вставить вот такой код:


<!-- Вешаем слайдер  -->
{% IF PAGE_CONTENT.name=kontent %}   <-- Вот как тут правильно написать имя страницы c названием kontent?
  <!-- Обёртка, указывающая стиль темы -->
  <div class="theme-default" style="padding-top:1em;">
<!-- Непосредственный код слайдера -->
<div id="slider" style="display:none;">
  <a href="url"><img src="url" alt="Описание" />
  <a href="urll"><img src="url" alt="Описание">
  <a href="url"><img src="url" alt="Описание" /><!--title="Пример картинки с заголовком"-->
</div>
  </div>

  <!-- Запуск слайдера -->
  <script type="text/javascript">
$(window).load(function() {
$('#slider').show().nivoSlider();
});
  </script>
{% ENDIF %}

но ничего не получается.
Какие контент страницы вы имеете ввиду под словом kontent.
Если  вы хотите установить слайдер на простые страницы с статьями или любой другой текстовой информацией. То для этого вы можете просто добавить код слайдера на те страницы на которые хотите установить слайдер.

#42 support

support

    Активный участник

  • Модераторы
  • 3 683 сообщений
  • ГородМосква

Отправлено 18 Январь 2013 - 23:56

Для использования логических условий, завязанных на адресе страницы можно использовать переменную:
{CURRENT_URL}
или
{MOD_LNAME} + {ACT} + {ID}

например так:

{% IF CURRENT_URL= http://site.ru/page/content %}выполнить условие на странице http://site.ru/page/content {% ENDIF %}
или
{% IF MOD_LNAME = page && ACT=content %}выполнить условие на странице http://site.ru/page/content {% ENDIF %}


#43 Dev

Dev

    Новичок

  • Пользователи
  • Pip
  • 3 сообщений

Отправлено 09 Февраль 2013 - 17:04

Насколько я понял, вложенные циклы по массивам у вас поддерживаются только в случае, если у массива тоже есть вложенное поле-массив.

Мне же необходимо сделать следующее.
Для всех модификаций (в моем случае - разные производители) товара указать:
Производителя товара (находится в массиве goods_modifications_properties)
Цену и наличие товара (находится в массиве goods_modifications)

Следующая конструкция не работает, начиная с первого внутреннего цикла по goods_modifications_properties.

{% FOR goods_modifications %}
{% FOR goods_modifications_properties %}
{% FOR values %}
{% IF goods_modifications_properties.values.ID = goods_modifications.PROPERTIES_SLUG %}
{goods_modifications_properties.NAME}: {goods_modifications_properties.values.NAME}<br>
{% ENDIF %}
{% ENDFOR %}
{% ENDFOR %}
Цена: {goods_modifications.PRICE_NOW | money_format}<br>
{% IF goods_modifications.REST_VALUE > 0 %}Есть в наличии.{% ELSE %}Нет в наличии.{% ENDIF %}<br>
{% ENDFOR %}

Т.е. цена и наличие отображаются, а вот строка "Производитель: ИМЯ_ПРОИЗВОДИТЕЛЯ" - нет.

Подскажите, как зная значение goods_modifications.PROPERTIES_SLUG, добраться до соответствующих значений из массива goods_modifications_properties.

#44 Koderhan

Koderhan

    Активный участник

  • Модератоpы
  • 6 227 сообщений

Отправлено 09 Февраль 2013 - 18:04

Все верно.
Массив goods_modifications не содержит массив goods_modifications_properties внутри себя. А значит такая конструкция не будет выполняться.
информацию в переменных сохранять тоже к сожалению нельзя...(

#45 Dworkins

Dworkins

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений

Отправлено 09 Февраль 2013 - 22:26

А как в таком случае быть, если нужно вывести список модификаций с их ценами?
Из Java-скриптов достучаться до переменных есть возможность?

#46 Dev

Dev

    Новичок

  • Пользователи
  • Pip
  • 3 сообщений

Отправлено 10 Февраль 2013 - 11:59

Просмотр сообщенияKoderhan (09 Февраль 2013 - 18:04) писал:

Все верно.
Массив goods_modifications не содержит массив goods_modifications_properties внутри себя. А значит такая конструкция не будет выполняться.
информацию в переменных сохранять тоже к сожалению нельзя...(

Задачу решил. Но уж как-то, простите, через задницу получилось (
В качестве "переменных" можно использовать hidden input'ы в самом html-документе, из которых потом значения вычитываются джава-скриптом.
Так у вас и сделано на странице товара, который содержит несколько модификаций.

Добавьте, пожалуйста, в ToDo реализацию вложенных циклов по массивам из глобального неймспейса.

#47 support

support

    Активный участник

  • Модераторы
  • 3 683 сообщений
  • ГородМосква

Отправлено 10 Февраль 2013 - 12:40

Просмотр сообщенияDev (10 Февраль 2013 - 11:59) писал:

Задачу решил. Но уж как-то, простите, через задницу получилось (
В качестве "переменных" можно использовать hidden input'ы в самом html-документе, из которых потом значения вычитываются джава-скриптом.
Так у вас и сделано на странице товара, который содержит несколько модификаций.

Добавьте, пожалуйста, в ToDo реализацию вложенных циклов по массивам из глобального неймспейса.
Задачу добавили, постараемся в ближайшее время реализовать.

#48 anudev

anudev

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений

Отправлено 21 Март 2013 - 00:30

Подскажите как применить более одной функции пост-обработки к переменной? Что-то типа такого:

{CATEGORY_DESCRIPTION | nl2br | json_encode}


#49 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 23 788 сообщений

Отправлено 21 Март 2013 - 05:53

К сожалению, шаблонизатор не поддерживает одновременное использование множества модификаторов.

#50 dfysdbu

dfysdbu

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 429 сообщений

Отправлено 29 Май 2013 - 16:35

Подскажите с помощью какой переменной можно пробежаться циклом FOR по всем товарам на сайте

такого рода блок
{% FOR goods %}

{% ENDFOR %}
Пробегает только по товрам которые есть на странице, или я что то не понима

#51 support 2.0

support 2.0

    Активный участник

  • Модераторы
  • 4 924 сообщений

Отправлено 29 Май 2013 - 17:02

Просмотр сообщенияdfysdbu (29 Май 2013 - 16:35) писал:

Подскажите с помощью какой переменной можно пробежаться циклом FOR по всем товарам на сайте

такого рода блок
{% FOR goods %}

{% ENDFOR %}
Пробегает только по товрам которые есть на странице, или я что то не понима

Если Вы имеете ввиду товары, хиты и новинки, то объединить их все нельзя, у них разные переменные. Поэтому, обратиться к массиву списка товаров можно только через goods и добавив через && другие переменные

#52 dfysdbu

dfysdbu

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 429 сообщений

Отправлено 29 Май 2013 - 18:22

Просмотр сообщенияsupport 2.0 (29 Май 2013 - 17:02) писал:

Если Вы имеете ввиду товары, хиты и новинки, то объединить их все нельзя, у них разные переменные. Поэтому, обратиться к массиву списка товаров можно только через goods и добавив через && другие переменные

Я попытался зделать следующее, найти в списке всех товаров товары с отличием наприер с ценой по акции и сделал следующий юлок

{% FOR goods %}
{% IF goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT>goods.MIN_PRICE_NOW %}



{% ENDIF %}
{% ENDFOR %}

В итоге этот блок находит товар по акции если он есть на текущей странице, если же на текущей странице нет акций он ни чего не находит. Как то можно сделать что бы перебор товара шол по всем страницам товара?

#53 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 30 Май 2013 - 03:14

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

#54 support 2.0

support 2.0

    Активный участник

  • Модераторы
  • 4 924 сообщений

Отправлено 30 Май 2013 - 10:43

Просмотр сообщенияdfysdbu (29 Май 2013 - 18:22) писал:

Я попытался зделать следующее, найти в списке всех товаров товары с отличием наприер с ценой по акции и сделал следующий юлок

{% FOR goods %}
{% IF goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT>goods.MIN_PRICE_NOW %}



{% ENDIF %}
{% ENDFOR %}

В итоге этот блок находит товар по акции если он есть на текущей странице, если же на текущей странице нет акций он ни чего не находит. Как то можно сделать что бы перебор товара шол по всем страницам товара?

Здравствуйте, если Вы хотите, чтобы в каталоге товаров у Вас акции как-то выделялись, то на них можно будет повесить ярлычки с пометкой "sale"

#55 postech

postech

    Пользователь

  • Пользователи
  • PipPip
  • 37 сообщений

Отправлено 07 Ноябрь 2013 - 00:27

Добрый день.

Задача такая: если количество символов в значении переменной goods.DESCRIPTION_SHORT меньше заданного, то необходимо добавить перевод строки (для ровного вывода всех товаров). Пытаюсь сделать так:

{% IF (goods.DESCRIPTION_SHORT | lenght)<33 %}<br>{% ENDIF %}

но при попытке сохранить изменения получаю алерт "

Во время запроса произошла ошибка. Status: «error» Thrown: «Internal Server Error»"



Как это можно реализовать?
Спасибо.

#56 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 23 788 сообщений

Отправлено 07 Ноябрь 2013 - 05:11

Попробуйте использовать условие

{% IF goods.DESCRIPTION_SHORT|lenght<33 %}<br>{% ENDIF %}


#57 postech

postech

    Пользователь

  • Пользователи
  • PipPip
  • 37 сообщений

Отправлено 07 Ноябрь 2013 - 07:45

Просмотр сообщенияVaccina (07 Ноябрь 2013 - 05:11) писал:

Попробуйте использовать условие

{% IF goods.DESCRIPTION_SHORT|lenght<33 %}<br>{% ENDIF %}

пробую - перевод строки ставится в любом случае, независимо от выполнения условия.

#58 Koderhan

Koderhan

    Активный участник

  • Модератоpы
  • 6 227 сообщений

Отправлено 07 Ноябрь 2013 - 13:38

Где именно вы вставляете данный код? Какой шаблон ?
В какой код?

#59 postech

postech

    Пользователь

  • Пользователи
  • PipPip
  • 37 сообщений

Отправлено 07 Ноябрь 2013 - 20:54

Просмотр сообщенияKoderhan (07 Ноябрь 2013 - 13:38) писал:

Где именно вы вставляете данный код? Какой шаблон ?
В какой код?

шаблон вывода товаров ("Товары"), строки после изображения товара - краткое описание и цена.

                 <div class="price fnt12n txtalgncnt">
                  {goods.DESCRIPTION_SHORT}
                </div>
                <div class="price fnt12b txtalgncnt">
                  {% IF goods.DESCRIPTION_SHORT|strlen<33 %}<br>{% ENDIF %}
                  Цена:
                  {% IF goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT>goods.MIN_PRICE_NOW %}
                    <span>{goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT | number_format("0", ",", " ")}</span>
                  {% ELSEIF goods.MIN_PRICE_OLD>goods.MIN_PRICE_NOW %}
                    <span>{goods.MIN_PRICE_OLD | number_format("0", ",", " ")}</span>
                  {% ENDIF %}
                  <em class="fnt12b">{goods.MIN_PRICE_NOW | money_format}</em>
                </div>

вот здесь можно посмотреть, что получается сейчас: http://sushi-ulyanov...land.ru/catalog - "цена" то выше, то ниже и зависит от количества строк в кратком описании. Поэтому я хочу ввести искусственно перевод строки там, где краткое описание занимает не более одной  строки - для выравнивания

#60 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 23 788 сообщений

Отправлено 08 Ноябрь 2013 - 06:13

Вам выше писали правильное условие:
{% IF goods.DESCRIPTION_SHORT|lenght<33 %}<br>{% ENDIF %}

А что вам мешает задать данному блоку с описание конкретные размеры даже в случае если оно отсутствует? У вас цена тогда всегда будет на одном месте стоять.
В main.css найдите:

#content .box .ulproduct .infoproduct .info {
color: #FFFFFF;
margin: 10px 0px;
max-height: 40px;
overflow: hidden;
width: auto;
}
замените на:

#content .box .ulproduct .infoproduct .info {
color: #FFFFFF;
margin: 10px 0px;
height: 40px;
overflow: hidden;
width: auto;
}





Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных