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

MultiMatrix83

  • Захожу иногда
  • 52
  • 0 / 0
  • Истина где-то рядом
Здравствуйте.
Напишите мне код для .htaccess пожалуйста.
Мне нужно что бы адрес вида https://сайт.ру/123-категория/название-статьи
редиректил на https://сайт.ру/категория/название-статьи

Я нашёл только код для редиректа с https://сайт.ру/123-категория на https://сайт.ру/категория
Если в url после категории идёт название статьи то этот код не работает.

Заранее благодарен.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Код
RewriteRule ^/(\d+)\-(\w+)/(.*)$ https://сайт.ру/$2/$3 [L,R=301,NC]
*

MultiMatrix83

  • Захожу иногда
  • 52
  • 0 / 0
  • Истина где-то рядом
Не работает.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Код
RewriteEngine On
RewriteCond %{REQUEST_URI} /(\d+)-(\w+)/(\w+)$
RewriteRule ^  https://joomla-support.ru/%2/%3  [L,R=301,QSA,NC]
*

MultiMatrix83

  • Захожу иногда
  • 52
  • 0 / 0
  • Истина где-то рядом
Всё равно не работает.
Посмотрите пожалуйста мой код .htaccess
Что в нём не так?
===
Код
Options +FollowSymLinks

Options -Indexes

<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
</IfModule>

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ https://useron.ru/ [R=301,L]

RewriteCond %{REQUEST_URI} /(\d+)-(\w+)/(\w+)$
RewriteRule ^ https://useron.ru/%2/%3 [L,R=301,QSA,NC]

RewriteCond %{REQUEST_URI} ^(.*)/(\d+)-([^/]+)$
RewriteRule ^ %1/%3 [L,QSA,R=301]

RewriteBase /
RewriteRule (.*)\.html$ $1 [R=301,L]

## Begin - Rewrite rules to block out some common exploits.
# If you experience problems on your site block out the operations listed below
# This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
## End - Rewrite rules to block out some common exploits.

## Begin - Custom redirects
#
# If you need to redirect some pages, or set a canonical non-www to
# www redirect (or vice versa), place that code here. Ensure those
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.
#
## End - Custom redirects

##
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root).
##

# RewriteBase /

## Begin - Joomla! core SEF Section.
#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
#
## End - Joomla! core SEF Section.
===
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Ну на кириллице я не проверял, вряд ли будет работать . Проверил сейчас на вашем сайте, набрав в браузере адрес
Код
https://useron.ru/3232-category/article
идет редирект на
Код
https://useron.ru/category/article
ЧИстите кеш в браузере. Только стек ошибки выводит, вместо 404
*

fbr

  • Завсегдатай
  • 1661
  • 206 / 7
А поиском пользоваться не ?
По запросу 301 редирект  - первая статья
FAQ - редиректы в htaccess
первый пост
6 пункт (извините, не первый ...)
*

MultiMatrix83

  • Захожу иногда
  • 52
  • 0 / 0
  • Истина где-то рядом
Ну на кириллице я не проверял, вряд ли будет работать . Проверил сейчас на вашем сайте, набрав в браузере адрес
Код
https://useron.ru/3232-category/article
идет редирект на
Код
https://useron.ru/category/article
ЧИстите кеш в браузере. Только стек ошибки выводит, вместо 404
Почему тогда вот этот адрес не редиректится? https://useron.ru/59-sajtostroenie/kak-nastroit-sitemapxml-v-bitrix
И почему вообще ошибки выводятся? Вывод ошибок в админке Joomla и на сервере отключены.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
6 пункт
Насколько я понял, не подходит.
ТС нужно вырезать число в категории, а не заменить, убрать категорию .
 
Почему тогда вот этот адрес не редиректится?
Я не учел дефисы в названии статьи.
Код
RewriteCond %{REQUEST_URI} /(\d+)-(\w+)/(.*)$
RewriteRule ^  https://joomla-support.ru/%2/%3  [L,R=301,QSA,NC]
« Последнее редактирование: 21.11.2021, 17:54:41 от draff »
*

MultiMatrix83

  • Захожу иногда
  • 52
  • 0 / 0
  • Истина где-то рядом
Проблема решена, всем спасибо. ^-^
*

MultiMatrix83

  • Захожу иногда
  • 52
  • 0 / 0
  • Истина где-то рядом
Рано обрадовался, теперь не редиректит вот этот адрес https://useron.ru/123-zarabotok-v-internete/kak-zarabotat-na-partnjorskikh-programmakh
Напишите пожалуйста код с учётом дефисов в категории.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Код
RewriteCond %{REQUEST_URI} /(\d+)-(.+)/(.*)$
RewriteRule ^  https://joomla-support.ru/%2/%3  [L,R=301,QSA,NC]
*

MultiMatrix83

  • Захожу иногда
  • 52
  • 0 / 0
  • Истина где-то рядом
Работает. Спасибо.
*

Zegeberg

  • Захожу иногда
  • 279
  • 7 / 1
Хм, а если надо убрать ID из материалов, то какой код? все голову сломал, включаешь на 5 ке новую маршрутизацию (с 3 Joomla не включал), так 404 ( было /категория/345-материал - надо /категория/материал Спасибо
*

Zegeberg

  • Захожу иногда
  • 279
  • 7 / 1
RewriteCond %{REQUEST_URI} ^(.*)/(\d+)-([^/]+)$
RewriteRule ^ %1/%3 [L,QSA,R=301]   этот код помог, если кто искать будет
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывести поле изображение материала в модуле "Список материалов категории"

Автор aleksandrozz

Ответов: 12
Просмотров: 13073
Последний ответ 14.10.2022, 05:12:04
от denxio
Закрыть от индексации только страницу категории

Автор DDAANN

Ответов: 5
Просмотров: 2719
Последний ответ 07.03.2021, 13:23:34
от Followme
RFI узязвимости, файл.htaccess (redirect for weird rfi attacks through url)

Автор Elimelech

Ответов: 8
Просмотров: 2054
Последний ответ 27.11.2017, 10:29:30
от SeBun
Вывод картинок подкатегорий в блоге категории

Автор kontrast

Ответов: 11
Просмотров: 6309
Последний ответ 24.09.2016, 21:18:01
от axel030392
Описание категории

Автор Ihor

Ответов: 8
Просмотров: 1463
Последний ответ 17.02.2016, 00:39:34
от dmitry_stas