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

Toxa33

  • Захожу иногда
  • 81
  • 0 / 0
Была такая же тема для Joomla 2.5 http://joomlaforum.ru/index.php?topic=183528.0

В 3 Joomla ктонито сделал подобное?
*

fbr

  • Завсегдатай
  • 1661
  • 206 / 7
Зачем подобное? этот вариант и работает без проблем в j3

Код: php
echo JHtml::_('string.truncate', ($item->introtext), '100');

цифру ставите свою
*

Toxa33

  • Захожу иногда
  • 81
  • 0 / 0
не подскажите в какой файл вставлять? и куда именно?
*

fbr

  • Завсегдатай
  • 1661
  • 206 / 7
Это зависит от того что и где вы хотите ограничить
Я ж не знаю, где  - в модуле, блоге, на главной ...
*

Toxa33

  • Захожу иногда
  • 81
  • 0 / 0
вывод статей на главной и в блоге категории
статьи выводятся стандартными средствами, без сторонних компонентов
*

fbr

  • Завсегдатай
  • 1661
  • 206 / 7
в блоге категории файл blog_item.php:
Код: php
40 <?php echo $this->item->event->beforeDisplayContent; ?> <?php echo JHtml::_('string.truncate', ($this->item->introtext), '100')?>
аналогично для главной - найти код в соответствующем файле и отредактировать

Лучше это делать не в самом компоненте, а в шаблоне в папке HTML, если нет - то создать
*

Toxa33

  • Захожу иногда
  • 81
  • 0 / 0
*

fbr

  • Завсегдатай
  • 1661
  • 206 / 7
Пожалуйста
Только, на мой взгляд, это не лучший вариант. Может проще "подробнее" вставлять раньше? Естественный ограничитель выводимого текста - лучше чем хак. Другое дело в модуле, где это может диктоваться компактностью
*

Toxa33

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

Ingener

  • Давно я тут
  • 547
  • 10 / 5
Да, но еще бы для красоты к этому решению добавить еще автоочистку HTML ВВОДНОГО ТЕКСТА, а то получится еще хуще чем было, подскажите решение пожалуйста.
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
*

Ingener

  • Давно я тут
  • 547
  • 10 / 5
Напишите пожалуйста какой будет окончательный вариант указанной выше строки:

Код
40 <?php echo $this->item->event->beforeDisplayContent; ?> <?php echo JHtml::_('string.truncate', ($this->item->introtext), '100')?>

чтобы работало ограничение кол-ва символов и очистка HTML.
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Хех, разве так сложно заменить одно на другое? :)

Код: php
<?php echo $this->item->event->beforeDisplayContent; ?>
<?php echo JHtml::_('string.truncate', (strip_tags($this->item->introtext)), '100')?>
*

Takohashi

  • Захожу иногда
  • 69
  • 10 / 3
Хех, разве так сложно заменить одно на другое? :)

Код: php
<?php echo $this->item->event->beforeDisplayContent; ?>
<?php echo JHtml::_('string.truncate', (strip_tags($this->item->introtext)), '100')?>

А можно как-то сделать, чтобы при этой обрезке оставался блок с ссылками «Подробнее» и «Комментарии»?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
А можно как-то сделать, чтобы при этой обрезке оставался блок с ссылками «Подробнее» и «Комментарии»?
Этот код обрезает текст материала, а "подробнее" и "комментарии" вставляются плагинами уже за пределами этого кода
Так что одно другому не мешает
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Takohashi

  • Захожу иногда
  • 69
  • 10 / 3
beliyadm, почти так. Не обратил внимание, что «Подробнее» в настройках пункта меню случайно отключил — действительно выводится. А вот ссылка на комментарии — нет. Я использую плагин для DISQUS, и вот он как раз ссылку на комментарии засовывает в introtext, поэтому она и не выводится. Можно это как-то исправить? Вот кусок кода:
Код: php
// Set '$row->text' to '$row->introtext' for J!1.6+
if (version_compare(JVERSION, '1.6.0', 'ge'))
$row->text = $row->introtext;

// Fetch the template
ob_start();
$dsqListingPath = DisqusHelper::getTemplatePath($this->plg_name, 'listing.php');
$dsqListingPath = $dsqListingPath->file;
include ($dsqListingPath);
$getListingTemplate = $this->plg_copyrights_start.ob_get_contents().$this->plg_copyrights_end;
ob_end_clean();

// Output
$row->text = $getListingTemplate;
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
DISQUSне знаю этого плагина, потому не могу ничего сказать
В этом куске кода я не не вижу вставки
Давайте так, по порядку
Версия движка на сайте, что используется из плагинов, что требуется получить и какими средствами
Возможно что есть решение достаточно простое
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Takohashi

  • Захожу иногда
  • 69
  • 10 / 3
beliyadm, у меня сейчас всё на локалхосте. Joomla 3.3.6, плагин Disqus Comments. Плагин вообще простецкий — два с половиной файла и две с половиной настройки. По факту — всего лишь в статью подгружает из сети форму Дискуса и выводит ссылку на комментарии в вводном тексте статьи (в introtext), который обрезается.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
По факту — всего лишь в статью подгружает из сети форму Дискуса и выводит ссылку на комментарии в вводном тексте статьи (в introtext), который обрезается.
То есть по сути это как плагин стандартный движка аля loadmodule?

По факту — всего лишь в статью подгружает из сети форму Дискуса и выводит ссылку на комментарии в вводном тексте статьи (в introtext), который обрезается.
Честно не понял, кто у тебя обрезается? Интротекст? В режиме стандартных материалов?

Или может так - подгружает форму дискуса и ссылку на комментарии и обрезает интротекст

Честно - я пока не очень понимаю задачу
Если стукнешь мне завтра в скайп - может и решим быстрей задачу, так испорченный телефон получается
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Takohashi

  • Захожу иногда
  • 69
  • 10 / 3
beliyadm, ну вот смотри: на главной странице выводятся новости в виде вводного текста (интротекст), к каждой новости плагин Дискуса на главной странице отображает ссылку «Х комментариев», но эта ссылка выводится в конце интротекста, а так как мы обрезаем интротекст, как сказано в этом топике, то само-собой эта ссылка тоже обрезается.
Мне нужно, чтобы ссылка «Х комментариев» выводилась не в интротексте, а за его пределами, рядом с «Подробнее».

А форма Дискуса отображается на странице полного текста новости — это я просто суть плагина описал.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Если посмотреть страницу шаблона материала - то там видно что работает afterDisplayContent
Если у этого (не знаю что за дискусс) работает эта логика нашего движка - то все работает

То есть что нам нужно сделать сделать - написать банально плагин, что будет выводить текст за пределами fulltext ну или может я ошибаюсь
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Takohashi

  • Захожу иногда
  • 69
  • 10 / 3
написать банально плагин
Эх, я то думал, там как-то по-простому можно исправить, буквально заменив какую-то переменную...
Но, видимо, так просто не исправить. По тому куску кода, что я привёл выше видно, что первоначальный интротекст отправляется в файл listing.php (в том файле всего лишь к интротексту добавляяется ссылка «Х комментариев»), потом он обрамляется комментариями plg_copyrights_start/plg_copyrights_end и всё это выводится интротекстом.

Можно на гитхабе код глянуть — https://github.com/joomlaworks/disqus-comments-for-joomla Он более чем подробно закомментирован, но всё равно не соображу, так как никогда код в подобном ключе не менял.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Эх, я то думал, там как-то по-простому можно исправить, буквально заменив какую-то переменную...
не, ну можно и так
На уровне шаблона приходит уже весь текст после обработки плагинами
а вот в модели статьи можно делать многое
Но аккуратно, при обновлении все потеряется, потому надежнее плагином (но и чуть сложнее)

Но еще проще, если я правильно понимаю суть
Мне нужно, чтобы ссылка «Х комментариев» выводилась не в интротексте, а за его пределами, рядом с «Подробнее»
На уровне шаблона контента проверить, есть ли комментарии и вывести ссылку
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Takohashi

  • Захожу иногда
  • 69
  • 10 / 3
beliyadm, спасибо за помощь. Сейчас решил проблему, причём решил элементарно. Как я уже говорил, в файле listing.php к интротексту добавляется ссылка на комментарии, вот тамошний код:
Код: php
<a class="jwDisqusListingCounterLink" href="<?php echo $output->itemURL; ?>#disqus_thread" title="<?php echo JText::_("JW_DISQUS_ADD_A_COMMENT"); ?>" data-disqus-identifier="<?php echo $output->disqusIdentifier; ?>">
<?php echo JText::_("JW_DISQUS_ADD_A_COMMENT"); ?>
</a>
Я всего навсего скопировал этот код в нужное место в defaul_item.php, исправив $output->itemURL и $output->disqusIdentifier:
Код: php
<a class="jwDisqusListingCounterLink" href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid)); ?>#disqus_thread" title="<?php echo JText::_("JW_DISQUS_ADD_A_COMMENT"); ?>" data-disqus-identifier="<?php echo substr(md5('MY_DISQUS_DOMAIN'), 0, 10).'_id'.$this->item->id; ?>">
<?php echo JText::_("JW_DISQUS_ADD_A_COMMENT"); ?>
</a>
В результате ссылка выводится ровно такого же вида, как и плагином, но как я и хотел — за пределами интротекста. Только есть единственное НО — что в моём варианте, что ссылка из плагина, не всегда корректно отображается кол-во комментариев. Не знаю, то ли где-то кэшируется, то ли из-за того, что на локалхосте работает.
*

bb777

  • Осваиваюсь на форуме
  • 46
  • 0 / 0
А нет ли готового решения в виде плагина?
*

Леон

  • Захожу иногда
  • 332
  • 4 / 0
Не знаю по какой причине, но у меня многоточие добавлялось почему-то на новой строке. Оно почему-то после последнего </p> вставлялось и получалось новая строка с '...'

Решил проблему так, также в файле шаблона, в нужном месте вставил:

Код
// Получаю id текущей категории
$input = JFactory::getApplication()->input;
$categoryid = ($input->getCmd('view', '')=='article')?  $input->getCmd('catid', ''): $input->getCmd('id', '');

//Если id категории от 8 до 16 (это нужные мне категории где нужно сокращать текст), тогда выводим первые 470 символов текста и многоточие, иначе в других категориях выводим все как обычно, без обрезок.
if ($categoryid >= 8 && $categoryid <= 16) {
echo mb_substr($this->item->introtext,0,470). '...';
} else {
echo JHtml::_('content.prepare', $this->item->introtext);
}
*

autokaif

  • Захожу иногда
  • 81
  • 0 / 0
Зачем подобное? этот вариант и работает без проблем в j3

Код: php
echo JHtml::_('string.truncate', ($item->introtext), '100');

цифру ставите свою

Доброго времени суток. Выручите пожалуйста, надо ограничить текст до знака -
В файле \plugins\content\pagenavigation\tmpl\default.php
Не получается использовать Ваш пример с записью, которая выводит ссылку текстом на след и предыдущий материал

<ul class="pager pagenav">
<?php if ($row->prev) :
   $direction = $lang->isRtl()? 'right' : 'left'; ?>
   <li class="previous">
      <a class="hasTooltip" title="<?php echo htmlspecialchars($rows[$location-1]->title); ?>" aria-label="<?php echo JText::sprintf('JPREVIOUS_TITLE', htmlspecialchars($rows[$location-1]->title)); ?>" href="<?php echo $row->prev; ?>" rel="prev">
         <?php echo '<span class="icon-chevron-' . $direction . '" aria-hidden="true"></span> <span aria-hidden="true">' . $row->prev_label . '</span>'; ?>
         <?php echo htmlspecialchars($rows[$location-1]->title); ?>
      </a>
   </li>
<?php endif; ?>
<?php if ($row->next) :
   $direction = $lang->isRtl()? 'left' : 'right'; ?>
   <li class="next">
      <a class="hasTooltip" title="<?php echo htmlspecialchars($rows[$location+1]->title); ?>" aria-label="<?php echo JText::sprintf('JNEXT_TITLE', htmlspecialchars($rows[$location+1]->title)); ?>" href="<?php echo $row->next; ?>" rel="next">
         <?php echo htmlspecialchars($rows[$location+1]->title); ?><?php echo '<span aria-hidden="true">' . $row->next_label . '</span> <span class="icon-chevron-' . $direction . '" aria-hidden="true"></span>'; ?>
      </a>
   </li>
<?php endif; ?>
</ul>
Заранее Благодарю
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
А какой текст ты хочешь ограничивать?
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
*

autokaif

  • Захожу иногда
  • 81
  • 0 / 0
А какой текст ты хочешь ограничивать?
Благодарю за внимание!
Стрелки на предыдущий и следующий материал в самой статье, дооборудовал словами, как видно из титла (вставил echo htmlspecialchars($rows[$location-1]->title); ?> в <a href=""). Вот их и не получается обрезать до знака -
*

NewUsers

  • Живу я здесь
  • 2310
  • 216 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Код: php
echo htmlspecialchars(substr($rows[$location-1]->title, 0, stristr($rows[$location-1]->title, '-'));
Занимаюсь создание расширений для Joomla 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сделать картинку ссылкой на материал без Вводного изображения?

Автор OZlaim

Ответов: 0
Просмотров: 782
Последний ответ 30.05.2024, 01:28:37
от OZlaim
Ограничить описание определенным кол-ом символов

Автор DamaVbubi

Ответов: 5
Просмотров: 1156
Последний ответ 13.02.2024, 20:44:36
от sivers
Добовление текста

Автор Мира

Ответов: 1
Просмотров: 631
Последний ответ 03.08.2023, 10:30:35
от darkghost
Ограничить число выводимых символов

Автор SuschnosT

Ответов: 19
Просмотров: 2284
Последний ответ 25.07.2022, 12:09:18
от Akeksandr
Снять ограничение на кол-во символов в модуле html

Автор lgmax

Ответов: 1
Просмотров: 619
Последний ответ 05.01.2022, 12:19:53
от draff