×
Ruby on Rails: постинг твитов через Twitter API (04 нояб 2017)

Практикуемся в Ruby on Rails.

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

Больше
6 года 5 мес. назад - 6 года 5 мес. назад #1 от ralf
ralf создал эту тему: Как изменить в joomla стандартный mod_latestnews
Очень неновая, но не теряющая актуальности статья от beliyadm.

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

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


Открываем хелпер, находим строку
$lists[$i]->text = htmlspecialchars ( $row->title );
под ней сразу добавляем
$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 мусора, что хорош в режиме блога, но очень мешает в обычном модуле

Дальше переходим к шаблону, сразу приведу общий текст, сравнивайте с оригинальным и делайте выводы
<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
  • справка по используемым элементам массива
<?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 в цикле нашего хелпера), второй - количество символов, по которому будем обрезать)
function NewsCrop ($text, $str_len ) {
	$textCrop = strip_tags (mb_substr ($text, '0', $str_len) );
	return $textCrop;
}

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

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