Joomla 4. Компонент K2 и форк K2ForJ4 (18 янв 2024)

Если вас, как и меня, достало выслушивать (вычитывать) бесконечные обещания разработчика K2 опубликовать версию компонента K2 под Joomla 4 (без чего невозможно реализовать апгрейд from Joomla 3 to Joomla 4) - воспользуйтесь форком K2ForJ4. Который в данный момент установлен и без каких-либо проблем работает на этом веб-сайте.

Как изменить в joomla стандартный mod_latestnews

Больше
12 года 8 мес. назад - 12 года 8 мес. назад #1 от ralf
Очень неновая, но не теряющая актуальности статья от beliyadm.

Зачастую нам требуется вывод простейший новостей, но стандартный модуль mod_latestnews версии движка 1.5 умеет показывать лишь заголовок. Начинаются поиски мега модулей для решения элементарной задачи. В этом примере расскажу как с помощью легкой модификации стандартного модуля вывести следующие данные: заголовок материала, дата создания, вступительный текст, ссылку "читать далее"
Итак мы будем работать с двумя файлами:

modules\mod_latestnews\helper.php - подготовка данных (дальше хелпер)
modules\mod_latestnews\tmpl\default.php (дальше шаблон)


Открываем хелпер, находим строку
Code:
$lists[$i]->text = htmlspecialchars ( $row->title );
под ней сразу добавляем
Code:
$lists[$i]->created = JHTML::_('date', $row->created, JText::_('DATE_FORMAT_LC2')); $lists[$i]->introtext = strip_tags ( $row->introtext );

Комментарии:
  • конструкция DATE_FORMAT_LC2 используется чтобы привести выводимую дату к приличному виду, смотрим файл language\ru-RU\ru-RU.ini самое начало (можем изменить формат) и читаем справку по функции date
  • функция strip_tags используется, чтобы избавить вступительный текст от всего HTML мусора, что хорош в режиме блога, но очень мешает в обычном модуле

Дальше переходим к шаблону, сразу приведу общий текст, сравнивайте с оригинальным и делайте выводы
Code:
<ul class="latestnews<?php echo $params->get ('moduleclass_sfx'); ?>"> <?php foreach ($list as $item) : ?> <li class="latestnews<?php echo $params->get ('moduleclass_sfx'); ?>"> <span class="date"><?php echo $item->created; ?></span> <a href="<?php echo $item->link; ?>" class="latestnews<?php echo $params->get ('moduleclass_sfx'); ?>"> <?php echo $item->text; ?></a> <br /> <?php echo $item->introtext; ?> <a href="<?php echo $item->link; ?>" title="read more">read more</a> </li> <?php endforeach; ?> </ul>
Комментарии:
  • если мы не используем на сайте многоязычность, то фразу "read more" можно написать по русски но не забыть сохранить файл в кодироке UTF-8
  • справка по используемым элементам массива
Code:
<?php echo $params->get ('moduleclass_sfx'); ?>- CSS суффикс, заданный в настройках модуля <?php echo $item->text; ?> - заголовок материала <?php echo $item->introtext; ?> - текст вступительный материала <?php echo $item->created; ?> - дата создания материала <?php echo $item->link; ?> - ссылка на полный текст материала

Примеры модификаций

Интро текст у нас в 500 слов а мы хотим выводить первые 200 символов, но аккуратно обрезать последнее слово а не посередине, потому функция примитивная, первый параметр - вхождение собственно текста ($row->introtext в цикле нашего хелпера), второй - количество символов, по которому будем обрезать)
Code:
function NewsCrop ($text, $str_len ) { $textCrop = strip_tags (mb_substr ($text, '0', $str_len) ); return $textCrop; }

Пример применения примерно такой
Code:
$str_len = '200'; $lists[$i]->introtext = NewsCrop ($row->introtext , $str_len);
Последнее редактирование: 12 года 8 мес. назад пользователем ralf.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Dev banner 3
Работает на Kunena форум