Přihlásit se

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 access
defined('_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.