Новости Joomla

Вышел WT Quick links v.2.4.0 - релиз модуля для Joomla

Вышел WT Quick links v.2.4.0 - релиз модуля для Joomla.Это модуль-конструктор для быстрого создания набора элементов. Это могут быть ссылки на компоненты Joomla, пункт меню или пользовательская ссылка. Есть условия для исключений показа элементов списка. Вы можете создавать собственные макеты вывода модуля, создавая таким образом почти всё, что угодно: от простого списка ссылок до стены фотографий на главную страницу или ссылки-теги для перелинковки категорий интернет-магазина, список FAQ, табы или аккордеоны. Модуль позволяет выводить изображения, адаптивные изображения, видео, адаптивные видео.v.2.4.0. Что нового?Добавлена поддержка новых компонентов. Добавлены новые типы ссылок и исключений для них: - Phoca Download, - Phoca Gallery, - RadicalMart (@radicalmart).Joomla 6. Успешно протестирована работа модуля на Joomla 6-alpha2.РазработчикамПроведён большой рефакторинг кода. Для типов ссылок созданы классы-драйверы. Теперь для того, чтобы добавить новый тип ссылки в модуль достаточно скопировать класс-образец из
modules/mod_wt_quick_links/src/Driver/Collection и наполнить его данными по образцу, а так же добавить необходимые языковые константы в панели администратора Joomla.Модуль бесплатный. Страница расширенияGitHub расширенияJoomla Extensions Directory👩‍💻 Подпишись на @joomlafeed.#joomla #разработка

Свои типы полей в 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 для атрибута addfieldprefixnamespace 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 #разработка

Обновлена информация в Плане развития Joomla

👩‍💻 Обновлена информация в Плане развития Joomla.Здесь собрана информация о датах релизов, описаны принципы версионирования, указаны ответственные за релизы, а так же даты окончания поддержки релизов. Опираясь на эту информацию вы можете планировать развитие ваших интернет-проектов.👩‍💻 Что нового?⛔️ Joomla 4.Дата окончания исправления ошибок безопасности в версии 4.x - 14 октября 2025г. ⚠️ После этой даты Joomla 4 прекратит получать какие-либо обновления, в том числе безопасности - вообще. Рекомендуем обновить ваши сайты до актуальной Joomla 5.✅ Joomla 5.- Дата окончания исправления ошибок в версии 5.x - 13 октября 2026г.- Дата окончания исправления ошибок безопасности в версии 5.x - 12 октября 2027 года.- Текущая актуальная (на момент написания заметки) версия - 5.3.1.- Опубликовано расписание выхода релизов Joomla 5.4. Стабильный релиз ожидается 14 октября 2025 года.✅ Joomla 6.- Дата окончания исправления ошибок в версии 6.x - 17 октября 2028г.- Дата окончания исправления ошибок безопасности в версии 6.x - 16 октября 2029г.- Опубликовано расписание выхода релизов Joomla 6.0. Стабильный релиз ожидается 14 октября 2025 года.- Для разработчиков уже доступна Joomla 6.0.0-alpha1.✅ Joomla! Framework.Обновлена информация о Joomla! Framework - полноценном PHP-фреймворке для разработки. Он в версиях 1.х и 2.х был самостоятельным параллельным проектом, однако начиная с версии Joomla 4.0 стал её основой. Добавлена информация о Joomla! Framework 3.x, который вышел 6 октября 2023 года. Его можно использовать в тех случаях, когда вам в проекте не нужна CMS Joomla целиком.Подробнее на сайте Joomla-сообщества Joomlaportal.ru#joomla #community

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

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
И снова здравствуйте!
Я опять со своими странными задачами  ;D
Короче, в папочке с картинками шаблона лежит файлик sprite.svg
Как бы мне взять, и в конце index.php, до закрытия </body> вставить его содержимое (весь код)?  ::)
Попробовал что типа:
Код: php
$url = $this->baseurl.'/templates/'.$this->template.'/images/sprite.svg';
$svg = file_get_contents("$url");
echo $svg;
Но не работает...
Может кто-то уже делал нечто подобное?
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Код
<img src="<?php echo $this->baseurl.'/templates/'.$this->template.'/images/sprite.svg' ?>" >
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Sgrey, нет, не годится)
Этот код просто вставит картинку, как обычный <img>.
Мне же нужно, чтобы всё содержимое <svg> файла добавилось в шаблон в виде кода.
Откройте любой SVG-файл в редакторе, и увидите что-то на подобие XML-кода. Вот, всё это и надо запихнуть в index.php
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Я в курсе, что такое svg.
Код
$url = 'templates/'.$this->template.'/images/sprite.svg';
$svg = file_get_contents($url);
echo $svg;
или просто вставьте его код в файл руками.
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Sgrey, благодарю! Получилось. Так и не понял, почему не срабатывало. Без кавычек $url я тоже пробовал...
А руками вставлять бессмысленно. Файл периодически обновляется новыми элементами спрайта, и хотелось именно автоматизации!

Теперь возник вопрос, по изменению встраиваемого кода.
Т.е. необходимо взять из него только отдельные <svg> объекты, а не весь код с заголовком.
Может знаете как это сделать?  ::)
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Не работало из-за неправильного пути к файлу. Смотря как часто обновляется и какого он размера, может проще вставлять руками.
Не совсем понял, чего вы хотите в итоге добиться, объясните задачу подробней.
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Рассказываю.
Например, вот код SVG, который я сейчас вставляю:

Код: xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <style>   
        :root svg {display: none;}
        :root svg:target {display: block;}
    </style>
    <svg id="logo">...</svg>
    <svg id="location">...</svg>
    <svg id="phone">...</svg>
    <svg id="email">...</svg>
</svg>

Мне же нужно взять только:

Код
    <svg id="logo">...</svg>
    <svg id="location">...</svg>
    <svg id="phone">...</svg>
    <svg id="email">...</svg>

Ну, как-то так.
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Остался неясным вопрос, зачем все это нужно? Почему просто не использовать несколько отдельных файлов? 
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Sgrey, ну как же. Затем, зачем вообще существуют спрайты — меньшее количество запросов к серверу. Для небольшого сайта — не критично, для крупного и популярного — необходимость.
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Кто то из нас что то явно не понимает ::) Я знаю CSS спрайты, но какое они имеют отношение, к тому что вы хотите сделать?

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

Если вам все равно это надо, то это можно сделать используя XML или регуляркой. Однако хотелось бы все-таки понять вашу идею.
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Sgrey, вы знаете, я не хотел бы тут флуд в пустую разводить, мол «что, зачем и почему».
Есть задача, пытаюсь найти решение, т.к., как правило, это потом помогает не только мне одному.

Есть вероятность, что вы поняли меня некорректно. Речь идёт не о CSS-спрайтах (что это, я не знаю, увы) ^-^
Речь идёт об SVG-спрайте (графическом). Это файл, который содержит в себе целый набор графических элементов <svg>, обращение к которым происходит с помощью ID.
Т.е. в коде мы указываем что-то на подобие <img src="/sprite.svg#logo">, где 'logo' это ID определённого элемента в спрайте.

Например, на странице используется два десятка изображений, отображение которых реализовано не фоном, а объектами <img> или <svg>.
Я не хочу делать двадцать запросов к серверу, и для этого использую спрайт. Для корректной работы спрайта, мне необходимо включить его код в тело страницы. С чем вы мне, собственно, и помогли.

Дальше я решил (по определённым причинам, не относящимся к данному вопросу), задачу немного усложнить, и выбрать из включаемого файла лишь необходимое содержимое, без хидера и прочего «мусора» так сказать.

Вот вы написали про регулярные выражения. Возможно они помогли бы.
Я могу лишь на пальцах объяснить: надо найти все вложенные объекты, начинающиеся с <svg> и заканчивающиеся </svg>.
Ну как-то так. Какие ещё подробности нужны, я не знаю)
« Последнее редактирование: 02.03.2020, 16:42:30 от goga_pgasovav »
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Так и я не ради флуда спрашиваю. Форум это двухсторонний процесс общения и обогащения знаниями. Мне эта идея незнакома, поэтому либо я чего-то не знаю, либо вы заблуждаетесь. Зачастую мы все придумываем что-то, а потом выясняется, что это все делается по другому и проще. Пытаюсь разобраться, не более того. А отвечать не понимая зачем и для чего, мне не интересно.

Из вашего объяснение все равно не совсем понятно, как это работает, но искать в интернете мне сейчас некогда.
Что касается регулярки, то я в них не силен и наверно ей в данном случае будет не просто.
Я бы лучше смотрел в сторону simplexml, но готового рецепта у меня нет, надо пробовать.
*

fsv

  • Живу я здесь
  • 2781
  • 410 / 2
Например, вот код SVG, который я сейчас вставляю:
Мне же нужно взять только:
<svg><use ...
Веб-разработка: заказ. Только новая разработка.
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Посмотрел в интернете, оказывается я сильно отстал от жизни. ::) SVG-спрайт это не то, что я думал. Теперь идея вставлять SVG-спрайт в тело страницы обрела смысл. А вы говорите, мол для чего «что, зачем и почему». Чтобы узнать что то новое, хотя мне это не требуется сейчас, но может пригодиться в будущем.
Правда для чего вы хотите вырезать часть файла с помощью php все равно не понял, это делается через use, view ... Может чего-то не понял до конца, смотрел бегло.
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Sgrey, ну раз уж вас заинтересовал данный подход к использованию графики, тогда объясню, зачем вырезать  ;)
В SVG-файле используется CSS-стиль:

Код: css
    <style>   
        :root svg {display: none;}
        :root svg:target {display: block;}
    </style>

Он необходим для скрытия всех объектов SVG, кроме того, который будет использоваться.
Это в том случае, когда я использую объекты спрайта в виде background (фонов), и беру их из внешнего файла.
А если мне необходимо эти же объекты использоваться как изображение в коде, то нужно встроить файл.
И вот этот стиль уже является паразитным, т.к. в такой ситуации объекты спрайта перестают отображаться и <style> нужно удалить. Как, впрочем, и <!doctype>, который уже не нужен в случае со встраиванием <svg> в тело документа. Ну это уже дургой вопрос...
В общем, если вам будет нужно это где-то использовать, напишите мне в личку, я объясню подробнее, ибо топик создавался с совершенно иной целью.

Попробую найти решение, и если найду, то отпишусь тут.
*

ProtectYourSite

  • Живу я здесь
  • 2364
  • 137 / 4
  • Безопасность вебсайтов
https://www.php.net/manual/ru/function.preg-replace.php и убрать лишние теги по маске типо
Код
<style>.*</style>
Имхо, свг более избыточно, чем обычные картинки.
А если юзать какой simple XML ,  то неплохо получится просадка по оперативке.
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Вот честное слово, вы бы уже давно дали ссылку на сайт где это реализовано или статью с описанием, в конце концов привели бы пример спрайта и результат который должен получиться на странице. Потому что ваши объяснения на пальцах все равно до конца не понятны. А так у меня стойкое ощущение, что вы все усложняете.

Вот набросал пример, не знаю так вам надо или нет.
Код
$xml = new SimpleXMLElement(file_get_contents('sprite.svg'));
foreach($xml->svg as $a) {
    $b .= $a->saveXML();
}
echo $b;
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Получить category description image в index.php шаблона

Автор goga_pgasovav

Ответов: 6
Просмотров: 1006
Последний ответ 12.07.2024, 17:06:14
от goga_pgasovav
Вывод содержимого модуля mod_custom без html разметки

Автор goga_pgasovav

Ответов: 3
Просмотров: 989
Последний ответ 07.06.2024, 11:15:50
от goga_pgasovav
Убрать index.php в url

Автор d0ublezer0

Ответов: 6
Просмотров: 982
Последний ответ 09.08.2022, 09:33:30
от sivers
Вывести переменную шаблона в материал

Автор Little Muk

Ответов: 8
Просмотров: 2495
Последний ответ 08.05.2022, 15:02:46
от Black-kot
Правка шаблона для PDF

Автор newgot

Ответов: 0
Просмотров: 467
Последний ответ 12.01.2022, 23:00:01
от newgot