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

gorunov

  • Осваиваюсь на форуме
  • 27
  • 11 / 0
Если вам нужно создать простой, быстрый и надежный  репозиторий файлов на JOOMLA, то вам может помочь сам сервер APACHE.  Опишем этапы создания такого репозитория:

1. Создадим две вложенные директории  /files/files в корне сайта. Если вы пожелаете использовать другие имена директорий, то вам необходимо будет внести 
соответствующие правки в дальнейшем.

2. В директорию /files поместим файл index.php следующего содержания:
Цитировать
<?php
header("Location:files");
?>
Это необходимо сделать для того, чтобы пользователь, путешествую по директориям вашего репозитория,  не смог выйти за его пределы.

3. В директорию files/files поместим файл .htaccess с настройками:

Цитировать
RemoveType application/x-httpd-php php php3
Options Indexes FollowSymLinks MultiViews
IndexOptions FancyIndexing ScanHTMLTitles
ReadmeName .footer.html
HeaderName .header.html

Команда RemoveType application/x-httpd-php php php3 запрещает запускать файлы *.php на выполнение в пределах вашего репозитория. Это полезно сделать, если вы будете давать доступ на размещение файлов в вашем репозитории третим лицам. В этом режиме php файлы не запускаются, а скачиваются как обычые файлы.

Команда Options Indexes FollowSymLinks MultiViews говорит серверу APACHE, что в данной директории разрешено сканирование содержимого. Это является ключевой  настройкой, которая позволяет организовать репозиторий данного типа в принципе.

Команда IndexOptions FancyIndexing ScanHTMLTitles позволяет выводить заголовки html-файлов рядом с их именами. Эта опция является полезна, если в вашем  репозитории будут хранится HTML-файлы.

Команды
ReadmeName .footer.html, HeaderName .header.html назначают файлы, содержимое которых будет автоматически подставляться в начало и конец страницы репозитории  и служат для достижения разнообразных оформительских эффектов.

4. Теперь создайте файлы .header.html, .footer.html и поместите их в каждую папку в пределах вашего репозитория. Если вы хотите, чтобы ваш репозиторий  унаследовал стили вашего шаблона, то в файле .header.html нужно сделать подключение CSS-стилей, например так:
Цитировать
<link rel="stylesheet" type="text/css" href="http://www.gorodbereza.ru/templates/akogreenportal/css/template_css.css" />
(В моем случае идет импорт стилей с шаблона "akogreenportal")

Здесь существует один важный момент. В случае когда файлы заголовков не определены, APACHE автоматически создает заголовки с путём до текущей директории, 
например Index of /files/files . Это очень полезная информация, так как показывает координаты директории, которую вы в данный момент просматриваете. Если вы 
создаете свой заголовок (файл .header.html), то в нём будет полезно отразить эту информацию, прописав в каждом файле .header.html, каждой директории, путь до  данной директории.

Использование файлов .header.html и .footer.html позволяет сделать из репозитория полноценную HTML-страницу, которую можно гармонично вписать в дизайн вашего сайта. Вот пример репозитория-галереи (в качестве файлов выступают рисунки )   
[ссылка]

5. Осталось самое важное - интегрировать наш репозиторий в JOOMLA. Для этого в админке JOOMLA войдите в окно создания нового элемента меню и выберите тип меню Wrapper. В открывшемся окне настроек впишите:

Name:  - Файлы (название пункта меню)
Wrapper Link:  -  /files/files (путь до вашей директории с файлами)
Auto Height; - yes (активации данной опции является полезной, так как автоматически регулирует высоту окна и избавляет от неэстетической вертикальной полосы 
прокрутки)
В остальных опциях можно оставить значения по умолчанию.

Все, репозитарий готов. Он бдует выглядеть примерно как у меня: [DEMO]


СОЗДАНИЕ ЗАКРЫТОЙ ДИРЕКТОРИИ

Очень часто вам может понадобиться закрыть некоторые директории от общего доступа. Это также можно сделать средствами APACHE:
В директорию, которую вы хотите закрыть (в моём случае, это директория private) поместите файл .htacces в котором необходимо прописать "секьюрные" настройки,

например:
Цитировать
AuthName "Password Protected"
AuthType Basic
AuthUserFile /www/myproject/passwd.file
require valid-user

Здесь самой важной является опция AuthUserFile, в которой прописывется путь до файла passwd.file. В файле passwd.file - хранятся данные авторизации: имя пользователя и хэш-образ пароля.
Пример закрытой директории [ссылка]
Файл passwd.file создается утилитой htpasswd, которая входит в состав сервера APACHE. Более подробно об этом можно узнать  [здесь].

P.S. Если в вашем ропозитории будут отсутствовать иконки файлов, то распакуйте и поместите папку icons в корень вашего сайта [ссылка]


[вложение удалено Администратором]
« Последнее редактирование: 17.05.2008, 16:27:24 от gorunov »
*

dezzor

  • Захожу иногда
  • 102
  • 10 / 0
  • Flahost.ru - доступный хостинг
Супер (+) в гору
*

mvart

  • Осваиваюсь на форуме
  • 35
  • 0 / 2
Теперь создайте файлы .header.html, .footer.html

А как их создать если  я создаю файл .header.html а ответ  "СЛЕДУЕТ ВВЕСТИ ИМЯ ФАЙЛА"

с точкой не создается такой файл вернее с двумя точками или я чего-то не так делаю
*

Physicist

  • Глобальный модератор
  • 984
  • 194 / 0
  • Рябов Денис
mvart, а ты как пытаешься их создать?
*

mvart

  • Осваиваюсь на форуме
  • 35
  • 0 / 2
да глюкнул с WINDOWS

понял ошибку

с joomla проводником создал но фича не работает почему-то

Спасибо, gorunov. То что надо.  ^-^
На одном из своих сайтов так сделал, всё работает.
http://www.portmone.zp.ua/index.php?option=com_content&view=archive&Itemid=490

Есть одно дополнение:
Apache у моего хостера показывал в листинге директорий файлы .header.html и .footer.html, хотя они, должны быть скрытыми, вообще-то  :(
Помогло добавление такой строки в файл .htaccess
IndexIgnore .footer.html  .header.html
*

timurcheg

  • Новичок
  • 8
  • 0 / 0
Блин, а сразу-то и не заметил что ответ на мой вопрос, постом выше :)
Тогда другой вопрос: Я сделал всход в репозторий тока для зарегистрированных пользователей, однако, если руками вбить в строку http://domain.com/files/files то попадаешь в него. как бы прикрыть это?

и с иконками не совсем понятно, я распаковал в корень сайта архив, ничего не появилось :(
« Последнее редактирование: 06.10.2008, 01:05:59 от timurcheg »
*

gorunov

  • Осваиваюсь на форуме
  • 27
  • 11 / 0
Перенес сайт на другой хостинг (VPS), все русские буквы в файловом архиве стали  кракозябами, причем не взирая на то что в коде стояла кодировка windows-1251. Решение оказалось такое: Сказать APACHE, чтобы он передовал в загалоках кодировку windows-1251, для этого в файлике .htaccess пропишите дериктиву:

Код
IndexOptions Charset=WINDOWS-1251
*

gorunov

  • Осваиваюсь на форуме
  • 27
  • 11 / 0
--> timurcheg
"Прикрыть" Jooml-ой нельзя (или по крайней мере не так просто), так как данный файловый архив с PHP вообще не свзяан, а работает исключительно с помощью APACHE. "Прикрыть" можно с помощью средств Apache . Как это сделать описано в первом посте.

Статья хорошая (лови +), долго думал и пробовал много файловых архивов но так ничего подходящего не нашел, а аказалось все гороздо проше:) Если кому интересно то вот что получилось у меня http://prgsl.info/index.php?option=com_wrapper&Itemid=44
*

lekx

  • Осваиваюсь на форуме
  • 44
  • 0 / 0
Создаю закрытую директорию на локальной машине(по инструкции как описано выше), и она не отображается на сайте(
Что я делаю не так?
И ещё вопрос. Как создать файл passwd.file на сервере хостера?
Заранее спасибо за ответы!
*

ogoncharuk

  • Новичок
  • 9
  • 0 / 0
Здравствуйте, попробовал на localhost все супер, на хостенге:
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@bazaznan.rv.ua and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Apache Server at bazaznan.rv.ua Port 80

помогите разобраться !
*

timurcheg

  • Новичок
  • 8
  • 0 / 0
Архив с иконками распаковал, но иконки не появились :(  Может че надо дописать?
*

timurcheg

  • Новичок
  • 8
  • 0 / 0
ну подскажите как с иконками быть, ПЛЗ!
*

araneon

  • Новичок
  • 1
  • 0 / 0
Всем здрасти!
Понимаю что тема давнишняя но всё же актуальности не теряет.

Во первых gorunov Вам огромное спасибо за столь познавательный пост!
У меня вопрос, подскажите что нужно прописать в  .header.html .footer.html что бы получилось как в DEMO, я имею введу разнесение названия папок и файлов отдельно от даты и времени их создания. ФОТО
У меня получается что название папок/файлов не полностью влезают, а только 10-11 символов и после них 2 точки стоят, а у некоторых папок/файлов другие символы в конце ФОТО
Просто я в этом не силён, только начинаю разбираться с HTML и Joomla. Подскажите если не сложно.
За ранее огромное спасибо!
*

JahQRT

  • Новичок
  • 1
  • 0 / 0
Два вопроса.. как скачать иконки, и поддерживаю предыдущий пост, как расширить столбец с именем?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Quantum - файловый и медиа менеджер для Joomla

Автор Sulpher

Ответов: 31
Просмотров: 11357
Последний ответ 26.06.2024, 20:26:51
от Sulpher
Joomla 2.5 файловый архив

Автор zigzagrus

Ответов: 4
Просмотров: 2020
Последний ответ 10.12.2023, 01:38:01
от Sulpher
Как реализовать архив PDF файлов на сайте?

Автор Igorenia

Ответов: 1
Просмотров: 4423
Последний ответ 21.01.2022, 23:55:09
от Vekach
Восстановление файлов на сервере

Автор edykina

Ответов: 14
Просмотров: 5328
Последний ответ 26.05.2021, 17:57:35
от wishlight
Загрузка файлов пользователями с фронта

Автор DRATUTI

Ответов: 19
Просмотров: 7665
Последний ответ 25.02.2019, 01:44:42
от Bugs_B