Seblod позволяет очень гибко работать с формами. Наверное, не будет преувеличением сказать, что значительная часть этой гибкости приходится на такие разделы, как Conditional States и Computation Rules. В этой статье я расскажу о том, что это такое, как пользоваться данным функционалом, а также покажу по шагам как с его помощью создать калькулятор расчета стоимости ОСАГО (пакет с калькулятором доступен для скачивания в конце статьи).
Содержание
Для начала, определимся с терминологией. Термины «Conditional States» и «Computation Rules» в рамках данного материала можно перевести, как «Условные состояния» и «Правила вычислений. Обе функции можно найти в конструкторе форм под номером 5:
Ниже подробно о том, для чего они предназначены.
Conditional States (Условные состояния)
Conditional States позволяют производить действия с полями, когда выполняется какое-то определенное условие. Подробно это можно описать формулой:
СДЕЛАЙ [название поля] [действие], КОГДА [название поля] [условие]
Примеры:
- Запиши в поле Article Alias значение поля Article Title, когда поле Article Title не пустое
- Отключи кнопку Submit, когда поля Article Title и Article Fulltext не заполнены
Это достаточно мощный инструмент, который позволяет добавлять формам значительную гибкость.
Для того, чтобы задать для поля Conditional States, нужно перейти в настройки формы под номером 5 и нажать кнопку Add в соответствующем столбце для поля, над которым будет произведено действие(того, которое в формуле выше будет в части «сделай»). Если рассматривать наши примеры, то в первом случае нужно нажать Add у поля Article Alias, а во втором у поля Submit.
После нажатия кнопки появится следующее всплывающее окно:
В этом окне есть две области: 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 в соответствующем столбце для поля, в которое будет записан результат вычисления.
После нажатия кнопки появится следующее всплывающее окно:
Здесь все проще, чем с условными состояниями. Поля следующие:
- 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 и добавляем новый:
2. Заполняем необходимые опции в соответствии с рисунком ниже:
Пакет создан.
Шаг 2. Создаем тип контента OSAGO.
1. Переходим в типы контента и добавляем новый:
2. Выбираем скелет OSAGO:
3. Заполняем необходимые опции в соответствии с рисунком ниже:
Здесь следует сделать оговорку. Наш калькулятор будет полностью работать в браузере клиента, не взаимодействуя с сервером. Т.е. данные расчетов не сохраняются на сайте. Если данные необходимо сохранять, то в поле 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:
Здесь есть всего одна особенность. Когда мы задаем опции для выбора, то делается это в формате:
ЗАГОЛОВОК=ЗНАЧЕНИЕ
Именно здесь мы связываем отдельные опции с коэффициентами, которые будут использованы в расчете. Именно здесь мы задаем значения этих коэффициентов.
Важный момент.
Обработка полей триггерами в Conditional States, когда происходит сравнение со значением поля, работает не по заголовкам, а по значениям из формата:
ЗАГОЛОВОК=ЗНАЧЕНИЕ
Пример:
Коэффициент Тб, рассчитываемый по таблице может принимать одинаковое значение 1215 для двух разных типов транспортных средств: «Мотоциклы, мотороллеры (категории А)» и «Тракторы, самоходные дорожно-строительные и иные машины». Соответственно, если мы захотим использовать триггер сравнения, чтобы, в зависимости от типа транспортного средства показать или скрыть поля коэффициентов Кт1 или Кт2, вот так:
то столкнемся с проблемой: при выборе какого из двух полей: «Мотоциклы, мотороллеры (категории А)» или «Тракторы, самоходные дорожно-строительные и иные машины» мы должны выполнять действие? Ведь их значения одинаковы! Триггер в этом случае будет срабатывать на любое поле, что недопустимо.
Для того чтобы избежать этой проблемы, я использовал еще один маленький трюк. В опциях для поля типов транспортных средств написал:
Мотоциклы, мотороллеры (категории А)=1215
Тракторы, самоходные дорожно-строительные и иные машины=1215.0
Числа одинаковые, но триггер сравнения воспримет их по-разному и проблема не возникнет.
Все поля заполняются одинаково. Отдельно стоит остановиться только на поле «Рассчитать». Это поле – кнопка. Причем такая кнопка, которая ничего не делает, не отправляет данные формы на сервер. К сожалению, кнопки, которая ничего не делает, в Seblod нет. Да и зачем? =) Именно поэтому было использовано поле типа Free Text, которое позволяет вывести в форму произвольный html-элемент. В этом поле нужно открыть редактор кода и заполнить его следующим образом:
Код такой:
<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 все просто. Это правило задается только для поля «Стоимость ОСАГО». Его настройки выглядят следующим образом:
Conditional States нужно задать для следующих полей:
Место жительства собственника ТС:
Место жительства собственника ТС2:
Возраст водителя:
Стоимость ОСАГО:
Всё. Калькулятор готов! Остается только вывести его на сайт. Для этого создаем пункт меню типа SEBLOD-Form и выбираем в его настройках нужный тип контента. После этого на сайте появится пункт меню «Калькулятор ОСАГО», при открытии которого мы увидим наш калькулятор:
Калькулятор показывает только нужные для заполнения поля. Например, если количество водителей не ограничено, то показывать поле «Возраст водителя» не имеет смысла. Это удобно для пользователей.
Вот так, достаточно легко и быстро мы создали довольно сложный калькулятор ОСАГО, который, в отличие от большинства сайтов, работает без перезагрузки страницы. Аналогичным образом мы можем создать и калькулятор каско после гарантии. Да, внешний вид оставляет желать лучшего, но это уже вопрос простого оформления через CSS. Ниже вы можете скачать пакет с калькулятором, установить его на ваш сайт с Seblod 3.2 и посмотреть, как он работает или использовать в своих целях. Единственная вещь, которую нужно доделать – ввести в полях для Кт1 и Кт2 все города и коэффициенты для них. Я добавил только около десятка для примера.
Запиши в поле Article Alias значение поля Article Title, когда поле Article Title не пустое
is Filled by[id поля Article Title] WHEN Article Title Is Filled
А какие есть атрибуты у filled by?
Использую Select Dynamic Cascad, нужно заполнить другое поля текстом выбранного пункта.
Пытаюсь сделать появление/скрытие или enabled/disabled с кнопкой submit при выборе чекбокса. Ничего не получается. Я что-то не так делаю или с кнопками это не работает? Другие поля замечательно скрываются и появляются по нажатию чекбокса...
Есть радио селектор: Продано/не продано. С помощью его значений пытаюсь присвоить фото определенный класс. Настройки поля Conditional States для фото такие:
http://c2n.me/iavbPx
Мне нужно в одном поле собрать текстовые значения других полей. В настройках «Computation Rules» выбираю «Computation: Concatenate», затем добавляю необходимые поля. Проблема в том, что тип одного из этих полей – «Group X», и информация из него не попадает в нужное поле. Каким образом можно добавить в нужное поле и информацию из «Group X»?
Но я заглянул в БД - там в поле типа Group X записаны все значения всех объединенных в нем полей в формате Custom. Неужели нельзя как-то выудить их оттуда, очистив от символов служебного форматирования Seblod?
есть поля (simple) A, B, C, D, E, F
есть поле (text) G для вывода результата вычислений
формула, которую пытаюсь реализовать выглядит так: G = (A + B + C) * D / F
Когда вхожу в поле G ( в Computation Rules ) там только вижу возможность суммировать поля , перемножать, а вот как реализовать вычисление по формуле (для примера) G = (A + B + C) * D / F не могу понять как сделать.
ветка на форуме
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
Стандартными средствами, кондишены - не работают... Как только отключаю оверайд позиции, кондишены, начинают работать...
Как-то проскакивало такое предложение:
но я, к сожалению, не помню, что, куда и как...
Разместил этот код в коде переопределения позиции - не работают кондишены...
Я, в своей форме, использую getForm вместо renderField, т. к. мне, в данной, конкретной форме, выводить lael - не нужно...
Когда я, заменил все getForm на renderField, конишены - заработали так, как нужно, но когда вернул все обратно, кондишены, перестали работать...
Как быть?
Заранее благодарю за ответы!
изменить город = 999
А затем указать это значение 999 в значении триггера, вы же указываете, как я понял, ССК_ССК_Изменить город, что неверно.
Заранее благодарю за ответы
Делаю так для поля Article Category Id
This field [Is Filled ] - [91] - [ #form#] - [v] WHEN [car model audi] - [is Acual/In] - [A3]
Я хочу, чтобы некое поле становилось видимым только при условии, что материалу присвоен определенный тег (например, с id=2). В "Conditional States" я прописываю следующее:
This field [is Visible ] WHEN [Article Tags] - [is Ecual/In] - [2]
Однако это почему-то не работает.
С другими полями такое Conditional States работает: например, если вместо тегов проверять, скажем, значение поля title, то нужно поле действительно появляется, если ввести определенный заголовок:
This field [is Visible ] WHEN [Article Title] - [is Ecual/In] - [Определенный заголовок]
А вот с тегами то же самое почему-то не работает (даже если указывать не id, а текст тега).
Думаю всем будет интересен следующий вопрос с этим калькулятором:
какие поля нужны и как необходимо доработать настройки этого калькулятора,
1. чтобы по нажатию кнопки "рассчитать" создавался "материал Joomla" в определенной категории состоящий из текста в виде: Вы _______ (имя пользователя) правильно заполнили все поля в калькуляторе и стоимость Вашего ОСАГО составляет ______ руб. Ниже справочно указан перечень значений который выбрал пользователь, а еще ниже добавлен текст, например чтото типа "спасибо за обращение" и кнопка "нажмите чтобы связаться с нами" (по нажатию которой откроется окно с функционалом написания письма администрации ну или "админу категории"
2. пользователь автоматически переходил на эту страницу по нажатию кнопки "рассчитать"
3. чтобы потом в базе хранился и сам созданный материал и выбранные пользователем значения во время заполнения калькулятора
Заранее спасибо ГУРУ за подробный ответ. Не скрою, интерес есть личный к этому вопросу, и прежде всего хочу увидеть алгоритм действий чтобы по его образу и подобию решить свою задачу. Думаю с такими вопросами столкнулись и другие начинающие изучать возможности этого расширения.
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-макете это сделать гораздо проще. В нем вам будут доступны все введенные пользователем данные, останется только написать формулу для их подсчета и вывести результат. Там же вы можете задать любой дополнительный текст и вообще всё, что душе угодно.
за это время не спеша осваивая Seblod получилось то, что хотелось (ну почти то что хотелось - дорабатываю еще сам контент), но принцип понятен.
Вопрос возможно не из этой темы, но очень насущный. Что необходимо сделать, чтобы Seblod увидел типы полей JomSocial, а кроме полей конечно хотелось бы чтобы он увидел и формы контента которое это расширение имеет? Увидеть сами формы контента было бы предпочтительней.
Мне необходимо доработать некоторые поля в JomSocial, например добавить поля недостающие в форму создания событий, или в форму создания групп. (В обратную сторону все получается, например выбрать значение из конкретного поля таблицы JS - у Sebloda получается через поле динамического селекта.)
P/S Изучаю сам, помощь только инет и Ваши советы. Кстати по пункту 3 получилось сделать проще - через сами настройки моего уникального контента но, чтобы просмотреть, то что кнопкой сабмит создается понадобилось создать пункт меню с выводом всех материалов из данной категории - в шаблоне вывода стандартных материалов по умолчанию тут же появилась навигация и тд)
Есть два поля - одно текстовое - например типа "title", второе поле категории Simple. В значение третьего поля через Conditional States записывается текст (название категории второго поля - не нашел другого пути как вытянуть в форме значение второго поля как текст).
Суть проблемы мне необходимо в четвертое поле записать объединенную строку типа: "текстовое значение категории из третьего поля"+"текст из поля title".
В четвертом поле выбираю в Computation Rules string concatenate и ставлю два два поля - четвертое и первое.
Сложение не происходит = показывает только текст из title. Если складываю второе поле и первое - то по умолчанию создается запись "текст из title"+"id категории(цифра)"
Подскажите как правильно сделать, чтобы 1. складывался именно текст (2.желательно через пробел). Перелопатил кучу мануала, испробовал все, но так и не понял, что нужно записать и как в Computation Rules string concatenate. Заранее спасибо - надежда только на Вас.
В вашем случае могу посоветовать вот это расширение SEBLOD:
https://www.seblod.com/store/extensions/2191
Оно платное, но зато делает, по-моему, именно то, что вам нужно.