IT-К@ФЕ. Welcome! :)
   
Добро пожаловать, Гость
Логин: Пароль: Запомнить меня


Как изменить в joomla стандартный mod_latestnews
(1 чел.) (1) гость
  • Страница:
  • 1

ТЕМА: Как изменить в joomla стандартный mod_latestnews

Как изменить в joomla стандартный mod_latestnews 10 мес., 2 нед. назад #2388

  • ralf
  • Вне сайта
  • Expert Boarder
  • Постов: 147
  • Репутация: 6
Очень неновая, но не теряющая актуальности статья от 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);
Изменено: 10 мес., 2 нед. назад от ralf.
  • Страница:
  • 1
Время создания страницы: 0.21 секунд