Новости Joomla

Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list

👩‍💻 Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list.При работе над плагином возникла необходимость указать стандартный набор из нескольких элементов стандартного поля списка. И хотелось указать их в стандартном же атрибуте default для полей. Когда это нужно?Когда Ваши пользователи устанавливают плагин и НЕ заходят в настройки - в коде вы можете использовать значения по умолчанию с помощью класса Registry (писал об этом ранее) и всегда быть уверенным, что хоть какие-то жизненно необходимые параметры к вам придут всегда. 🧐 Но как сделать то же самое для интерфейса админки?Пользователя нужно направлять, предлагать очевидный работоспособный сценарий для начала, а дальше он уже сам разберется. Когда человек заходит в параметры свежеустановленного плагина в Form ещё нет данных и параметры по умолчанию выставляются из атрибутов default в xml-полях.
<field name="showdesc" type="radio"                       label="PLG_CFI_PARAM_SHOWDESC"                       class="btn-group btn-group-yesno"                       default="1">                    <option value="0">JNO</option>                    <option value="1">JYES</option>                </field>
Здесь по умолчанию будет включено "Да". И если пользователь не переключит параметр, то при сохранении мы ожидаемо получим "да" в params плагина.Для поля списков type=&quot;list&quot; можно указать значение по умолчанию и многие знают, что его можно указать только одно.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default="id"                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
Но у нас поле с множественным выбором (атрибут multiple) и хотелось бы указать несколько значений по умолчанию...Оказывается, так можно сделать. Для этого в атрибуте default нужно указать json с нужными параметрами в виде {int}key : {string} value.Например, default='{"0":"id","1":"title"}'.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default='{"0":"id","1":"title"}'                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
⚠️ Обратите внимание на кавычки! Поскольку json_decode не понимает одинарные кавычки собственно json нужно писать с двойными, а значение для атрибута default писать в одинарные.🙏 За подсказанное решение огромное спасибо участникам нашего сообщества - разработчикам Дмитрию Васюкову (@fictionlabs) и Игорю Бердичевскому (@septdir).@joomlafeed#joomla #разработка #webdev #development

0 Пользователей и 1 Гость просматривают эту тему.
  • 16 Ответов
  • 1824 Просмотров
*

Sven

  • Захожу иногда
  • 107
  • 6 / 5
Поставил капчу на регистрацию. В форме регистрации Joomla, если код из CAPTCHA ввести Неправильно, после перезагрузки страницы, правильно введенные данные (имя, логин и т.д) сохраняются в форме и их не надо заново вводить.
А вот в форме регистрации JoomShopping данные не сохраняются, и это будет очень сильно бесить клиента, если он ошибется с циферкой))

Можно ли как-то родную джумловскую систему сохранения и подстановки данных в форме прикрутить к джумшоповской? Если нет, то как решить эту проблему?

--
Joomla 3.3.3, JoomShopping 4.6.1
Капчу Joomla подключал к JoomShopping c помощью официального плагина разработчиков "Registration captcha 1.0.0 (JoomShopping 3.11.4 / 4.0.0 or higher)"
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
как вариант поставить http://nevigen.com/ru/shop/addons/antibot-pro-registratsiya-joomshopping.html и забыть о проблемах регистрации ботов и проблем с капчей
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Не помню что то делал такое, необходимо было из одной страницы данные из формы перенести на другую. Что то через Session set.

Второй вариант вставить:
<?php echo $_POST['имяполя'] ?> в соответствующее поле. И после перезагрузки они получатся снова и добавятся в поля.

Цитировать
И после перезагрузки они получатся снова
Как то по турецки написал.. ;D
« Последнее редактирование: 27.08.2014, 15:29:25 от shurakana »
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

Sven

  • Захожу иногда
  • 107
  • 6 / 5
как вариант поставить http://nevigen.com/ru/shop/addons/antibot-pro-registratsiya-joomshopping.html и забыть о проблемах регистрации ботов и проблем с капчей
Да дело в том, что тут проблема не столько в капче, а в том что данные не сохраняются в форме. Если например не пользоваться капчей, а в настройках JoomShopping отключить загрузку скриптов, то будет тоже самое.

Второй вариант вставить:
<?php echo $_POST['имяполя'] ?> в соответствующее поле...
А куда именно это вставлять? Вот кусок кода из файла \com_jshopping\templates\responsive\user\register.php

        <?php if ($config_fields['f_name']['display']) : ?>
        <div class = "control-group">
          <div class = "control-label name">
            <?php print _JSHOP_F_NAME ?> <?php if ($config_fields['f_name']['require']) : ?><span>*</span><?php endif; ?>
          </div>
          <div class = "controls">
            <input type = "text" name = "f_name" id = "f_name" value = "" class = "input" />
          </div>
        </div>
        <?php endif; ?>
*

Sven

  • Захожу иногда
  • 107
  • 6 / 5
Вот здесь вот вроде есть решение http://joomla-support.ru/thread/32885/
но не понятно куда этот код в JoomShopping вставлять
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
у тебя есть input с именем="f_name".
вставляешь <?php echo $_POST['f_name'] ?> в value=""

Чтобы получилось так
Код
<input type="text" name="f_name" id="f_name" value="<?php echo $_POST['f_name'] ?>" class="input" />

Потом по аналогии..
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Вот здесь вот вроде есть решение http://joomla-support.ru/thread/32885/
но не понятно куда этот код в JoomShopping вставлять

Зачем писать лишнего когда можно сделать аккуратнее
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

Sven

  • Захожу иногда
  • 107
  • 6 / 5
Чтобы получилось так
Код
<input type="text" name="f_name" id="f_name" value="<?php echo $_POST['f_name'] ?>" class="input" />
Не работает этот метод к сожалению. О нем вот здесь тоже написано http://myrusakov.ru/php-save-form.html
Там наверно выше еще нужно вставить что-то типа этого:

<?php
  session_start();
  $_SESSION["f_name"] = $_POST["f_name"];
  $_SESSION["l_name"] = $_POST["l_name"];
  header("Location: ".$_SERVER["HTTP_REFERER"]);
  exit;
?>

Но если этот код вставить, то страница регистрации вообще не открывается.

Еще в файле \com_jshopping\templates\responsive\user\register.php стоит атрибут у формы autocomplete="off". Менять на "on" тоже бесполезно.
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Ух я сейчас проверю, смотри уменя.. если будет работать с тебя 100 плюсов..))

Модуль jshopping_register используешь?
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

Sven

  • Захожу иногда
  • 107
  • 6 / 5
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
И так, идешь в сайт\components\com_jshopping\controllers\user.php
после
function registersave(){
сразу добавляешь
$_SESSION['dannie'] = JRequest::get('post');

затем в register.php в нужные input'ы в valuе добавляешь

<?php echo $_SESSION['dannie']['f_name']; ?>
где f_name имя текущего поля.

Все работает.
У меня еще не установлен модуль регистрации, и я думал что в обработчике формы текущая страница, поэтому предложил сразу $_POST['f_name'];
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

Sven

  • Захожу иногда
  • 107
  • 6 / 5
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
А вообще, убери капчу, и вместо <input type="submit" class="button" value="Register"> в register.php вставь
<div onclick="loginForm.submit();">Зарегистрироваться</div>
Оформи как кнопку, и все, боты не нажимают на дивы..))
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
как говорят в Одессе, я вас умоляю :) боты и на страницы не заходят, и не только на дивы, а и на кнопки не нажимают :) это ничего не даст абсолютно в плане защиты от ботов.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
Хм, а если атрибут action="" к форме с помощью js добавлять?

Или, я чего то незнаю про ботов?
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
я чего то незнаю про ботов?

откуда ж я знаю, что вы знаете о ботах :) например, я не знаю, знаете ли вы, что есть боты, которые понимают javascript :) а в целом, вполне может быть. правда существует вероятность, что если возникнет какой-либо конфликт в js, то action не будет добавлен, и тогда даже человек не сможет зарегистрироваться.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

shurakana

  • Давно я тут
  • 792
  • 50 / 6
ну, да, тестить надо значит вышесказанное... а конфликты, они на то и конфликты чтобы их устранять...)
Эта подпись отображается внизу каждого Моего сообщения. Я также могу использовать BB код и смайлы.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Получить данные пользователя из сессии или...

Автор Dewis

Ответов: 5
Просмотров: 1354
Последний ответ 27.10.2023, 02:16:39
от Dewis
Nevigen: Переадресация регистрации и авторизации на JoomShopping

Автор Satool

Ответов: 5
Просмотров: 1116
Последний ответ 19.07.2023, 14:21:48
от nevigen
JoomShopping умер после обновления

Автор Alex_gs

Ответов: 3
Просмотров: 1069
Последний ответ 08.05.2023, 15:02:11
от Akeksandr
Не сохраняются добавленные атрибуты

Автор Alex_iPod

Ответов: 3
Просмотров: 912
Последний ответ 17.04.2023, 22:41:07
от victorantoniak
Скидка без регистрации

Автор Simply

Ответов: 5
Просмотров: 900
Последний ответ 04.04.2023, 23:52:47
от Simply