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


smarty в шаблонах печати


Сообщений в теме: 22

#1 goodcolor

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

  • Пользователи
  • PipPipPip
  • 193 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 24 Ноябрь 2016 - 23:54

Возможно ли в шаблоне печати установить условие на отображение строки таблицы?
Пытаюсь, но редактор ckeditor при переключении с источника на редактор применяет автоформатирование по своему.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#2 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 25 Ноябрь 2016 - 12:26

Скорее всего вы вставляете условие вне строк, и оно естественно ломает html-структуру документа, что редактору не нравится. Попробуйте вставить условие не нарушая структуры, внутрь <tr><td>, а чтобы строка не отображалась, можно ее скрыть стилями.

#3 goodcolor

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

  • Пользователи
  • PipPipPip
  • 193 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 25 Ноябрь 2016 - 12:33

Просмотр сообщенияCbCoder (25 Ноябрь 2016 - 12:26) писал:

Скорее всего вы вставляете условие вне строк, и оно естественно ломает html-структуру документа, что редактору не нравится. Попробуйте вставить условие не нарушая структуры, внутрь <tr><td>, а чтобы строка не отображалась, можно ее скрыть стилями.

Да, все так. Возможно вы можете дать рекомендации по настройке редактора или его отключения вовсе, только в шаблонах печати?
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#4 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 25 Ноябрь 2016 - 15:53

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

#5 goodcolor

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

  • Пользователи
  • PipPipPip
  • 193 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 25 Ноябрь 2016 - 17:36

Вашу рекомендацию принял. Просто насколько мне известно редактор можно настраивать, в частности отключать автоформатирование. Если вы можете что-нибудь порекомендовать по данному моменту лишним точно не будет. Сдерживаться от переключения на редактор - не самый интересный вариант.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#6 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 26 Ноябрь 2016 - 12:06

Просмотр сообщенияgoodcolor (25 Ноябрь 2016 - 17:36) писал:

Просто насколько мне известно редактор можно настраивать, в частности отключать автоформатирование

Вот насчет этого не в курсе, честно говоря. От вас первого услышал такой вариант. Но если сможете, то было бы неплохо если бы подсказали и нам всем тут.

#7 goodcolor

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

  • Пользователи
  • PipPipPip
  • 193 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 28 Ноябрь 2016 - 20:14

Ок, как придумаю, сразу подскажу.
Пока пытаюсь выйти из ситуации вашей рекомендацией.
Работает в html отображении шаблона, но не работает при экспорте в pdf.

Часть кода в открывающем теге строки:
<tr class="R1 {if {$Наша компания.Ставка НДС} == 0}display_none{/if}">

Файл стилей подключаю в заголовке шаблона.
Можно что-нибудь сделать, чтобы заработало в PDF?
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#8 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 29 Ноябрь 2016 - 09:35

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

#9 goodcolor

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

  • Пользователи
  • PipPipPip
  • 193 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 09 Декабрь 2016 - 11:40

Просмотр сообщенияCbCoder (29 Ноябрь 2016 - 09:35) писал:

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

Получится не по фэншую...
Т.е. через классы никак?
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#10 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 13 Декабрь 2016 - 12:34

Если класс из файла работает в html режиме, но не работает при импорте в pdf, то скорее всего это связано с тем, что стили из файла не подгружаются при импорте. Я уже сказал, что скорее всего придется использовать встроенные стили. Можно попробовать описать классы непосредственно в шаблоне.

#11 goodcolor

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

  • Пользователи
  • PipPipPip
  • 193 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 13 Декабрь 2016 - 12:47

Просмотр сообщенияCbCoder (13 Декабрь 2016 - 12:34) писал:

Если класс из файла работает в html режиме, но не работает при импорте в pdf, то скорее всего это связано с тем, что стили из файла не подгружаются при импорте. Я уже сказал, что скорее всего придется использовать встроенные стили. Можно попробовать описать классы непосредственно в шаблоне.
Смущает то, что класс R1 при этом импортируется нормально, он так же находится в файле стилей как и класс display_none.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#12 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 13 Декабрь 2016 - 14:13

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

#13 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 13 Декабрь 2016 - 14:17

Возможно кстати что знак подчеркивания виноват, я как-то слышал что это невалидный символ для имен классов.

#14 goodcolor

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

  • Пользователи
  • PipPipPip
  • 193 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 29 Август 2017 - 14:57

Ещё назрел вопрос по smarty.
Каким образом можно работать с атрибутом key в цикле foreach? Пытаюсь его использовать, но возникает синтаксическая ошибка.
Задача заключается в том, чтобы при переборе массива обратиться к предыдущему элементу.
Делаю так:
{foreach from="{$Спецификация}" key=k name="Спецификация" item=subtable}

Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#15 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 30 Август 2017 - 14:13

Есть же документация по smarty на их официальном сайте, в том числе русская. Насколько знаю, к предыдущему элементу там по другому обращаются, атрибут key он не для этого, это не числовой ключ, а символьный. Аргумент нужен чтобы получить именно текущий символьный ключ, например для второго элемента массива ['first' => 'red', 'second' => 'blue'] item будет равен 'blue', а key - 'second'. Ясно, что вы никак не получите предыдущий элемент 'red' через манипуляцию c 'second'. Припоминаю, что там есть отдельный аргумент для текущего номера итерации, видимо вам нужен он.

#16 goodcolor

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

  • Пользователи
  • PipPipPip
  • 193 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 30 Август 2017 - 17:08

В моём примере в принципе что-то мешает использовать атрибут key.
А именно возникает синтаксическая ошибка: Syntax Error in template "string:" on line 28 "{foreach from="{$Спецификация}" key=k name="Спецификация" item=subtable}" - Unexpected "�", expected one of: "{" , "identifier"
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#17 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 688 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 31 Август 2017 - 09:58

Посмотрел, конструкция {foreach from="{$Имя_подтаблицы}" name="Имя_подтаблицы" item=subtable} заменяется при сохранении на {foreach from="{$subtable111}" name="subtable111" item=subtable}, где 111 - id подтаблицы (именно подтаблицы как сущности, а не таблицы на которой она основана). Т.к. вы вносите свои правки, то замены не происходит и появляется ошибка. Т.о. вам надо использовать напрямую выражение с id для данной задачи: {foreach from="{$subtable111}" key=k name="subtable111" item=subtable}

#18 goodcolor

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

  • Пользователи
  • PipPipPip
  • 193 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 31 Август 2017 - 12:41

В таком случае обращение к элементу массива будет выглядеть так: {$subtable111.Название_поля}?
Пока при такой записи у меня возникает ошибка:
Syntax Error in template "string:" on line 42 "<td class='left'>{$subtable1140.Название}</td>" - Unexpected "�", expected one of: "{" , "$" , "identifier" , INTEGER

Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#19 goodcolor

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

  • Пользователи
  • PipPipPip
  • 193 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 31 Август 2017 - 13:19

Проверил ещё 2 варианта обращения к элементам массива:
  • {$subtable111.f111}, где f111 - id поля подтаблицы
  • {$Имя_подтаблицы.Название_поля}
В обоих случаях ошибок нет, но возвращаемые значения элементов массива пустые.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов

#20 goodcolor

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

  • Пользователи
  • PipPipPip
  • 193 сообщений
  • Пол:Мужчина
  • Город:Йошкар-Ола

Отправлено 31 Август 2017 - 13:23

Хотя я похоже пропустил момент относительно "id подтаблицы как сущности" и использую id таблицы, сейчас поправлю.
Компания "Хороший Цвет"
www.GoodColor.ru - поставки и производство самосветящихся товаров и материалов





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

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