Куда идем?

Seblod позволяет очень гибко работать с формами. Наверное, не будет преувеличением сказать, что значительная часть этой гибкости приходится на такие разделы, как Conditional States и Computation Rules. В этой статье я расскажу о том, что это такое, как пользоваться данным функционалом, а также покажу по шагам как с его помощью создать калькулятор расчета стоимости ОСАГО (пакет с калькулятором доступен для скачивания в конце статьи).

Для начала, определимся с терминологией. Термины «Conditional States» и «Computation Rules» в рамках данного материала можно перевести, как «Условные состояния» и «Правила вычислений. Обе функции можно найти в конструкторе форм под номером 5:

Калькулятор ОСАГО на Seblod

Ниже подробно о том, для чего они предназначены.

Conditional States (Условные состояния)

Conditional States позволяют производить действия с полями, когда выполняется какое-то определенное условие. Подробно это можно описать формулой:

СДЕЛАЙ [название поля] [действие], КОГДА [название поля] [условие]

Примеры:

  • Запиши в поле Article Alias значение поля Article Title, когда поле Article Title не пустое
  • Отключи кнопку Submit, когда поля Article Title и Article Fulltext не заполнены

Это достаточно мощный инструмент, который позволяет добавлять формам значительную гибкость.

Для того, чтобы задать для поля Conditional States, нужно перейти в настройки формы под номером 5 и нажать кнопку Add в соответствующем столбце для поля, над которым будет произведено действие(того, которое в формуле выше будет в части «сделай»). Если рассматривать наши примеры, то в первом случае нужно нажать Add у поля Article Alias, а во втором у поля Submit.

После нажатия кнопки появится следующее всплывающее окно:

Калькулятор ОСАГО на Seblod

В этом окне есть две области: States(Действие) и Triggers(Условие).

States позволяет выбрать действие, совершаемое над текущим полем, когда выполняется Triggers.

В выпадающем списке States можно выбрать одно из доступных действий:

  • is Visible – Показать. В поле справа можно установить эффект появления поля: "fade", "slide", либо оставить пустым.
  • is Hidden – Скрыть. В поле справа можно установить эффект появления поля: "fade", "slide", либо оставить пустым.
  • is Filled – Заполнить значением. Значение берется из поля справа.
  • is Filled by – Заполнить значением другого поля формы. ID поля, значение которого будет подставлено берется из поля справа.
  • is Empty – Отчистить.
  • is Enabled – Активировать.
  • is Disabled – Отключить.
  • has Class – добавить класс(значение html атрибута class)
  • hasn’t Class – удалить класс(значение html атрибута class)
  • triggers – события, которые могут происходить. Например, "change", "click", "focus". Не путайте с триггерами из правой части окна.

Поле справа от выпадающего списка позволяет задавать значения для некоторых действий. Второе поле справа от выпадающего списка, позволяет устанавливать JQUERY селектор. Список доступных селекторов можно найти здесь. Не изменяйте это поле, если не понимаете, что делаете. Далее идет чекбокс. Его смысл в том, чтобы автоматически выполнять обратные действия для некоторых условий. Например, в нашем действии:

  • Отключи кнопку Submit, когда поля Article Title и Article Fulltext не заполнены

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

  • Включи кнопку Submit, когда поля Article Title и Article Fulltext заполнены

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

Список условий Triggers работает следующим образом.

В первом широком блоке можно выбрать значение поля, применение условия к которому мы проверяем. Во втором блоке можно выбрать, собственно, условие. Условия доступны следующие:

  • Is Equal – если значение поля равно заданному значению(справа). Здесь и далее можно выбрать из выпадающего списка доступных значений, нажав значок «<<», а также задать несколько значений через запятую.
  • Is Different – если значение поля неравно заданному значению.
  • Is Filled – если поле заполнено(неважно чем).
  • Is Empty – если поле не заполнено.
  • Is Changed – если в поле изменена информация(изменен текст, выбрана другая опция из списка, и т.д).
  • Is Pressed – если поле выделено/нажата кнопка.
  • Call Function – если вызвана JS-функция, которая указана справа.

Еще имеется маленький блок выбора and/or. Он позволяет добавить логическое И/ИЛИ, если для одного действия должно выполняться несколько условий или любое из приведенных.

Для одного поля можно добавлять несколько действий (используя иконку зеленого плюсика), каждое из которых, в свою очередь, может иметь несколько условий. В настоящий момент 5.

Вот и все настройки условных состояний.

Computation Rules (Правила вычислений)

Computation Rules позволяют производить над полями некоторые математические действия.

Для того, чтобы задать полю Computation Rules, нужно перейти в настройки формы под номером 5 и нажать кнопку Add в соответствующем столбце для поля, в которое будет записан результат вычисления.

После нажатия кнопки появится следующее всплывающее окно:

Калькулятор ОСАГО на Seblod

Здесь все проще, чем с условными состояниями. Поля следующие:

  • Computation – позволяет указать математическую операцию, которая будет выполняться.
  • Fields – позволяет добавить поля, значения которых будут участвовать в вычислениях.
  • Чекбокс «Custom Attribute» позволяет использовать не стандартное значение атрибута Value, а значение того атрибута html-поля, которое будет указано (работает для атрибутов типа "data-*").
  • Format/Precision – позволяет округлить результат.
  • Rule – позволяет указать какие правила(округления?) будут использованы: указанные здесь или из общих настроек.
  • Trigger Event – условие, при котором будет произведен расчет. Пока доступно только два условия: изменение значения одного из участвующих в расчете полей и оно же, только с помощью клавиатуры(на «отжатие» клавиши).

Таким образом, производится вычисление значений полей. Стоить отметить, что для одного поля доступно только одно правило вычисления, т.е. мы не можем изменять формулу при каком-то условии, но, как вы увидите ниже, пользуясь простой математикой и смекалкой, это ограничение в некоторой степени можно обойти.

Создаем калькулятор ОСАГО

Я долго думал, какой пример хорошо может продемонстрировать возможности условных состояний и правил вычисления. В результате, замахнулся, ни много ни мало, на калькулятор ОСАГО.

Для людей, не знакомых с программированием любые калькуляторы всегда являются проблемой. Сложность в том, что для калькулятора нет готового универсального решения. Каждый калькулятор уникален, а потому это стихия программирования. И вот, что вы думаете? Seblod позволяет сделать калькулятор, не написав ни строчки кода! Ниже привожу подробное описание создания калькулятора, а в конце статьи можно скачать пакет калькулятора ОСАГО для Seblod.

Теория

При создании любого калькулятора для сайта первым делом нужно разобраться в его тонкостях и изучить все формулы. В случае с ОСАГО формула очень простая:

Стоимость ОСАГО = Тб × Кт × Ко × Квс × Км × Кбм,

где:

  • Тб – базовый страховой тариф,
  • Кт – коэффициент, зависящий от места жительства собственника транспортного средства(разный для разных регионов и городов страны),
  • Ко – коэффициент, зависящий от наличия сведений о количестве лиц, допущенных к управлению ТС,
  • Квс – коэффициент, зависящий от возраста и опыта водителя,
  • Км – коэффициент, зависящий от мощности двигателя авто,
  • Кбм – бонус-малус(скидка за безаварийную езду). Определяется по таблице.

Вот и всё. Теперь о том, где взять эти коэффициенты.

Коэффициент Тб берется из таблицы:

                        Тип и категория транспортного средства

 Базовый страховой тариф, руб.

 Мотоциклы, мотороллеры (категории А)

 1215

                                               Легковые автомобили (категории В)

 Физических лиц, ИП

 1980

 Юридических лиц

 2375

 Легковые автомобили (категории В) такси

 2965

 Грузовые автомобили (категории С)

 С разрешенной максимальной массой 16 тонн и менее

 2025

 С разрешенной максимальной массой более 16 тонн

 3240

 Прицепы к грузовым автомобилям, полуприцепы, прицепы-роспуски

 810

Автобусы (категории D)

 С числом пассажирских мест до 20 включительно

 1620

 С числом пассажирских мест более 20

 2025

 Автобусы, используемые в качестве такси

 2965

 Троллейбусы

 1620

 Трамваи

 1010

 Тракторы, самоходные дорожно-строительные и иные машины

 1215

 Прицепы к тракторам, самоходным дорожно-строительным и иным машинам

 305

Коэффициент Кт берется из таблицы(таблица очень большая, ниже приведена только ее часть для примера):

Место жительства собственника ТС

Коэффициент для ТС, за исключением тракторов, самоходных дорожно-строительных и иных машин и прицепов к ним

Коэффициент для тракторов, самоходных дорожно-строительных и иных машин и прицепов к ним

Алтайский край

Барнаул

1.7

1

Бийск

1.2

0.8

Заринск

1.1

0.8

Новоалтайск

1.1

0.8

Рубцовск

1.1

0.8

Прочие города

0.7

0.5

Амурская область

Белогорск

1

0.8

Свободный

1

0.8

Благовещенск

1.4

0.8

Прочие города

0.85

0.5

Архангельская область

Архангельск

1.8

1

Котлас

1.6

1

Северодвинск

1.7

1

Прочие города

0.85

0.5

Коэффициент Ко:

Здесь существует два варианта: первый – список водителей строго определён, и второе – количество водителей неограниченно. За это отвечает коэффициент с длинным названием – "коэффициент, зависящий от наличия сведений о количестве лиц, допущенных к управлению ТС". В первом случае, когда количество водителей ограничено, берется коэффициент 1,0, а когда ограничения по количеству водителей нет – применяется коэффициент 1,8.

Коэффициент Квс:

  • Возраст водителя до 22 лет включительно, стаж до 3 лет включительно, тогда берется коэффициент 1,8
  • Возраст до 22 лет включительно, стаж свыше 3 лет – коэффициент 1,6
  • Возраст старше 22 лет стаж до 3 лет включительно – коэффициент 1,7
  • Возраст старше 22 лет стаж свыше 3 лет – коэффициент 1,0

Коэффициент Км:

  • До 50 л.с. включительно - 0,6
  • от 51 до 70 включительно - 1,0
  • от 71 до 100 включительно - 1,1
  • от 101 до 120 включительно - 1,2
  • от 121 до 150 включительно - 1,4
  • от 151 - 1,6

Коэффициент Кбм берется из таблицы:

Класс на начало годового срока страхования

Коэффициент

Класс по окончании годового срока страхования, с учетом наличия страховых случаев

без выплат

1 выплата

2 выплаты

3 выплаты

4 и более выплат

М

2,45

0

М

М

М

М

0

2,3

1

М

М

М

М

1

1,55

2

М

М

М

М

2

1,4

3

1

М

М

М

3

1,0

4

1

М

М

М

4

0,95

5

2

1

М

М

5

0,9

6

3

1

М

М

6

0,85

7

4

2

М

М

7

0,8

8

4

2

М

М

8

0,75

9

5

2

М

М

9

0,7

10

5

2

1

М

10

0,65

11

6

3

1

М

11

0,6

12

6

3

1

М

12

0,55

13

6

3

1

М

13

0,5

13

7

3

1

М

Создание типа контента и полей

После того, как мы разобрались с теорией, можно перейти к практике.

Шаг 1. Создаем пакет OSAGO.

1. Переходим в менеджер пакетов Seblod и добавляем новый:

Калькулятор ОСАГО на Seblod

2. Заполняем необходимые опции в соответствии с рисунком ниже:

Калькулятор ОСАГО на Seblod

Пакет создан.

Шаг 2. Создаем тип контента OSAGO.

1. Переходим в типы контента и добавляем новый:

Калькулятор ОСАГО на Seblod

2. Выбираем скелет OSAGO:

Калькулятор ОСАГО на Seblod

3. Заполняем необходимые опции в соответствии с рисунком ниже:

Калькулятор ОСАГО на Seblod

Здесь следует сделать оговорку. Наш калькулятор будет полностью работать в браузере клиента, не взаимодействуя с сервером. Т.е. данные расчетов не сохраняются на сайте. Если данные необходимо сохранять, то в поле Object нужно выбрать место хранения этих данных.

Шаг 3. Создаем поля для типа контента OSAGO.

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

Название поля

Тип поля

Тип и категория транспортного средства

Select Simple

Место жительства собственника ТС

Select Simple

Место жительства собственника ТС2

Select Simple

Количество водителей ограничено?

Form Radio

Возраст водителя

Select Simple

Мощность двигателя

Select Simple

Бонус-малус

Select Simple

Стоимость ОСАГО

Text

Рассчитать

Free Text

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

Почему полей «Место жительства собственника ТС» два? Дело в том, что коэффициент Кт зависит не только от места жительства собственника авто, но и от типа транспортного средства. Посмотрите табличку этого коэффициента. Как учесть это в формуле? Очевидно, что пользователю нужно предоставлять один из двух наборов коэффициентов для выбора, в зависимости от типа транспортного средства. Мы не можем исключить их правил расчета какое-то поле, но можем воспользоваться простой математикой. Стоимость полиса – это произведение всех коэффициентов. Сделаем так, чтобы коэффициентов места жительства было два:

Стоимость ОСАГО = Тб × Кт1 × Кт2 × Ко × Квс × Км × Кбм,

а дальше, в зависимости от выбранного типа транспортного средства, будет делать один из коэффициентов(поле, которое не участвует в расчете) равным единице. Как известно, при умножении на единицу произведение не меняется. Вот такая хитрость.

Ниже показан рисунок с настройками поля типа SELECT:

Калькулятор ОСАГО на Seblod

Здесь есть всего одна особенность. Когда мы задаем опции для выбора, то делается это в формате:

ЗАГОЛОВОК=ЗНАЧЕНИЕ

Именно здесь мы связываем отдельные опции с коэффициентами, которые будут использованы в расчете. Именно здесь мы задаем значения этих коэффициентов.

Важный момент.

Обработка полей триггерами в Conditional States, когда происходит сравнение со значением поля, работает не по заголовкам, а по значениям из формата:

ЗАГОЛОВОК=ЗНАЧЕНИЕ

 

Пример:

Коэффициент Тб, рассчитываемый по таблице может принимать одинаковое значение 1215 для двух разных типов транспортных средств:  «Мотоциклы, мотороллеры (категории А)» и «Тракторы, самоходные дорожно-строительные и иные машины». Соответственно, если мы захотим использовать триггер сравнения, чтобы, в зависимости от типа транспортного средства показать или скрыть поля коэффициентов Кт1 или Кт2, вот так:

Калькулятор ОСАГО на Seblod

то столкнемся с проблемой: при выборе какого из двух полей: «Мотоциклы, мотороллеры (категории А)» или «Тракторы, самоходные дорожно-строительные и иные машины» мы должны выполнять действие? Ведь их значения одинаковы! Триггер в этом случае будет срабатывать на любое поле, что недопустимо.

Для того чтобы избежать этой проблемы, я использовал еще один маленький трюк. В опциях для поля типов транспортных средств написал:

Мотоциклы, мотороллеры (категории А)=1215

Тракторы, самоходные дорожно-строительные и иные машины=1215.0

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

Все поля заполняются одинаково. Отдельно стоит остановиться только на поле «Рассчитать». Это поле – кнопка. Причем такая кнопка, которая ничего не делает, не отправляет данные формы на сервер. К сожалению, кнопки, которая ничего не делает, в Seblod нет. Да и зачем? =) Именно поэтому было использовано поле типа Free Text, которое позволяет вывести в форму произвольный html-элемент. В этом поле нужно открыть редактор кода и заполнить его следующим образом:

Калькулятор ОСАГО на Seblod

Код такой:

<p><input id="osago_submit" class="btn btn-primary" name="osago_submit" type="reset" value="Рассчитать" /></p>

Зачем нам кнопка, которая ничего не делает? При ее нажатии будет срабатывать триггер отображения поля стоимости ОСАГО и триггеры сброса всех полей.

После того, как все поля созданы  и настроены, останется лишь настроить Conditional States и Computation Rules

Шаг 4. Настройка Conditional States и Computation Rules.

С Computation Rules все просто. Это правило задается только для поля «Стоимость ОСАГО». Его настройки выглядят следующим образом:

Калькулятор ОСАГО на Seblod

Conditional States нужно задать для следующих полей:

Место жительства собственника ТС:

Калькулятор ОСАГО на Seblod

Место жительства собственника ТС2:

Калькулятор ОСАГО на Seblod

 

Возраст водителя:

Калькулятор ОСАГО на Seblod

 

Стоимость ОСАГО:

Калькулятор ОСАГО на Seblod

Всё. Калькулятор готов! Остается только вывести его на сайт. Для этого создаем пункт меню типа SEBLOD-Form и выбираем в его настройках нужный тип контента. После этого на сайте появится пункт меню «Калькулятор ОСАГО», при открытии которого мы увидим наш калькулятор:

Калькулятор ОСАГО на Seblod

Калькулятор показывает только нужные для заполнения поля. Например, если количество водителей не ограничено, то показывать поле «Возраст водителя» не имеет смысла. Это удобно для пользователей.

Вот так, достаточно легко и быстро мы создали довольно сложный калькулятор ОСАГО, который, в отличие от большинства сайтов, работает без перезагрузки страницы. Аналогичным образом мы можем создать и калькулятор каско после гарантии. Да, внешний вид оставляет желать лучшего, но это уже вопрос простого оформления через CSS. Ниже вы можете скачать пакет с калькулятором, установить его на ваш сайт с Seblod 3.2 и посмотреть, как он работает или использовать в своих целях. Единственная вещь, которую нужно доделать – ввести в полях для Кт1 и Кт2 все города и коэффициенты для них. Я добавил только около десятка для примера.

Скачать калькулятор ОСАГО для SEBLOD от wedal.ru.

Об авторе
Wedal
(Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Добавить комментарий

Комментарии  
0
Здравствуйте, а можно попросить Вас написать как реализовать пример, который приведен в статье:

Запиши в поле Article Alias значение поля Article Title, когда поле Article Title не пустое
0
Герман, для поля Article Alias, добавляем условное состояние:
is Filled by[id поля Article Title] WHEN Article Title Is Filled
0
Спасибо!

А какие есть атрибуты у filled by?

Использую Select Dynamic Cascad, нужно заполнить другое поля текстом выбранного пункта.
0
Герман, только ID поля, из которого нужно взять значение. В вашем случае просто подставляете ID поля Select Dynamic Cascad.
0
Добрый день.
Пытаюсь сделать появление/скрытие или enabled/disabled с кнопкой submit при выборе чекбокса. Ничего не получается. Я что-то не так делаю или с кнопками это не работает? Другие поля замечательно скрываются и появляются по нажатию чекбокса...
0
inquisitor, должно работать. Conditional States нужно задавать кнопке Submit.
0
Добрый день. Подскажите, пожалуйста, в чем может быть причина не присвоения класса?
Есть радио селектор: Продано/не продано. С помощью его значений пытаюсь присвоить фото определенный класс. Настройки поля Conditional States для фото такие:
http://c2n.me/iavbPx
0
Leonellka, вы в одно состояние поместили сразу три действия. На каждое действие нужно заводить отдельное состояние. Посмотрите предпоследний рисунок в этой статье. Примерно так.
0
Виталий, здравствуйте. Подскажите, пожалуйста, как решить проблему.
Мне нужно в одном поле собрать текстовые значения других полей. В настройках «Computation Rules» выбираю «Computation: Concatenate», затем добавляю необходимые поля. Проблема в том, что тип одного из этих полей – «Group X», и информация из него не попадает в нужное поле. Каким образом можно добавить в нужное поле и информацию из «Group X»?
0
Serge, стандартно - никак. Что такое Group X? Это группа полей. Т.е. значением этого поля является набор полей, а не их значения. Короче говоря, не получится. Если только в коде макета доставать эти данные.
0
Спасибо. Это печально.
Но я заглянул в БД - там в поле типа Group X записаны все значения всех объединенных в нем полей в формате Custom. Неужели нельзя как-то выудить их оттуда, очистив от символов служебного форматирования Seblod?
0
Serge, можно только через PHP. Работа со строками.
0
Добрый день. Возник вопрос. Когда создается тип поля, то сначала вводится название, псевдоним, куда сохранять и др. данные. После сохранения поля для ввода этих данных исчезают. Как поменять эти данные после сохранения типа поля?
0
AlexPol, если вы про название и псевдоним, то никак. Соответствующие поля создаются и в базе данных. Если очень нужно поменять, то удалите это поле и создайте его заново. Настройки же поля можно менять и после создания.
0
Проблема:
есть поля (simple) A, B, C, D, E, F
есть поле (text) G для вывода результата вычислений

формула, которую пытаюсь реализовать выглядит так: G = (A + B + C) * D / F

Когда вхожу в поле G ( в Computation Rules ) там только вижу возможность суммировать поля , перемножать, а вот как реализовать вычисление по формуле (для примера) G = (A + B + C) * D / F не могу понять как сделать.
0
Well, http://wedal.ru/forum/seblod/5537-kak-realizovat-vychislenie-po-formule-v-seblod.html#6818
0
RP Google Map V2.3 dont work on joomla 3.3.6 помогите починить плагин sebloda

ветка на форуме
http://www.seblod.com/community/forums/fields-plug-ins/rp-google-map-v2-3?thanks=seb_forum_topic&thanks=seb_forum_topic&thanks=seb_forum_topic&thanks=seb_forum_topic


JDatabase::loadResultArray() has been removed. Use JDatabase::loadColumn() instead.
JDatabase::query() has been deprecated. JDatabase::execute() should be used alternatively

http://docs.joomla.org/Potential_backward_compatibility_issues_in_Joomla_3.0_and_Joomla_Platform_12.1#JDatabase
http://www.geneticspro.net/faq/questions-about-the-joomla/152-potential-backward-compatibility-issues-in-joomla-3-0.html
http://docs.joomla.org/Selecting_data_using_JDatabase

i attached file pls make a new version

rp_google_map.php with code ups to joomla 3
errors :

Notice: Undefined variable: sStorageTable in /public_html/plugins/cck_field/rp_google_map/rp_google_map.php on line 302
Strict Standards: Creating default object from empty value in /public_html/plugins/cck_field/rp_google_map/rp_google_map.php on line 399
Notice: Undefined property: stdClass::$errmsg in /public_html/plugins/cck_field/rp_google_map/rp_google_map.php on line 1190

*****************************RP Google Maps DEBUG*******************************
$ID: 18
$rplat:
$rplong:
$rpAddress: Россия, Москва
$rpMapType: ROADMAP
$rpZoomLevel: 14
$rpHeight: 320px
$rpWidth: 480px
$rpKML:
$rpUserControls:
Markers: 2
## Marker: 0 ############ -
$aMarkers[$i]->errno :
$aMarkers[$i]->errmsg :
$aMarkers[$i]->sql :
$aMarkers[$i]->geo :
$aMarkers[$i]->icon : images/m/house.png
$aMarkers[$i]->title : Россия, Москва
$aMarkers[$i]->infowin : Россия, Москва
## Marker: 1 ############ -
$aMarkers[$i]->errno : 0
$aMarkers[$i]->errmsg : No Error - Marker Initialized
$aMarkers[$i]->sql :
$aMarkers[$i]->geo :
$aMarkers[$i]->icon : images/m/house.png
$aMarkers[$i]->title : Россия, Москва
$aMarkers[$i]->infowin : Россия, Москва
*****************************RP Google Maps DEBUG END*******************************

Notice: Undefined variable: sScript in /public_html/plugins/cck_field/rp_google_map/rp_google_map.php on line 678
Notice: Undefined variable: sScript in /public_html/plugins/cck_field/rp_google_map/rp_google_map.php on line 753
Notice: Undefined property: stdClass::$errno in /public_html/plugins/cck_field/rp_google_map/rp_google_map.php on line 767
Notice: Undefined variable: sJavaScriptforMap in /public_html/plugins/cck_field/rp_google_map/rp_google_map.php on line 40
0
Alex3000, вы же сами привели ответ :-) :

Цитата:

JDatabase::loadResultArray() has been removed. Use JDatabase::loadColumn() instead.
JDatabase::query() has been deprecated. JDatabase::execute() should be used alternatively

0
Добрый день, наведите, пожалуйста, на мысль, как с помощью Conditional State и Computation Rules, сделать в форме, где есть 2 поля типа Calendar, что бы при установке даты в одно поле, автоматически устанавливалась дата на день позже в другом поле, как вообще работать с датами в Seblod, прибавлять и убавлять дни и тд? PS копирование той же даты через filled by... в другое поле получается, а вот ее изменение никак(( мой e-mail:
0
А что, как и где нужно прописать, чтобы кондишены начали работать в кастомном шаблоне (seb-minima), при условии того, что я, переопределяю поля...?

Стандартными средствами, кондишены - не работают... Как только отключаю оверайд позиции, кондишены, начинают работать...

Как-то проскакивало такое предложение:

Код:

$myFields = $cck->getFields('mainbody');
if (!empty($myFields)) {
foreach ($myFields as $myField) {
$myField=$cck->get('myFieldName');
if ($myField->conditional) {
$this->setConditionalStates($myField);
};
};
};

но я, к сожалению, не помню, что, куда и как...

Разместил этот код в коде переопределения позиции - не работают кондишены...
0
По-ходу, я, понял, из-за чего, могут не работать кондишены...

Я, в своей форме, использую getForm вместо renderField, т. к. мне, в данной, конкретной форме, выводить lael - не нужно...
Когда я, заменил все getForm на renderField, конишены - заработали так, как нужно, но когда вернул все обратно, кондишены, перестали работать...

Как быть?

Заранее благодарю за ответы!
0
Dgikar, кондишены работают через JS и, по всей вероятности, используют какие-то идентификаторы или классы полей, которые как раз формирует рендеринг Seblod. Тут только копать в скрипты с целью найти эти идентификаторы и добавить их в собственном макете, либо использовать рендеринг полей.
0
Добрый день! Подскажите, пожалуйста, почему не работает Conditional States, когда задаётся для полей типа Select - Multiple? Я что-то неправильно делаю или для данного типа поля Conditional States не задаётся вообще?
0
Inna, приведите пример того, как именно задаете.
0
У меня создано поле (тип Select - Multiple) со списком самых крупных городов страны. Последняя запись в списке: "Изменить город". Когда пользователь кликает на данную запись, должно появляться поле со списком областей (тип Select - Simple), здесь выбирается область, затем населённый пункт. В поле со списком областей задано следующее: States: is Visible, Triggers: название поля-is Equal|In - ССК_ССК_Изменить город. Но при клике на "Изменить город" поле с областями не появляется.
0
Inna, значение списка изменить город, должно иметь численное значение, уж извините за тавтологию. Т.е. в настройках поля выбора города вы должны написать, например:
изменить город = 999
А затем указать это значение 999 в значении триггера, вы же указываете, как я понял, ССК_ССК_Изменить город, что неверно.
0
Wedal, спасибо большое за ответ. В поле с городами я "Изменить город" заменила на "Изменить город = 999". В поле с областями в Triggers сейчас стоит значение: название поля с городами - is Equal|In - 999. Но на сайте при клике на "Изменить город" поле с областями по прежнему не появляется. Наверное, где-то я делаю ошибку? Извините за глупые вопросы. С себлод работаю не часто, поэтому знаю этот компонент плохо.
0
Inna, тогда попробуйте проделать тоже самое с Select - Simple, а не Select - Multiple. С ним точно должно работать. Если не работает, то это ваша ошибка. Если работать будет, то, возможно, проблема в Seblod.
0
Wedal, в том то и дело, что с Select - Simple работает нормально. У меня изначально был тип поля Select - Simple и никаких проблем не было. И только когда я поменяла тип поля на Select - Multiple, поле с областями перестало появляться. А вся беда в том, что Select - Simple мне не подходит. А если проблема в Seblod, то никак эту проблему решить нельзя? Спасибо.
0
А как при помощи кондишенов, сбраcывать checked на unchecked у CheckBox'a?

Заранее благодарю за ответы
0
Dgikar, честно говоря, не пробовал. Можно попробовать через is Empty или trigger: change или trigger: click.
0
Добрый день! Подскажите пожалуйста как заполнить поле Article Category ID в зависимости от значения другого поля статьи.
Делаю так для поля Article Category Id
This field [Is Filled ] - [91] - [ #form#] - [v] WHEN [car model audi] - [is Acual/In] - [A3]
0
Demios, да, всё правильно. Не работает?
0
Спасибо за ответ. Разобрался сам. У меня было создано несколько действий и условий. После того как убрал галочки между действиями и условиями все заработало.
0
Здравствуйте, Wedal. Подскажите, пожалуйста, что я делаю не так.
Я хочу, чтобы некое поле становилось видимым только при условии, что материалу присвоен определенный тег (например, с id=2). В "Conditional States" я прописываю следующее:
This field [is Visible ] WHEN [Article Tags] - [is Ecual/In] - [2]
Однако это почему-то не работает.
0
Rumata, я не уверен, что это вообще триггеры. Триггеры обрабатывает JavaScript - язык браузера. Триггер выполняется на определенное действие, выполненное в браузере, например, клик, или загрузку страницы. Поле у статьи в любом случае будет, оно может быть просто невидимым. Я уже не помню, выполняет ли треггер действие сразу при загрузке страницы. Попробуйте указывать не ID тега, а его значение в том виде, как оно выводится на странице. А вообще, правильным вариантом здесь является проверка тега в коде макета на стороне сервера (через php) с последующим выводом или пропуском вывода вашего поля.
0
Это я не уточнил, что имею в виду создание материала: автор добавляет определенный тег, и некое поле становится видимым, чтобы в него можно было что-то внести. Тут уже через php не проверишь.
С другими полями такое Conditional States работает: например, если вместо тегов проверять, скажем, значение поля title, то нужно поле действительно появляется, если ввести определенный заголовок:
This field [is Visible ] WHEN [Article Title] - [is Ecual/In] - [Определенный заголовок]
А вот с тегами то же самое почему-то не работает (даже если указывать не id, а текст тега).
0
Rumata, я не могу сказать наверняка, т.к. не провал такой трюк с тегами, но есть вероятность, что они хранятся немного в другом формате. Вы ведь можете добавить в одно поле несколько тегов? Скорее всего из-за этого не работают Conditional States. Здесь уже придется писать свой JS-код с использованием jQuery. Это не так сложно, как кажется. Там будет всего несколько строчек.
0
Здравствуйте!
Думаю всем будет интересен следующий вопрос с этим калькулятором:
какие поля нужны и как необходимо доработать настройки этого калькулятора,

1. чтобы по нажатию кнопки "рассчитать" создавался "материал Joomla" в определенной категории состоящий из текста в виде: Вы _______ (имя пользователя) правильно заполнили все поля в калькуляторе и стоимость Вашего ОСАГО составляет ______ руб. Ниже справочно указан перечень значений который выбрал пользователь, а еще ниже добавлен текст, например чтото типа "спасибо за обращение" и кнопка "нажмите чтобы связаться с нами" (по нажатию которой откроется окно с функционалом написания письма администрации ну или "админу категории"
2. пользователь автоматически переходил на эту страницу по нажатию кнопки "рассчитать"
3. чтобы потом в базе хранился и сам созданный материал и выбранные пользователем значения во время заполнения калькулятора

Заранее спасибо ГУРУ за подробный ответ. Не скрою, интерес есть личный к этому вопросу, и прежде всего хочу увидеть алгоритм действий чтобы по его образу и подобию решить свою задачу. Думаю с такими вопросами столкнулись и другие начинающие изучать возможности этого расширения.
0
Serg, ваша задача в чем-то даже проще описанной в этой статье. Вы должны:

1) Создать новый тип контента и реализовать на нем калькулятор из статьи с той лишь разницей, что поле итоговой стоимости будет убрано, а кнопка расчета будет стандартной кнопкой сабмита нового материала.

2) В настройках типа контента, вкладки Site/Configuration, вы выставляете опцию Redirection на Content. Таким образом, после сохранения пользователь будет перенаправлен на страницу просмотра введенных данных.

3) Далее вам нужно создать собственный макет просмотра контента, используя переопределения (подробности здесь: http://wedal.ru/rasshireniya-joomla/seblod-konstruktor-kontenta-cck-dlya-joomla-chast-11-znakomstvo-s-shablonami-seblod.html). Можно, конечно, попробовать создать страницу результата и в самом конструкторе Seblod, но как по мне, в PHP-макете это сделать гораздо проще. В нем вам будут доступны все введенные пользователем данные, останется только написать формулу для их подсчета и вывести результат. Там же вы можете задать любой дополнительный текст и вообще всё, что душе угодно.
0
Спасибо!
за это время не спеша осваивая Seblod получилось то, что хотелось (ну почти то что хотелось - дорабатываю еще сам контент), но принцип понятен.
Вопрос возможно не из этой темы, но очень насущный. Что необходимо сделать, чтобы Seblod увидел типы полей JomSocial, а кроме полей конечно хотелось бы чтобы он увидел и формы контента которое это расширение имеет? Увидеть сами формы контента было бы предпочтительней.
Мне необходимо доработать некоторые поля в JomSocial, например добавить поля недостающие в форму создания событий, или в форму создания групп. (В обратную сторону все получается, например выбрать значение из конкретного поля таблицы JS - у Sebloda получается через поле динамического селекта.)
P/S Изучаю сам, помощь только инет и Ваши советы. Кстати по пункту 3 получилось сделать проще - через сами настройки моего уникального контента но, чтобы просмотреть, то что кнопкой сабмит создается понадобилось создать пункт меню с выводом всех материалов из данной категории - в шаблоне вывода стандартных материалов по умолчанию тут же появилась навигация и тд)
0
Уперся в проблему и не знаю как решить.
Есть два поля - одно текстовое - например типа "title", второе поле категории Simple. В значение третьего поля через Conditional States записывается текст (название категории второго поля - не нашел другого пути как вытянуть в форме значение второго поля как текст).
Суть проблемы мне необходимо в четвертое поле записать объединенную строку типа: "текстовое значение категории из третьего поля"+"текст из поля title".
В четвертом поле выбираю в Computation Rules string concatenate и ставлю два два поля - четвертое и первое.
Сложение не происходит = показывает только текст из title. Если складываю второе поле и первое - то по умолчанию создается запись "текст из title"+"id категории(цифра)"

Подскажите как правильно сделать, чтобы 1. складывался именно текст (2.желательно через пробел). Перелопатил кучу мануала, испробовал все, но так и не понял, что нужно записать и как в Computation Rules string concatenate. Заранее спасибо - надежда только на Вас.
0
serg, не стоит использовать Computation Rules для получения какого-то значения для записи в базу данных, если оно каким-то образом связано с правами пользователей. Здесь всё работает через JavaScript. Вы формируете запись в скрытое поле скриптами, на основе заполнения других полей, а затем отправляете ее на сервер. Любой человек, знакомый в Firebug'ом, сможет подделать такую запись. Вообще, такие вещи правильнее делать уже на стороне сервера, сначала проверяя входные данные, а затем формируя нужную запись.

В вашем случае могу посоветовать вот это расширение SEBLOD:
https://www.seblod.com/store/extensions/2191
Оно платное, но зато делает, по-моему, именно то, что вам нужно.
0
Подскажите как увеличить значение поля (формат-календарь) на определенное значение и записать это значение в фрмате календарь?
0
Евгений, http://wedal.ru/forum/seblod/5849-raschjot-dat.html