Jak jsem slíbil v minulém článku tak předkládám malý návod jak upravit zobrazení v modulu "poslední novinky" tak aby pro přihlášené uživatele byl před názvem článku nápis "Nový". Tento nápis se objeví pouze v případě, že je datum posledního přihlášení starší než datum vytvoření článku. Pro nepřihlášené se zobrazení posledních novinek nezmění.
Celá úprava vychází z úpravy šablony (viz. články Včera, dnes a zítra ... a Označení nových článků pro přihlášené), ale navíc je nutný zásah do jádra J!. Nejsem přívržencem zásahů do jádra, ale v tomto případě jsem se k této úpravě přiklonil. Úprava by šla provést bez zásahu do jádra, ale bylo by nutné zopakovat SQL dotazy v souborech šablony a to by zbytečně prodlužovalo čas běhu celého scriptu.
Úprava jádra Joomla
V souboru ..modules/mod_latestnews/helper.php přidáme do indexového pole lists novou proměnou created, která ponese informaci o datumu vytvoření článku.
$i = 0;$lists = array();
foreach ( $rows as $row )
{
if($row->access <= $aid)
{
$lists[$i]->link = JRoute::_(ContentHelperRoute::getArticleRoute($row->slug, $row->catslug, $row->sectionid));
} else {
$lists[$i]->link = JRoute::_('index.php?option=com_user&view=login');
}
$lists[$i]->text = htmlspecialchars( $row->title );
$lists[$i]->created = $row->created ;
$i++;
}
Úprava zobrazení v modulu
Vytvoříme nový adresář ..templates/rhuk-milkyway/mod_latestnews a do něho překopírujeme dva soubory default.php a index.html z adresáře ..modules/mod_latestnews/tmpl. Script v souboru default.php upravíme dle následujícího výpisu:
<?php // no direct accessdefined('_JEXEC') or die('Restricted access'); ?>
<?php $uzivatel =& JFactory::getUser(); ?>
<ul class="latestnews<?php echo $params->get('moduleclass_sfx'); ?>">
<?php foreach ($list as $item) : ?>
<li class="latestnews<?php echo $params->get('moduleclass_sfx'); ?>">
<?php if (($uzivatel->id != 0) && ((strtotime($uzivatel->lastvisitDate)+ Date("Z")) < strtotime($item->created))) : ?>
<span class="newcontents_mod">
<?php echo JText::_( 'NEW' ); ?>
</span>
<?php endif; ?>
<?php echo $item->link; ?>
<a xhref="<?php echo $item->link; ?>" class="latestnews<?php echo $params->get('moduleclass_sfx'); ?>">
<?php echo $item->text; ?></a>
</li>
<?php endforeach; ?>
</ul>
Ani v tomto případě není nutné upravovat ani zprovozňovat jazykový soubor šablony, neboť proměná „NEW“ již existuje v jazykovém souboru J!.
Ještě zbývá přidat novou třídu do css souboru ..\templates\rhuk_milkyway\css\template.css. Třída obsahuje pro ukázku pouze deklaraci pro změnu barvy textu.
.newcontents_mod {color: #cc0033;}
A je to ....
Pouze nezapomeňte, že byl proveden zásah do jádra, proto při upgrade J! bude nutné znovu provést úpravu jádra. Zde uvedená úprava byla provedena na verzi J! 1.5.9.