Новости 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 Гость просматривают эту тему.
  • 100 Ответов
  • 95236 Просмотров
*

morokow5

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
  • Fatal error : SQL error
RE: Проблема с авторизацией Invalid Token
« Ответ #90 : 20.04.2013, 01:54:58 »
после обновления JS с 3.4.2 на 3.14.2 (пошагово) обнаружилась проблема авторизации на сайте. А именно только через JoomShopping. через форум авторизация нормально проходит и регистрация и восстановление пароля. тоесть именно джумловская авторизация нормально работает. пробовал и через www и без www заходить и авторизовываться - разницы нет. Пишет что токен инвалид и все. Регистрация тоже не проходит. ошибка та же. восстановление пароля работает. сделал вывод что htaccess трогать бессмысленно, раз с www и без него без изменений.  ! помогите решить проблему.
*

morokow5

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
  • Fatal error : SQL error
RE: Проблема с авторизацией Invalid Token
« Ответ #91 : 22.04.2013, 17:51:06 »
Решили проблему. Если кому надо

Добавьте код <?php echo JHtml::_('form.token');?>

в файлы
components\com_jshopping\templates\ваш шаблон\user\login.php
components\com_jshopping\templates\ваш шаблон\user\register.php
*

27NataRUS

  • Захожу иногда
  • 116
  • 0 / 0
RE: Проблема с авторизацией Invalid Token
« Ответ #92 : 05.05.2013, 15:51:36 »
Сегодня весь день промучилась с Invalid Token при входе на сайт через регистрацию VirtueMart при оформлении заказа (при этом, стандартный вход работал совершенно адекватно). Перепробовала все, что было написано выше, ничего не помогало. Вспомнила, что недавно грузила плагин Security - jHackGuard, решила попробовать отключить его. И вуаля, снова входится и выходится спокойно. ))) Делюсь для того, что может, кому еще поможет решить подобную проблему.
Не понятно только, почему сразу не было такой ошибки после установки плагина, стоял с неделю, в течении которой периодически тестила сайт на заказ.
*

Tykaram

  • Захожу иногда
  • 60
  • 0 / 0
RE: Проблема с авторизацией Invalid Token
« Ответ #93 : 06.08.2013, 05:40:50 »
В файле VirtueMart.cfg.php добавьте www перед адресом вашего сайта.     http://site.com --->>> http://www.site.com
Спасибо nada мне тоже помог ваш совет, все заработало.
*

Tykaram

  • Захожу иногда
  • 60
  • 0 / 0
RE: Проблема с авторизацией Invalid Token
« Ответ #94 : 06.08.2013, 05:44:36 »
И вообще классно что что есть этот форум, польза от него просто огромная.Так что спасибо админам что ведете этот полезный ресурс, здесь люди действительно друг другу помогают!
*

Chebyrek

  • Захожу иногда
  • 162
  • 1 / 0
RE: Проблема с авторизацией Invalid Token
« Ответ #95 : 27.08.2013, 10:04:52 »
Народ, ну и я столкнулся с подобной проблемой!
При автоматическом обновлении VirtueMart 2.0.22a после нажатия "обновить до последней версии" 2.0.22b вроде как начинает качать обновление и через пару секунд Invalid Token, in store config.
В других рабочих моментах такой проблемы замечено не было!
Версия Joomla 2.5.14.  ;)
*

San4ozzZ

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Re: Проблема с авторизацией Invalid Token
« Ответ #96 : 05.10.2013, 11:37:31 »
Доступна новая версия
Установленная версия 2.0.6
Последняя версия 2.0.24
нажимаю обновить до последней версии, пишет Invalid Token, in store config

решил проблему, обновил ручками.
« Последнее редактирование: 05.10.2013, 12:17:09 от San4ozzZ »
*

Crazy_Fox

  • Осваиваюсь на форуме
  • 14
  • 1 / 0
RE: Проблема с авторизацией Invalid Token
« Ответ #97 : 08.11.2013, 13:31:31 »
Помогите побороть Invalid Token!
Joomla 1.5.22 + VirtueMart 1.1.8
Регистрация и вход пользователя проходят без проблем, все файлы (VirtueMart.cfg.php, .htaccess) давно переделаны.
Проблема возникла при восстановлении пароля, когда пользователь нажимает "Забыли пароль?", то попадает на страницу http://имя сайта/component/user/reset, там вводит свою почту и нажимает отправить, ну а далее Invalid Token.
Где копать?
*

sover

  • Новичок
  • 4
  • 0 / 0
RE: Проблема с авторизацией Invalid Token
« Ответ #98 : 12.05.2014, 23:29:12 »
Может кто может помочь. Есть форма обратной связи на сайте. Она установлена на нескольких страницах. Так вот на странице контактов, она прекрасно работает, а на других страницах она почему-то принимает неверный токен, отличный от того который на странице контактов, соответственно форма отправляется только со страницы контактов. Как можно победить данную проблему? Понимаю что где-то беда  в сессиях видимо, но в какую сторону копнуть, не пойму пока что.
*

k0st1k

  • Новичок
  • 7
  • 1 / 0
Re: Проблема с авторизацией Invalid Token
« Ответ #99 : 15.05.2017, 01:31:27 »
Зашел сюда по той же проблеме.

Проблема появляется из-за обновлений Joomla либо когда проскакиваете обновление. Лечится беда, установкой новой стабильной Joomla с нуля.
Если влом то читаем ниже.


Сначала были Крякозябры -> перевел в UTF 8 -> Неверный параметр ->  нашел в переводе RU-ru.ini -> Invalid Token. И вот я тут)

Ничего из того что в этой ветке мне не помогло. Стоит Joomla 3.6.5.

Update.

Обновил Joomla до 3.7
Перестало появляться Invalid token, вместо этого вход на сайт приходится делать дважды. Т.е. сначала ввожу логин и пароль, жму вход.
Меня кидает на эту же страницу, думаю с тем же инвалид токен (только его не показывает система), потом ввожу ещё раз логин и пароль (хорошо что есть авто заполнение) и захожу нормально.

Для меня и так сойдет, главное заходит, но для стороннего пользователя это неудобно.

Update:
Обновился для Joomla 3.7.1 - проблема не ушла(.

На англо сайтах пишут тоже самое, делайте редирект и все заработает.
Я его сделал, причем сотней разных способов. Мне не помогло.
Судя страницам Google, проблеме лет 10 и не решена она до сих пор.

У меня несколько сайтов, все на Joomla. На них не нужна была авторизация, вот теперь понадобилась, и возникли проблемы.
Также думаю что может помочь сторонний плагин или модуль входа в обход стандартного. Буду пробовать.

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

UPDATE. РЕШЕНО!

Наконец-то). Но придется кое-чем пожертвовать.

Итак:

Лечим Регистрацию и Вход Invalid Token или абракадабра или Неверный параметр

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

Только перед такой процедурой желательно, даже обязательно поставить Google капчу на регистрацию и желательно на вход.
Лезем в эти файлы
ваш-сайт/components/com_users/controllers/registration.php  - строку 111 комментируем двумя слешами //
Код
$this->checkToken();
(в нотепад++ строка станет серой).

и этот файл

ваш-сайт/components/com_users/controllers/user.php - строку 30 комментируем двумя слешами //
Код
$this->checkToken('post')
; (в нотепад++ строка станет серой);

Как вы понимаете, первый токен помогает в регистрации, второй при логине. Создайте копию оригинальных и работающих php (причем дополнительно с пост_фиксом_work - например), чтобы потом легко было все заменить при обновлении Joomla.

registration_work.php
user_work.php

При обновлении Joomla просто сделайте копию внутри папки, обновленноу файлу дайте имя блабла_original (например) скопируйте еще раз registration_work.php и уберите _work.
Таким образом у вас должно остаться:

registration_work.php
user_work.php

registration_original.php
user_original.php

файлы которые считывает система:
registration.php
user.php

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

Тада)))

Всё.

Обновите проблемную страницу CTRL+F5 - обновление минуя кэш браузера. (можете даже не чистить кэш и к :o ки  ). Если у вас стоит сторонний компонент для кэша, то лучше почистите.

Пару дней назад вышла Joomla 3.7.1 с той же болячкой.
Надеюсь эту проблему поборят в будущем.

Успехов всем)

Update Joomla 3.7.4 - та же проблема)....  Я припоминаю что у меня она появилась после установки K2. Но читая отзывы проблемы есть и у тех у кого K2 не установлен. (;
« Последнее редактирование: 26.07.2017, 01:58:51 от k0st1k »
*

PaLyCH

  • Давно я тут
  • 956
  • 146 / 19
  • Менеджер проектов
RE: Проблема с авторизацией Invalid Token
« Ответ #100 : 06.10.2019, 16:55:45 »
В формах авторизации меняем путь к экшену, например:
Неправильно:
Код
<form action="<?php echo JRoute::_('index.php', true, $params->get('usesecure')); ?>" method="post" name="login" id="form-login" class="b__login">
Правильно:
Код
<form action="<?php echo JRoute::_('index.php?option=com_user&amp;view=login', true, $params->get('usesecure')); ?>" method="post" name="login" id="form-login" class="b__login">

В форме выхода непраивльно:
Код
  <form action="<?php echo JRoute::_('index.php', true, $params->get('usesecure')); ?>" method="post" id="login-form" class="right" data-id="<?php echo $user->id; ?>">
Правильно:
Код
<form action="<?php echo JRoute::_('index.php?option=com_user&amp;view=logout', true, $params->get('usesecure')); ?>" method="post" id="login-form" class="right" data-id="<?php echo $user->id; ?>">
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема со входом в Админ панель после переноса сайта

Автор Vlad Ermolaev

Ответов: 11
Просмотров: 3550
Последний ответ 12.12.2019, 15:48:25
от SeBun
Переход на PHP 7, не пускает в админку Invalid Token

Автор murzuk

Ответов: 37
Просмотров: 4769
Последний ответ 07.04.2018, 05:52:09
от capricorn
Проблема c MobileJoomla

Автор alexmishka

Ответов: 0
Просмотров: 1562
Последний ответ 25.02.2018, 20:32:10
от alexmishka
Вопрос при переходе на https/ Проблема с внутренними ссылками

Автор krot

Ответов: 4
Просмотров: 1897
Последний ответ 06.02.2018, 09:21:33
от krot
Проблема при переносе Joomla на xampp

Автор sbabaev

Ответов: 6
Просмотров: 7307
Последний ответ 28.07.2017, 09:06:10
от pro100skill