Trošku jsem se vrtala v systému Žirafovin a napadlo mě několik drobností. Téměř všechno se týkalo buď mých modulů a nebo jazykových souborů. Ale pak mi do očí padla jedna věc a to zobrazování počtu komentářů u článků. Sice to bylo správně, ale nebylo to ono.
Na webu je dosti často kritizovaný fakt, že autoři programů, či jiných systémů, nepočítají s jiným jazykem než je ten jejich. Takže různé počty bývají zobrazované správně v původním jazyce, ale v češtině to je „divné“. Ale nejde jen o češtinu, některé jiné jazyky jsou na tom podobně. Při překladu se to pak obchází například takto: „Počet komentářů: 3“ místo správnějšího „3 komentáře“. Když ale původní program dovede rozlišit pouze jeden nebo více komentářů, je to problém. A právě proto jsem se pustila do zkoumání modulu News, jenž se na Žirafovinách stará o články. Je to dosti složitý modul, možná jeden z nejsložitějších vůbec, ale nakonec jsem našla vše potřebné a trošku jej „hacknula“ 
Důležité jsou tyto dva soubory:
language/jazyk/main.php a class/class.newsstory.php
Oba jsou umístěné ve struktuře modulu.
V tom první je potřeba změnit:
define("_NW_NUMCOMMENTS","%s komentáře");
na
define("_NW_NUMCOMMENTS2","%s komentáře");
define("_NW_NUMCOMMENTS5","%s komentářů");
To je snadné, ve druhém je to již o něco složitější. Je potřeba najít:
if (XOOPS_COMMENT_APPROVENONE != $xoopsModuleConfig['com_rule'])
{
$ccount = $this->comments();
$morelink .= '<a href="'.XOOPS_URL.'/modules/news/article.php?storyid='.$this->storyid().'';
$morelink2 = '<a href="'.XOOPS_URL.'/modules/news/article.php?storyid='.$this->storyid().'';
if ( $ccount == 0 )
{
$morelink .= '">'._NW_COMMENTS.'</a>';
}
else
{
if ( $fullcount < 1 )
{
if ( $ccount == 1 )
{
$morelink .= '">'._NW_READMORE.'</a> | '.$morelink2.'">'._NW_ONECOMMENT.'</a>';
}
else
{
$morelink .= '">'._NW_READMORE.'</a> | '.$morelink2.'">';
$morelink .= sprintf(_NW_NUMCOMMENTS, $ccount);
$morelink .= '</a>';
}
}
else
{
if ( $ccount == 1 )
{
$morelink .= '">'._NW_ONECOMMENT.'</a>';
}
else
{
$morelink .= '">';
$morelink .= sprintf(_NW_NUMCOMMENTS, $ccount);
$morelink .= '</a>';
}
}
}
}
A to změnit na:
if (XOOPS_COMMENT_APPROVENONE != $xoopsModuleConfig['com_rule'])
{
$ccount = $this->comments();
$morelink .= '<a href="'.XOOPS_URL.'/modules/news/article.php?storyid='.$this->storyid().'';
$morelink2 = '<a href="'.XOOPS_URL.'/modules/news/article.php?storyid='.$this->storyid().'';
if ( $ccount == 0 )
{
$morelink .= '">'._NW_COMMENTS.'</a>';
}
else
{
if ( $fullcount < 1 )
{
if ( $ccount == 1 )
{
$morelink .= '">'._NW_READMORE.'</a> | '.$morelink2.'">'._NW_ONECOMMENT.'</a>';
}
else
{
if (( $ccount >1 ) && ( $ccount <5))
{
$morelink .= '">';
$morelink .= sprintf(_NW_NUMCOMMENTS2, $ccount);
$morelink .= '</a>';
}
else
{
$morelink .= '">';
$morelink .= sprintf(_NW_NUMCOMMENTS5, $ccount);
$morelink .= '</a>';
}
}
}
else
{
if ( $ccount == 1 ) {
$morelink .= '">'._NW_ONECOMMENT.'</a>';
}
else
{
if (( $ccount >1 ) && ( $ccount <5))
{
$morelink .= '">';
$morelink .= sprintf(_NW_NUMCOMMENTS2, $ccount);
$morelink .= '</a>';
}
else
{
$morelink .= '">';
$morelink .= sprintf(_NW_NUMCOMMENTS5, $ccount);
$morelink .= '</a>';
}
}
}
}
}
No a to je vlastně všechno. Úprava začne fungovat okamžitě, pokud však máte zapnutou vyrovnávací paměť, je potřeba ji nejprve vymazat, jinak se změna projeví až po jejím vyprázdnění.
A jako vždy na závěr povídání o úpravách systému: před každou úpravou si proveďte zálohu původních souborů. Člověk nikdy neví, co se kde může zvrtnout.
|