Problém s počtem komentářů

Datum 22. 11. 2009 v 18:12 | Rubrika: Zápisník pojídačky koláčů pro Xoops

     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 == )
{
$morelink .= '">'._NW_COMMENTS.'</a>';
}
else
{
if ( 
$fullcount )
{
if ( 
$ccount == )
{
$morelink .= '">'._NW_READMORE.'</a> | '.$morelink2.'">'._NW_ONECOMMENT.'</a>';
}
else
{
$morelink .= '">'._NW_READMORE.'</a> | '.$morelink2.'">';
$morelink .= sprintf(_NW_NUMCOMMENTS$ccount);
$morelink .= '</a>';
}
}
else
{
if ( 
$ccount == )
{
$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 == )
{
$morelink .= '">'._NW_COMMENTS.'</a>';
}
else
{
if ( 
$fullcount )
{
if ( 
$ccount == )
{
$morelink .= '">'._NW_READMORE.'</a> | '.$morelink2.'">'._NW_ONECOMMENT.'</a>';
}
else
{
if (( 
$ccount >) && ( $ccount <5))
{
$morelink .= '">';
$morelink .= sprintf(_NW_NUMCOMMENTS2$ccount);
$morelink .= '</a>';
}
else
{
$morelink .= '">';
$morelink .= sprintf(_NW_NUMCOMMENTS5$ccount);
$morelink .= '</a>';
}
}
}
else
{
if ( 
$ccount == ) {
$morelink .= '">'._NW_ONECOMMENT.'</a>';
}
else
{
if (( 
$ccount >) && ( $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.



Článek pochází z webu Žirafoviny.cz
https://www.zirafoviny.cz

URL tohoto článku je:
https://www.zirafoviny.cz/modules/news/article.php?storyid=104