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

Basile

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Каталог гостиниц yvHotels Joomla 1.5.x 1.0.0 -описание нельзя добавлять!
*

yunoshev

  • Завсегдатай
  • 1271
  • 179 / 1
Каталог гостиниц yvHotels Joomla 1.5.x 1.0.0 -описание нельзя добавлять!
Ну, если нельзя, то нельзя.
Правда, Вы первый, кому "нельзя". :)
*

yuri-it

  • Давно я тут
  • 994
  • 44 / 3
  • Быстрый хостинг https://jehost.ru
 в демо:
Функция БД завершилась ошибкой с номером 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE LOWER(a.title) LIKE '%Поиск...%' OR LOWER(a.location) LIKE '%Поиск...%' OR' at line 6 SQL=SELECT a.*, cc.name AS category, tt.name as type FROM rlvua_yvhotels AS a LEFT JOIN rlvua_yvhotels_catg AS cc ON cc.cat_id = a.cat_id LEFT JOIN rlvua_yvhotels_type AS tt ON tt.type_id = a.type_id WHERE a.hotel_level=5 WHERE LOWER(a.title) LIKE '%Поиск...%' OR LOWER(a.location) LIKE '%Поиск...%' OR LOWER(a.description) LIKE '%Поиск...%' OR LOWER(a.email) LIKE '%Поиск...%' ORDER BY a.cat_id, a.ordering
По-настоящему быстрый хостинг для Joomla : https://jehost.ru
Отзывы: http://joomlaforum.ru/index.php/topic,109288.0.html
Отзывы по хостингу http://hosting101.ru/jehost.ru
*

Basile

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
Ошибся!!-работает
 1. не работает функция -опубликовать(всегда опубликованы)
2.можно  сделать с фотками более удобное управление,а то такая каша получается(все фотки в одной папке)...приятней удалил отель и фотки с ним удалялись..и для каждого отеля создавалась своя папка с фотками....как в агентствах недвижимости...
3.И вот еще что ,а когда #ID ххх-номера дойдут до предела ,что делать?
4.com_yvhotels v.1.0.1 j1.5 - русский язык ,поиск не понимает!
5.Если ввести - Тип номера -, а потом попробовать его изменить ,(кликнув по нему мышкой в списке Всех типов,)выбирается не то что вы выбрали!
6.при загрузке сначала загружается вся таблица предложений ,а потом начинается деление на страницы,я для примера сделал 100 предложений...при загрузке сайта, сайт вытягивается до безпредела,но правдо потом сужается....но у людей у кого скорость инета низкая будет не приятное оЧуЧения от таких длинных таблиц...
7. Раздел описание -не понимает WYSIWYG-точнее большую часть его тэгов
8.  для j1.5.15 сделайте нормальный компонент...что за любовь к j1.0.1....))))?
« Последнее редактирование: 05.04.2010, 12:18:28 от Basile »
*

yunoshev

  • Завсегдатай
  • 1271
  • 179 / 1
7. Раздел описание -не понимает WYSIWYG-точнее большую часть его тэгов
8.  для j1.5.15 сделайте нормальный компонент...что за любовь к j1.0.1....))))?
7. Хороший же у Вас редактор!
8. Ну, тут уж простите, -- кто с чего начинал. :) Эта версия была как проба сил.
*

Basile

  • Осваиваюсь на форуме
  • 41
  • 0 / 0
7. Хороший же у Вас редактор!
8. Ну, тут уж простите, -- кто с чего начинал. :) Эта версия была как проба сил.
7. вопрос - использую JCE-самый популярный редактор...
*

gantelay

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
реально ли сделать из него функционал как на этом сайте: http://www.petersburgtravel.ru/?

заранее спасибо за ответ.
*

yunoshev

  • Завсегдатай
  • 1271
  • 179 / 1
реально ли сделать из него функционал как на этом сайте: http://www.petersburgtravel.ru/?
заранее спасибо за ответ.
Нет. Такой функционал надо дописывать.
*

gantelay

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Нет. Такой функционал надо дописывать.

а сколько будет стоить дописать такой функционал и сколько времени это займет (желательно под Joomla 1.5)?
*

Sulpher

  • Живу я здесь
  • 2126
  • 402 / 16
  • Шаблоны и расширения Joomla
Приятно удивлён! Компонент просто чудесный. Особенно впечатлила 3D панорама в примере.

Виктор, респект!!

Панораму сами делали или на стороне заказывали у специалистов по данному направлению? (фото-съемка)
*

yunoshev

  • Завсегдатай
  • 1271
  • 179 / 1
@Sulpher
Спасибо. :)
Однако, данный пример не относится к этому каталогу гостиниц.
Это набор независимых скриптов и флеш. Фотографии отдельно были заказаны у частного фотографа, он фоткал широкоугольником с разных позиций со штатива. Подозреваю, что обрабатывал фотки он с помощью программы pano2vr, которая способна это склеить (во флеш-тур, есть даже возможность показа "вложенных" объектов). Сам скрипт показа панорамы найти не трудно (он мне его сразу предоставил) -- p2q_embed_object.js. Один объект у того фотографа стоит порядка 60-70$, т.е. если приловчиться и найти своих клиентов, то можно тоже неплохо зарабатывать.
*

Sulpher

  • Живу я здесь
  • 2126
  • 402 / 16
  • Шаблоны и расширения Joomla
Ага, я вчера весь вечер гуглил и читал. Нужна камера спкециальная. правда, пока непонятно как потолок и пол снимать, но интересно, продолжаю исследование. А скрипт в целом очень хороший. Кстати, компонент впечатляет, попробую на Joostina его погонять.
Кстати, нет желания расширения адаптировать под Joostina и писать в дальнейшем? :)
*

yunoshev

  • Завсегдатай
  • 1271
  • 179 / 1
@Sulpher
Можно, конечно. Только у меня нет Joostina v.1.3 (utf-8).
Неудачная была отмазка. Уже скачал. :)
Просто ранее, насколько я помню, более-менее свежие версии Joostina были под "табу".
« Последнее редактирование: 24.09.2010, 19:05:52 от yunoshev »

Подскажите пожалуйста, а как сделать, чтоб списка "укажите класс" вообще не было, или его можно бы было редактировать с админпанели
*

yunoshev

  • Завсегдатай
  • 1271
  • 179 / 1
Подскажите пожалуйста, а как сделать, чтоб списка "укажите класс" вообще не было, или его можно бы было редактировать с админпанели
Точно не помню, т.к. у меня много клонов этой версии, но скорее всего, что только вручную в коде.
*

Toha

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
К моему великому сожалению, Ваш компонент не работает вместе с mod_yj_live_search (это сторонний модуль поиска по сайту, более навароченный). Так он показывает таблиwe с записями отелей, при нажатии - показывает фотки. А вот когда пытаешься воспользоваться фильтром (категория, тип, звездность) то тогда страница выдает ошибку.

Цитировать
Warning: include(../../administrator/includes/defines.php) [function.include]: failed to open stream: No such file or directory in /home/okavk118/domains/адрес основного сайта/public_html/tur/modules/mod_yj_live_search/helper.php on line 23

Warning: include(../../administrator/includes/defines.php) [function.include]: failed to open stream: No such file or directory in /home/okavk118/domains/адрес основного сайта/public_html/tur/modules/mod_yj_live_search/helper.php on line 23

Warning: include() [function.include]: Failed opening '../../administrator/includes/defines.php' for inclusion (include_path='.:/usr/local/lib/php') in /home/okavk118/domains/адрес основного сайта/public_html/tur/modules/mod_yj_live_search/helper.php on line 23

...

Warning: include(../../libraries/joomla/application/router.php) [function.include]: failed to open stream: No such file or directory in /home/okavk118/domains/адрес основного сайта/public_html/tur/modules/mod_yj_live_search/helper.php on line 33

Warning: include() [function.include]: Failed opening '../../libraries/joomla/application/router.php' for inclusion (include_path='.:/usr/local/lib/php') in /home/okavk118/domains/адрес основного сайта/public_html/tur/modules/mod_yj_live_search/helper.php on line 33

Warning: include(../../includes/router.php) [function.include]: failed to open stream: No such file or directory in /home/okavk118/domains/адрес основного сайта/public_html/tur/modules/mod_yj_live_search/helper.php on line 34

Warning: include(../../includes/router.php) [function.include]: failed to open stream: No such file or directory in /home/okavk118/domains/адрес основного сайта/public_html/tur/modules/mod_yj_live_search/helper.php on line 34

Warning: include() [function.include]: Failed opening '../../includes/router.php' for inclusion (include_path='.:/usr/local/lib/php') in /home/okavk118/domains/адрес основного сайта/public_html/tur/modules/mod_yj_live_search/helper.php on line 34

Fatal error: Cannot use object of type plgSystemSef as array in /home/okavk118/domains/адрес основного сайта/public_html/tur/modules/mod_yj_live_search/helper.php on line 141

Извиняюсь за такую "простыню" кода, но может Вы сможете прояснить в чем причина и как от нее избавиться. Когда отключаешь модуль поиска, тогда компонент начинает работать. Где-то происходит конфликт,но где.
« Последнее редактирование: 28.12.2010, 19:42:00 от yunoshev »
*

yunoshev

  • Завсегдатай
  • 1271
  • 179 / 1
@Toha
Возможно из-за того, что эта версия компонента не имеет своего роутера и вообще работает в режиме Legacy.
*

sev

  • Новичок
  • 6
  • 0 / 0
в данный момент у вас на сайте что за версия стоит? вроде как 1.1.10 это тоже самое что и 1.1.1 ?
*

yunoshev

  • Завсегдатай
  • 1271
  • 179 / 1
в данный момент у вас на сайте что за версия стоит? вроде как 1.1.10 это тоже самое что и 1.1.1 ?
На демосайте стоит платный промежуточный вариант новой версии каталога. Если интересует, могу обновить до полной рабочей версии, чтобы можно было посмотреть все возможности.
*

sev

  • Новичок
  • 6
  • 0 / 0
обновите, хочется глянуть, а цена какая?
*

yunoshev

  • Завсегдатай
  • 1271
  • 179 / 1
@sev
Обновил.
*

Foros

  • Осваиваюсь на форуме
  • 44
  • 2 / 1
А можно посмотреть в работе на действующем сайте?
*

komarik

  • Новичок
  • 4
  • 0 / 0
в демо:
Функция БД завершилась ошибкой с номером 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE LOWER(a.title) LIKE '%Поиск...%' OR LOWER(a.location) LIKE '%Поиск...%' OR' at line 6 SQL=SELECT a.*, cc.name AS category, tt.name as type FROM rlvua_yvhotels AS a LEFT JOIN rlvua_yvhotels_catg AS cc ON cc.cat_id = a.cat_id LEFT JOIN rlvua_yvhotels_type AS tt ON tt.type_id = a.type_id WHERE a.hotel_level=5 WHERE LOWER(a.title) LIKE '%Поиск...%' OR LOWER(a.location) LIKE '%Поиск...%' OR LOWER(a.description) LIKE '%Поиск...%' OR LOWER(a.email) LIKE '%Поиск...%' ORDER BY a.cat_id, a.ordering
А что это за ошибка? У меня она и на локалке, и на сервере вылазиет.
*

yunoshev

  • Завсегдатай
  • 1271
  • 179 / 1
@komarik
Там почему-то два раза получается WHERE... странно, почему ваш вариант обрабатывает пустой поиск (слово "поиск.." тоже не должно поапдать)
*

komarik

  • Новичок
  • 4
  • 0 / 0
Спасибо за ответ. Это у меня при выборе классов, категорий и типов выдавало. Каталог у меня маленький, так что я просто эту выборку вырезал.
*

komarik

  • Новичок
  • 4
  • 0 / 0
И еще, забавная штука происходит в Менеджере гостиниц. Если в столбце "гостиница" название писать в кавычках, то таблицу "расколбашивает". yvhotels 1.0.1
*

yunoshev

  • Завсегдатай
  • 1271
  • 179 / 1
@komarik
Спецсимволы в названиях нежелательно использовать.
*

komarik

  • Новичок
  • 4
  • 0 / 0
Да, уже разобрался, кавычки там, на самом деле, и не нужны вовсе..
А в "менеджере удобств" удаление работает? У меня нет, не на локалке, не на сервере. Просто перезагружается страница, и все, что выделял, остается на месте.
Типы и номера тоже никак. В принципе, через phpmyadmin не сложно, но все таки.
Статус гостиницы, опубликована или нет, так же не работает. Если даже не опубликовывать, то на сайте все равно отображается.
Немного не понял с сортировкой. Она идет по категориям?
« Последнее редактирование: 25.01.2012, 14:08:42 от komarik »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

SM FAQ - компонент Вопрос-Ответ для Joomla 1.5

Автор SmokerMan

Ответов: 973
Просмотров: 225861
Последний ответ 24.06.2019, 16:30:17
от Tinael92
(CSVI) Компонент импорта csv файлов (Joomla 1.5 ~ Virtuemart 1.1 Native mode), beta

Автор Jkarter

Ответов: 114
Просмотров: 73804
Последний ответ 16.03.2016, 19:03:16
от Ferax
VirtueMart pricechanger — компонент для массового изменения цен в магазине VirtueMart

Автор fonclub

Ответов: 12
Просмотров: 10111
Последний ответ 12.01.2015, 14:31:12
от welltorgcom
Компонент "Опросник"

Автор Constantinius

Ответов: 31
Просмотров: 28746
Последний ответ 03.04.2014, 11:25:11
от theprojecthate
Пустой компонент

Автор userxp

Ответов: 13
Просмотров: 63667
Последний ответ 04.02.2014, 21:50:50
от kreator