В этой статье я расскажу как с помощью SEBLOD создать калькулятор расчета стоимости ОСАГО.
SEBLOD - Конструктор контента(CCK) для Joomla. Часть 12. Conditional States и Computation Rules. Создаем калькулятор ОСАГО.

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 – условие, при котором будет произведен расчет. Пока доступно только два условия: изменение значения одного из участвующих в расчете полей и оно же, только с помощью клавиатуры(на «отжатие» клавиши).

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

Conditional States и Computation Rules. Создаем калькулятор ОСАГО.

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

Для людей, не знакомых с программированием любые калькуляторы всегда являются проблемой. Сложность в том, что для калькулятора нет готового универсального решения. Каждый калькулятор уникален, а потому это стихия программирования. И вот, что вы думаете? 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 # Герман 07.04.2014 19:13
Здравствуйте, а можно попросить Вас написать как реализовать пример, который приведен в статье:

Запиши в поле Article Alias значение поля Article Title, когда поле Article Title не пустое
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 08.04.2014 02:41
Герман, для поля Article Alias, добавляем условное состояние:
is Filled by[id поля Article Title] WHEN Article Title Is Filled
Ответить | Ответить с цитатой | Цитировать
0 # Герман 13.04.2014 08:00
Спасибо!

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

Использую Select Dynamic Cascad, нужно заполнить другое поля текстом выбранного пункта.
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 14.04.2014 03:17
Герман, только ID поля, из которого нужно взять значение. В вашем случае просто подставляете ID поля Select Dynamic Cascad.
Ответить | Ответить с цитатой | Цитировать
0 # inquisitor 15.05.2014 05:49
Добрый день.
Пытаюсь сделать появление/скрытие или enabled/disabled с кнопкой submit при выборе чекбокса. Ничего не получается. Я что-то не так делаю или с кнопками это не работает? Другие поля замечательно скрываются и появляются по нажатию чекбокса...
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 16.05.2014 02:17
inquisitor, должно работать. Conditional States нужно задавать кнопке Submit.
Ответить | Ответить с цитатой | Цитировать
0 # Leonellka 23.05.2014 12:12
Добрый день. Подскажите, пожалуйста, в чем может быть причина не присвоения класса?
Есть радио селектор: Продано/не продано. С помощью его значений пытаюсь присвоить фото определенный класс. Настройки поля Conditional States для фото такие:
http://c2n.me/iavbPx
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 26.05.2014 02:55
Leonellka, вы в одно состояние поместили сразу три действия. На каждое действие нужно заводить отдельное состояние. Посмотрите предпоследний рисунок в этой статье. Примерно так.
Ответить | Ответить с цитатой | Цитировать
0 # Serge 10.07.2014 13:43
Виталий, здравствуйте. Подскажите, пожалуйста, как решить проблему.
Мне нужно в одном поле собрать текстовые значения других полей. В настройках «Computation Rules» выбираю «Computation: Concatenate», затем добавляю необходимые поля. Проблема в том, что тип одного из этих полей – «Group X», и информация из него не попадает в нужное поле. Каким образом можно добавить в нужное поле и информацию из «Group X»?
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 11.07.2014 05:05
Serge, стандартно - никак. Что такое Group X? Это группа полей. Т.е. значением этого поля является набор полей, а не их значения. Короче говоря, не получится. Если только в коде макета доставать эти данные.
Ответить | Ответить с цитатой | Цитировать
0 # Serge 11.07.2014 18:44
Спасибо. Это печально.
Но я заглянул в БД - там в поле типа Group X записаны все значения всех объединенных в нем полей в формате Custom. Неужели нельзя как-то выудить их оттуда, очистив от символов служебного форматирования Seblod?
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 11.08.2014 04:18
Serge, можно только через PHP. Работа со строками.
Ответить | Ответить с цитатой | Цитировать
0 # AlexPol 03.08.2014 11:28
Добрый день. Возник вопрос. Когда создается тип поля, то сначала вводится название, псевдоним, куда сохранять и др. данные. После сохранения поля для ввода этих данных исчезают. Как поменять эти данные после сохранения типа поля?
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 11.08.2014 04:20
AlexPol, если вы про название и псевдоним, то никак. Соответствующие поля создаются и в базе данных. Если очень нужно поменять, то удалите это поле и создайте его заново. Настройки же поля можно менять и после создания.
Ответить | Ответить с цитатой | Цитировать
0 # Well 09.08.2014 11:13
Проблема:
есть поля (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 # Wedal 11.08.2014 04:17
Well, http://wedal.ru/forum/seblod/5537-kak-realizovat-vychislenie-po-formule-v-seblod.html#6818
Ответить | Ответить с цитатой | Цитировать
0 # Alex3000 06.11.2014 19:01
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 # Wedal 07.11.2014 02:48
Alex3000, вы же сами привели ответ :-) :
Цитата:
JDatabase::loadResultArray() has been removed. Use JDatabase::loadColumn() instead.
JDatabase::query() has been deprecated. JDatabase::execute() should be used alternatively
Ответить | Ответить с цитатой | Цитировать
0 # Alex Smart 16.03.2015 11:40
Добрый день, наведите, пожалуйста, на мысль, как с помощью Conditional State и Computation Rules, сделать в форме, где есть 2 поля типа Calendar, что бы при установке даты в одно поле, автоматически устанавливалась дата на день позже в другом поле, как вообще работать с датами в Seblod, прибавлять и убавлять дни и тд? PS копирование той же даты через filled by... в другое поле получается, а вот ее изменение никак(( мой e-mail:
Ответить | Ответить с цитатой | Цитировать
0 # Dgikar 19.07.2015 00:02
А что, как и где нужно прописать, чтобы кондишены начали работать в кастомном шаблоне (seb-minima), при условии того, что я, переопределяю поля...?

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

Как-то проскакивало такое предложение:
Код:$myFields = $cck->getFields('mainbody');
if (!empty($myFields)) {
foreach ($myFields as $myField) {
$myField=$cck->get('myFieldName');
if ($myField->conditional) {
$this->setConditionalStates($myField);
};
};
};
но я, к сожалению, не помню, что, куда и как...

Разместил этот код в коде переопределения позиции - не работают кондишены...
Ответить | Ответить с цитатой | Цитировать
0 # Dgikar 19.07.2015 03:00
По-ходу, я, понял, из-за чего, могут не работать кондишены...

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

Как быть?

Заранее благодарю за ответы!
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 24.07.2015 09:22
Dgikar, кондишены работают через JS и, по всей вероятности, используют какие-то идентификаторы или классы полей, которые как раз формирует рендеринг Seblod. Тут только копать в скрипты с целью найти эти идентификаторы и добавить их в собственном макете, либо использовать рендеринг полей.
Ответить | Ответить с цитатой | Цитировать
0 # Inna 09.08.2015 11:46
Добрый день! Подскажите, пожалуйста, почему не работает Conditional States, когда задаётся для полей типа Select - Multiple? Я что-то неправильно делаю или для данного типа поля Conditional States не задаётся вообще?
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 10.08.2015 04:31
Inna, приведите пример того, как именно задаете.
Ответить | Ответить с цитатой | Цитировать
0 # Inna 10.08.2015 10:10
У меня создано поле (тип Select - Multiple) со списком самых крупных городов страны. Последняя запись в списке: "Изменить город". Когда пользователь кликает на данную запись, должно появляться поле со списком областей (тип Select - Simple), здесь выбирается область, затем населённый пункт. В поле со списком областей задано следующее: States: is Visible, Triggers: название поля-is Equal|In - ССК_ССК_Изменить город. Но при клике на "Изменить город" поле с областями не появляется.
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 11.08.2015 03:29
Inna, значение списка изменить город, должно иметь численное значение, уж извините за тавтологию. Т.е. в настройках поля выбора города вы должны написать, например:
изменить город = 999
А затем указать это значение 999 в значении триггера, вы же указываете, как я понял, ССК_ССК_Изменить город, что неверно.
Ответить | Ответить с цитатой | Цитировать
0 # Inna 11.08.2015 14:10
Wedal, спасибо большое за ответ. В поле с городами я "Изменить город" заменила на "Изменить город = 999". В поле с областями в Triggers сейчас стоит значение: название поля с городами - is Equal|In - 999. Но на сайте при клике на "Изменить город" поле с областями по прежнему не появляется. Наверное, где-то я делаю ошибку? Извините за глупые вопросы. С себлод работаю не часто, поэтому знаю этот компонент плохо.
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 12.08.2015 03:38
Inna, тогда попробуйте проделать тоже самое с Select - Simple, а не Select - Multiple. С ним точно должно работать. Если не работает, то это ваша ошибка. Если работать будет, то, возможно, проблема в Seblod.
Ответить | Ответить с цитатой | Цитировать
0 # Inna 12.08.2015 09:04
Wedal, в том то и дело, что с Select - Simple работает нормально. У меня изначально был тип поля Select - Simple и никаких проблем не было. И только когда я поменяла тип поля на Select - Multiple, поле с областями перестало появляться. А вся беда в том, что Select - Simple мне не подходит. А если проблема в Seblod, то никак эту проблему решить нельзя? Спасибо.
Ответить | Ответить с цитатой | Цитировать
0 # Dgikar 16.02.2016 11:21
А как при помощи кондишенов, сбраcывать checked на unchecked у CheckBox'a?

Заранее благодарю за ответы
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 17.02.2016 04:37
Dgikar, честно говоря, не пробовал. Можно попробовать через is Empty или trigger: change или trigger: click.
Ответить | Ответить с цитатой | Цитировать
0 # Demios 07.03.2016 07:48
Добрый день! Подскажите пожалуйста как заполнить поле Article Category ID в зависимости от значения другого поля статьи.
Делаю так для поля Article Category Id
This field [Is Filled ] - [91] - [ #form#] - [v] WHEN [car model audi] - [is Acual/In] - [A3]
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 09.03.2016 08:34
Demios, да, всё правильно. Не работает?
Ответить | Ответить с цитатой | Цитировать
0 # Demios 12.03.2016 14:25
Спасибо за ответ. Разобрался сам. У меня было создано несколько действий и условий. После того как убрал галочки между действиями и условиями все заработало.
Ответить | Ответить с цитатой | Цитировать
0 # Rumata 14.03.2016 19:19
Здравствуйте, Wedal. Подскажите, пожалуйста, что я делаю не так.
Я хочу, чтобы некое поле становилось видимым только при условии, что материалу присвоен определенный тег (например, с id=2). В "Conditional States" я прописываю следующее:
This field [is Visible ] WHEN [Article Tags] - [is Ecual/In] - [2]
Однако это почему-то не работает.
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 16.03.2016 05:33
Rumata, я не уверен, что это вообще триггеры. Триггеры обрабатывает JavaScript - язык браузера. Триггер выполняется на определенное действие, выполненное в браузере, например, клик, или загрузку страницы. Поле у статьи в любом случае будет, оно может быть просто невидимым. Я уже не помню, выполняет ли треггер действие сразу при загрузке страницы. Попробуйте указывать не ID тега, а его значение в том виде, как оно выводится на странице. А вообще, правильным вариантом здесь является проверка тега в коде макета на стороне сервера (через php) с последующим выводом или пропуском вывода вашего поля.
Ответить | Ответить с цитатой | Цитировать
0 # Rumata 16.03.2016 13:47
Это я не уточнил, что имею в виду создание материала: автор добавляет определенный тег, и некое поле становится видимым, чтобы в него можно было что-то внести. Тут уже через php не проверишь.
С другими полями такое Conditional States работает: например, если вместо тегов проверять, скажем, значение поля title, то нужно поле действительно появляется, если ввести определенный заголовок:
This field [is Visible ] WHEN [Article Title] - [is Ecual/In] - [Определенный заголовок]
А вот с тегами то же самое почему-то не работает (даже если указывать не id, а текст тега).
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 17.03.2016 05:52
Rumata, я не могу сказать наверняка, т.к. не провал такой трюк с тегами, но есть вероятность, что они хранятся немного в другом формате. Вы ведь можете добавить в одно поле несколько тегов? Скорее всего из-за этого не работают Conditional States. Здесь уже придется писать свой JS-код с использованием jQuery. Это не так сложно, как кажется. Там будет всего несколько строчек.
Ответить | Ответить с цитатой | Цитировать
0 # Serg 06.10.2016 19:21
Здравствуйте!
Думаю всем будет интересен следующий вопрос с этим калькулятором:
какие поля нужны и как необходимо доработать настройки этого калькулятора,

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

Заранее спасибо ГУРУ за подробный ответ. Не скрою, интерес есть личный к этому вопросу, и прежде всего хочу увидеть алгоритм действий чтобы по его образу и подобию решить свою задачу. Думаю с такими вопросами столкнулись и другие начинающие изучать возможности этого расширения.
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 07.10.2016 05:05
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 # Serg 22.10.2016 18:59
Спасибо!
за это время не спеша осваивая Seblod получилось то, что хотелось (ну почти то что хотелось - дорабатываю еще сам контент), но принцип понятен.
Вопрос возможно не из этой темы, но очень насущный. Что необходимо сделать, чтобы Seblod увидел типы полей JomSocial, а кроме полей конечно хотелось бы чтобы он увидел и формы контента которое это расширение имеет? Увидеть сами формы контента было бы предпочтительней.
Мне необходимо доработать некоторые поля в JomSocial, например добавить поля недостающие в форму создания событий, или в форму создания групп. (В обратную сторону все получается, например выбрать значение из конкретного поля таблицы JS - у Sebloda получается через поле динамического селекта.)
P/S Изучаю сам, помощь только инет и Ваши советы. Кстати по пункту 3 получилось сделать проще - через сами настройки моего уникального контента но, чтобы просмотреть, то что кнопкой сабмит создается понадобилось создать пункт меню с выводом всех материалов из данной категории - в шаблоне вывода стандартных материалов по умолчанию тут же появилась навигация и тд)
Ответить | Ответить с цитатой | Цитировать
0 # serg serg 06.11.2016 13:08
Уперся в проблему и не знаю как решить.
Есть два поля - одно текстовое - например типа "title", второе поле категории Simple. В значение третьего поля через Conditional States записывается текст (название категории второго поля - не нашел другого пути как вытянуть в форме значение второго поля как текст).
Суть проблемы мне необходимо в четвертое поле записать объединенную строку типа: "текстовое значение категории из третьего поля"+"текст из поля title".
В четвертом поле выбираю в Computation Rules string concatenate и ставлю два два поля - четвертое и первое.
Сложение не происходит = показывает только текст из title. Если складываю второе поле и первое - то по умолчанию создается запись "текст из title"+"id категории(цифра)"

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

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