Новости Joomla

Свои типы полей в Joomla.

Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много

Это большая тема, о которой можно говорить очень много. Самое главное, что возможности применения ограничиваются только вашей больной фантазией. Вы строите интерфейс своего модуля или плагина и вам нужно подтянуть данные из сторонней системы (список чего-нибудь по какому-нибудь API), чтобы сохранить выбранный id в Joomla. Или сделать какую-то проверку и в зависимости от неё показать то или иное сообщение пользователю. Для этого подойдут свои пользовательские типы полей. Интерфейс Joomla по большей части описан в XML-файлах. У каждого из них свои параметры. Некоторые не описаны в документации (manual.joomla.org), поэтому самым любопытным будет полезно заглянуть в собственно файлы фреймворка по пути

libraries/src/Form/FormField.php, а так же в
libraries/src/Form/Fields. У каждого класса поля перечислены его специфические свойства, которые можно описывать в XML. А в своём типе поля вы можете устанавливать эти значения программно. В моём модуле WT Quick links под капотом происходят изменения. Теперь для работы (в админке) ему нужен вспомогательный плагин. А в самом модуле нам бы проверить, а не выключен ли он? В Joomla есть тип поля Note - заметка. Его можно использовать для вывода примечаний.

<field type="note" name="your_note_for_user" label="Заголовок примечания" title="Альтернативный способ для заголовка" description="Текст примечания" class="col-12 alert alert-info" heading="h1" close="true" />

heading - указывать уровень заголовка.
close - позволяет закрыть это примечание. В классе поля
libraries/src/Form/Field/NoteField.php описана логика вывода. И в принципе оно нам подходит для нашей задачи. Но оно будет выводить сообщение всегда, а нам нужно только тогда, когда плагин отключён. Поэтому берём и создаём свой класс поля, который мы унаследуем от
NoteField. Это значит, что у нас в руках будет весь инструментарий стандартного поля
Note + то, что мы сами добавим. В XML-манифест добавляем наше поле

<field type="systempluginstatus" name="systempluginstatus" addfieldprefix="Joomla\Module\Wtquicklinks\Site\Fields"/>

-

type - имя файла и класса,-
addfieldprefix - указываем namespace к нашему классу, может быть любой нам нужный-
name - нельзя полю без имени...Это означает, что Joomla будет использовать класс поля из файла
modules/mod_wt_quick_links/src/Fields/SystempluginstatusField.php.А в классе поля будет написано следующее:

<?php // namespace для атрибута addfieldprefix namespace Joomla\Module\Wtquicklinks\Site\Fields; // нельзя напрямую обращаться к этому файлу defined('_JEXEC') or die; // подключаем родительский класс для переопределения use Joomla\CMS\Form\Field\NoteField; use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\PluginHelper; // имя класса и имя файла точь-в-точь class SystempluginstatusField extends NoteField { protected $type = 'Systempluginstatus'; protected function getLabel() { // если плагин не включён if(PluginHelper::isEnabled('system','wtquicklinks')) { // меняем свойства родительского класса $this->class = 'alert alert-danger w-100'; $this->element['label'] = '⚠️ А-а-а-а!'; $this->element['description'] = 'Плагин не включён!!'; // и просто рендерим его с нашими свойствами return parent::getLabel(); } // А иначе всё хорошо, скрываем поле из виду. $this->parentclass = 'd-none'; return ''; } }

Просто и удобно. И людям приятно, что о них позаботились и рассказали почему что-то не работает. @webtolkru#joomla #php #webdev #разработка

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

orexov_m

  • Захожу иногда
  • 297
  • 24 / 0
Как сделать так чтобы при регистрации пользователя было только одно поле Логин, и оно же писалось в таблицу пользователей как email адрес.
То есть мне необходимо чтобы при регистрации email и логин были одним полем.

Решение :
открываем файл : /components/com_jshopping/templates/default/user/register.php

после строк  :
Код
<?php
$config_fields = $this->config_fields;
include(dirname(__FILE__)."/register.js.php");
?>
вставляем :
Код
<script type="text/javascript">
    jQuery(document).ready(function() {
      jQuery('#email').bind('keyup', function(event){repeat();});
    });
    function repeat()
    {
      jQuery("#u_name").val(jQuery("#email").val())
      }
    </script>

Далее в шаблоне вывод поля e-mail должен быть выше поля логин. То есть меняете их местаим просто.
После этого сохраняете файл. Далее через CSS скрываете строку выводящую логин.
В результате вы видите только поле e-mail но при его вводе, автоматически такими же символами заполняется и поле логина.
Ну а после качаете плагин http://extensions.joomla.org/extensions/access-a-security/site-access/email-authentication/16096
устанавливаете его и спокойно проходите авторизацию на сайте через e-mail.
« Последнее редактирование: 24.04.2012, 10:08:26 от orexov_m »
Skype:orekhov.mikhail, ICQ: 580077720, Телега
*

kurandin

  • Захожу иногда
  • 159
  • 5 / 0

Далее в шаблоне вывод поля e-mail должен быть выше поля логин. То есть меняете их местаим просто.


У меня, после вставки дкода поле
email на  92 строчке, а
u_name на 259 строчке

они уже вроде в правильном порядке, их надо менять?
*

orexov_m

  • Захожу иногда
  • 297
  • 24 / 0
У меня, после вставки дкода поле
email на  92 строчке, а
u_name на 259 строчке

они уже вроде в правильном порядке, их надо менять?

Попробуйте не скрывая их в CSS и увидите, если поле логина будет автоматом заполняться то все работает как надо. я поля расставлял в нужном себе порядке и логин и мыло у меня были в самом верху
Skype:orekhov.mikhail, ICQ: 580077720, Телега
*

kurandin

  • Захожу иногда
  • 159
  • 5 / 0
Попробуйте не скрывая их в CSS и увидите, если поле логина будет автоматом заполняться то все работает как надо. я поля расставлял в нужном себе порядке и логин и мыло у меня были в самом верху

у меня в /components/com_jshopping/templates/default/user/register.php порядок полей один
а на сайте почему-то другой

у вас тоже так?
*

orexov_m

  • Захожу иногда
  • 297
  • 24 / 0
у меня в /components/com_jshopping/templates/default/user/register.php порядок полей один
а на сайте почему-то другой

у вас тоже так?
нет. у меня такой порядок какой мне необходим, все ненужные поля я закоментировал в коде просто напросто, чтобы они мне глаза не мазолили.
Там несколько групп полей, как и в админке. возможно вы не те двигаете.
Skype:orekhov.mikhail, ICQ: 580077720, Телега
*

elvis20072008

  • Захожу иногда
  • 56
  • 1 / 0
  • Элвис жил, Элвис жив, Элвис будет жить.
У меня пишет: "Пожалуйста, введите имя пользователя." (((
Что делать? !
Joomla 2.5.11 Stabel
JS 3.14.2
*

orexov_m

  • Захожу иногда
  • 297
  • 24 / 0
Вероятно конфликт скриптов, большего не видя трудно сказать.
Адрес сайта в студию
Skype:orekhov.mikhail, ICQ: 580077720, Телега
*

elvis20072008

  • Захожу иногда
  • 56
  • 1 / 0
  • Элвис жил, Элвис жив, Элвис будет жить.
Спасибо за реагирование, но уже решил, я просто удалил массив Логин из register.php, вернул его наместо и сделал дисплей:ноне и все заработало.
*

jss

  • Осваиваюсь на форуме
  • 36
  • 9 / 0
to orexov_m спасибо за решение.
Есть один вопрос, если я ввожу email то он дублируется в поле логина по мере написания, но если выбрать email из сохраненного списка то он не дублируется.
*

orexov_m

  • Захожу иногда
  • 297
  • 24 / 0
Попробуйте вот этот код :
Код
<script type="text/javascript">
var a,L,epl=$("#email");
function epl3(){a=epl.val();$("#u_name").val(a)};epl3();
$("#email").click(function (){setTimeout('epl3()',100)});
epl.bind('mouseout mousemove keydown keypress keyup',function(e){epl3()});
</script>
Вместо того что вверху указан
« Последнее редактирование: 14.08.2013, 08:34:28 от orexov_m »
Skype:orekhov.mikhail, ICQ: 580077720, Телега
*

jss

  • Осваиваюсь на форуме
  • 36
  • 9 / 0
RE: Адрес e-mail как логин при регистрации
« Ответ #10 : 14.08.2013, 13:36:01 »
спасибо за подсказку, решил вопрос вот так

Код
<script type="text/javascript">
   jQuery(document).ready(function() {
   jQuery('#email').bind('mouseout mousemove keydown keypress keyup', function(event){repeat();});
   });
   function repeat()
   {
   jQuery("#u_name").val(jQuery("#email").val())
   }
</script>

Теперь все работает отлично
*

victorantoniak

  • Moderator
  • 1579
  • 185 / 2
  • JoomShopping Team
RE: Адрес e-mail как логин при регистрации
« Ответ #11 : 14.08.2013, 16:41:32 »
JoomShopping 3.15.2 - поле login не обязательное.
*

Sni10

  • Захожу иногда
  • 110
  • 5 / 0
  • I am a law abiding citizen . . .
RE: Адрес e-mail как логин при регистрации
« Ответ #12 : 09.10.2013, 13:46:44 »
Спасибо. Полезная вещица. Прикрутил. + отправил
*

x-masters

  • Захожу иногда
  • 80
  • 0 / 0
Re: Адрес e-mail как логин при регистрации
« Ответ #13 : 22.02.2014, 22:35:47 »
Вниманию модераторов! В новых версиях (у меня 3.16.2) Эта функция уже есть, просто снимаете обе галочки с пункта "Логин" (настройки - поля регистрации - блок "Регистрация"). Люди без необходимости начинают ломать код. Прошу указать это в шапке.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
RE: Адрес e-mail как логин при регистрации
« Ответ #14 : 23.02.2014, 10:32:22 »
Вниманию модераторов! В новых версиях (у меня 3.16.2) Эта функция уже есть, просто снимаете обе галочки с пункта "Логин" (настройки - поля регистрации - блок "Регистрация").

об этом сказали еще 10 месяцев назад :)

JoomShopping 3.15.2 - поле login не обязательное.

Люди без необходимости начинают ломать код. Прошу указать это в шапке.

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

x-masters

  • Захожу иногда
  • 80
  • 0 / 0
RE: Адрес e-mail как логин при регистрации
« Ответ #15 : 25.02.2014, 12:57:21 »
JoomShopping 3.15.2 - поле login не обязательное.
Я это видел, но здесь не хватало продолжения )
*

Zeya

  • Захожу иногда
  • 177
  • 0 / 0
Re: Адрес e-mail как логин при регистрации
« Ответ #16 : 04.09.2014, 15:43:12 »
Здравствуйте! Пытаюсь убрать поле логин, но у меня форма вообще не реагирует на эти настройки, выводит свои поля и все. В чем может быть подвох? JS 4.3.3, Шаблон beez3, default_div
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
RE: Адрес e-mail как логин при регистрации
« Ответ #17 : 04.09.2014, 16:07:00 »
какая форма?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Zeya

  • Захожу иногда
  • 177
  • 0 / 0
RE: Адрес e-mail как логин при регистрации
« Ответ #18 : 04.09.2014, 16:34:30 »
Форма регистрации.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Адрес e-mail как логин при регистрации
« Ответ #19 : 04.09.2014, 17:18:08 »
Спойлер
[свернуть]

какая форма регистрации?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Zeya

  • Захожу иногда
  • 177
  • 0 / 0
Re: Адрес e-mail как логин при регистрации
« Ответ #20 : 04.09.2014, 19:52:23 »
- АВТОБУС!
))
Цитировать
какая форма регистрации?
Форма регистрации пользователей на сайте, она стандартная, Джумловская, не плагин JS, может, поэтому и не изменяется? Для JS своя нужна? Я ее поставила, только не вижу нигде(
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
RE: Адрес e-mail как логин при регистрации
« Ответ #21 : 04.09.2014, 19:59:27 »
может, поэтому и не изменяется? Для JS своя нужна?

бинго!

Я ее поставила, только не вижу нигде
а где ищите? ставьте модуль логина от ЖШ, там будут ссылки на регистрацию в ЖШ. либо что лучше поставьте плагин переадресации регистрации и авторизации на JoomShopping
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Zeya

  • Захожу иногда
  • 177
  • 0 / 0
RE: Адрес e-mail как логин при регистрации
« Ответ #22 : 04.09.2014, 21:26:13 »
а где ищите?
в настройках ЖШ и в модулях/плагинах Joomla. Не вижу(

либо что лучше поставьте плагин переадресации регистрации и авторизации на JoomShopping
вот ведь незадача - не могу авторизоваться там(Вход запрещён! Ваша учетная запись заблокирована или ещё не активирована.), восстановление пароля не помогает, пыталась зарегистрироваться снова, с другим ящиком - не прокатило(((
*

nevigen

  • Moderator
  • 10447
  • 863 / 25
  • http://n*****n.com
RE: Адрес e-mail как логин при регистрации
« Ответ #23 : 04.09.2014, 21:40:15 »
активировать учетку надо.
посмотрите почту и ящик спама.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Zeya

  • Захожу иногда
  • 177
  • 0 / 0
Re: Адрес e-mail как логин при регистрации
« Ответ #24 : 04.09.2014, 22:02:18 »
активировать учетку надо.
посмотрите почту и ящик спама.
да у меня эта проблема давно уже( смотрела везде - не приходит ничего..
Зарегилась снова - пришлось ящик спецом заводить)
установила плагин, нигде его не вижу((
« Последнее редактирование: 04.09.2014, 22:32:07 от Zeya »
*

nevigen

  • Moderator
  • 10447
  • 863 / 25
  • http://n*****n.com
RE: Адрес e-mail как логин при регистрации
« Ответ #25 : 05.09.2014, 08:53:57 »
что значит не вижу ?
плагин в списке плагинов, если вы конечно его правильно установили.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Zeya

  • Захожу иногда
  • 177
  • 0 / 0
RE: Адрес e-mail как логин при регистрации
« Ответ #26 : 05.09.2014, 15:37:17 »
что значит не вижу ?
плагин в списке плагинов, если вы конечно его правильно установили.
установила через ЖШ установка и обновление, в плагинах все, что к ЖШ относится - это JoomShopping Plugin Extended Create Menu
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
RE: Адрес e-mail как логин при регистрации
« Ответ #27 : 05.09.2014, 15:41:27 »
ну так а что удивительного тогда? вы все плагины устанавливаете через ЖШ установка и обновление?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Zeya

  • Захожу иногда
  • 177
  • 0 / 0
RE: Адрес e-mail как логин при регистрации
« Ответ #28 : 05.09.2014, 20:22:37 »
ну так а что удивительного тогда? вы все плагины устанавливаете через ЖШ установка и обновление?
Читала, что плагины ЖШ так нужно устанавливать...
Установила... Что дальше? при переходе на регистрацию выдается ошибка " Fatal error: Call to undefined method JSite::get() in Z:\home\localhost\www\mnogo-symok\plugins\system\jshopping_registration_redirect\jshopping_registration_redirect.php on line 21"
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Адрес e-mail как логин при регистрации
« Ответ #29 : 05.09.2014, 21:10:11 »
Читала, что плагины ЖШ так нужно устанавливать...

так надо устанавливать аддоны. плагины и модули - через Joomla.

при переходе на регистрацию выдается ошибка

замените в 21-й строке
Код
$app->get('sef')
на
Код
JFactory::getConfig->get('sef')
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] - Заказ на одной странице

Автор shurakana

Ответов: 58
Просмотров: 18461
Последний ответ 16.03.2023, 09:53:16
от kit2m2
[Решено] Товар на замену в блоке с ценой

Автор dron

Ответов: 2
Просмотров: 2389
Последний ответ 13.04.2022, 16:09:53
от dron
[Решено] Разные шаблоны для разных статусов заказов

Автор nevigen

Ответов: 4
Просмотров: 4664
Последний ответ 04.04.2022, 19:45:58
от nevigen
(РЕШЕНО) Как в модуле фильтров вывести логотипы производителей?

Автор denxio

Ответов: 9
Просмотров: 2749
Последний ответ 24.05.2020, 19:22:12
от vitalicc
Модуль Логин - вывести только имя без фамилии

Автор tima

Ответов: 2
Просмотров: 708
Последний ответ 03.05.2020, 21:33:05
от tima