Úprava vzhledu zobrazení článků

20.02.2007 14:29 265 zhlédnutí
Autor článku
Filip Bartmann
Článek uživatele
Protože se tady objevilo několik dotazů ohledně toho, jak lépe naformátovat zobrazení článků, tak mě to inspirovalo, abych si s tím zaexperimentoval a přišel jsem na několik zajímavých nápadů.
Konkrétně si ukážeme jak změnit pořadí vypisovaných údajů, přidáme si datum publikování článků (které si upravíme, aby obsahovalo také čas), a nakonec si články případně setřídíme místo času napsání podle času publikování. 

Změna pořádí údajů

Za zobrazení článků je zodpovědná funkce show, která se nachází kolem řádku 430 v souboru content.html.php v adresáři components/com_content(v tomto adresáři se budeme po zbytek článku pohubovat). Tato funkce určuje jak se články budou zobrazovat nejen v zobrazení BlogSection/Category, ale i samotné zobrazení článků.

Formátování se týká část od první tabulky kolem řádku 458. Zde v jediném řádku této tabulky vidíme popořadě funkce, které zobrazují Titulek článku, ikonu pdf, ikonu tisku a e-mailovou ikonu. Za podmínkou } else if ( $access->canEdit ) { následuje kód, který, pokud je uživatel autorizován zobrazí ikonu pro editaci článků. Při troše přemýšlení si tedy můžeme změnit zobrazení titulku, že třeba dáme ikonu pro editaci, dáme před název článků. Zde se ale skrývá trošku chyták. Někoho by totiž mohlo svádět změnit umístění celé podmínky else if ale za zobrazení této ikony je zobrazení Blog zodpobědný kód ve funkci Title, která se nachází o kousek níže na řádku 602.
<td class="contentheading<?php echo $params->get( 'pageclass_sfx' ); ?>" width="100%">
                                       <?php HTML_content::EditIcon( $row, $params, $access ); ?>
                                        <a href="<?php echo $row->link_on;?>" class="contentpagetitle<?php echo $params->get( 'pageclass_sfx' ); ?>">
                                                <?php echo $row->title;?></a>

                                </td>
                                <?php
                        } else {
                                ?>
                                <td class="contentheading<?php echo $params->get( 'pageclass_sfx' ); ?>" width="100%">
                                        <?php HTML_content::EditIcon( $row, $params, $access ); ?>
                                        <?php echo $row->title;?>

                                </td>
Zde jsem červeně vybarvil řádky, které jsem změnil, aby se ikona pro editaci zobrazila před nadpisem článku.

Standartně se hodnocení článků zobrazuje pod titulkem, ale nad jménem sekce, či kategorie. Pokud vám to nevyhovuje, lze to velmi jednoduše změnit:

<table class="contentpaneopen<?php echo $params->get( 'pageclass_sfx' ); ?>">
                <?php
                // displays Section & Category
                HTML_content::Section_Category( $row, $params );

                HTML_content::Hits ( $row, $params );
                $results = $_MAMBOTS->trigger( 'onBeforeDisplayContent', array( &$row, &$params, $page ) );
                echo "<tr><td colspan=\"2\">".trim( implode( "\n", $results ) )."</td></tr>";


                // displays Author Name
                HTML_content::Author( $row, $params );
                // displays Created Date
                //HTML_content::CreateDate( $row, $params );
                HTML_content::PublishDate( $row, $params );
                HTML_content::ModifiedDate( $row, $params );

O hodnocení článků se stará Mambot, který má nastaveno zobrazení před článkem(onBeforeDisplayContent), tento kód stačí přesunout pod řádek HTML_content::Section_Category a řádek echo upravit způsobem, jak je zde ukázáno. Dále si všimněte červených řádků. Řádek Hits je jméno funkce, která zobrazí kolikrát byl daný článek přečtený. Ve spodní části výpisu je také vidět, že jsem zakomentoval zobrazení data vytvoření článku a místo něj přidal datum publikování článků. Obě funkce si hned ukážeme.

Nové funkce

Nejprve si ukážeme jednodušší funkci zobrazující datum publikování:

function PublishDate( &$row, &$params ) {
                $publish_date = null;

                if ( intval( $row->publish_up ) != 0 ) {
                        $publish_date = mosFormatDate( $row->publish_up );
                }

                        ?>
                        <tr>
                                <td valign="top" colspan="2" class="createdate">
                                        <?php echo $publish_date; ?>
                                </td>
                        </tr>
                        <?php
        }
Tady je zajímavý červený řádek. Jak vidíme zobrazení data určuje funkce mosFormatDate, která je definovaná v souboru include/joomla.php(řádek 3657) jako function mosFormatDate( $date, $format="", $offset=NULL ). Z tohoto zápisu lze poznat,že funkce jako první parametr bere hodnotu data. Druhým parametrem je formát data a třetí je offset. Z čehož vyplývá, že stačí do červeného řádku přidat požadovaný formát data. Pokud tedy chceme aby se zobrazoval i čas publikování článků stačí řádek upravit do této podoby:

$publish_date = mosFormatDate( $row->created, "%d %B %Y %H:%M:%S" ); 

a ukáže se nám datum i čas publikování, nebo třeba vytvoření článku. Pro vytvoření článků si stačí kolem řádku 811 najít funkci CreateDate a pro Aktualizaci ModifiedDate(řádek 830) a upravit odpovídající řádek naznačeným způsobem. 

Další o něco složitější funkce je Hits:

       function Hits( &$row, &$params ) {
                $hits = null;
                $hits = $row->hits ;
                ?>
                <tr>
                        <td valign="top" colspan="2" class="hits">
                                <?php echo _HEADER_HITS .': '.$row->hits; ?>
                        </td>
                </tr>
                <?php
        }
Mimo přidání této funkce ke konci souboru content.html.php je potřeba ještě jedné úpravy v souboru content.php, protože jinak se bude zobrazovat pouze 0. Ono místo se nachází v okolí řádku 1727:

       // needed for caching purposes to stop different cachefiles being created for same item
        // does not affect anything else as hits data not outputted
//      $row->hits = 0;

Červený řádek je potřeba zakomentovat, protože hodnotu hitů, neboli přečtení stránky z důvodů cache,aby zabránil tvorbě rozdílných cache souborů pro stejný článek, je tato hodnota nulovaná což my ale nepotřebujeme.

To ale pořád není všechno. Ještě je třeba doplnit načtení tohoto sloupce z databáze. K tomu si musíme v tomtéž souboru najít nejprve funkci frontpage(stará se o titulní stránku) a kolem řádku 202 jí upravit takto:

 $query = "SELECT a.id, a.title, a.title_alias, a.introtext, a.sectionid, a.state, a.catid, a.created, a.created_by, a.created_by_alias, a.modified, a
.modified_by,"
        . "\n a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.images, a.urls, a.ordering, a.metakey, a.metadesc, a.access, a.hits,"
        . "\n CHAR_LENGTH( a.fulltext ) AS readmore, u.name AS author, u.usertype, s.name AS section, cc.name AS category, g.name AS groups"
Přidaná položka je zobrazena červeně.

Další úprava je okolo řádku 680:

       $query = "SELECT a.id, a.title, a.title_alias, a.introtext, a.sectionid, a.state, a.catid, a.created, a.created_by, a.created_by_alias, a.modified, a.modified_by,"
        . "\n a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.images, a.urls, a.ordering, a.metakey, a.metadesc, a.access, a.hits,"
        . "\n CHAR_LENGTH( a.fulltext ) AS readmore, u.name AS author, u.usertype, s.name AS section, cc.name AS category, g.name AS groups"



Řádek 802:

  $query = "SELECT a.id, a.title, a.title_alias, a.introtext, a.sectionid, a.state, a.catid, a.created, a.created_by, a.created_by_alias, a.modified, a.modified_by, a.hits,"
        . "\n a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.images, a.urls, a.ordering, a.metakey, a.metadesc, a.access,"
        . "\n CHAR_LENGTH( a.fulltext ) AS readmore, s.published AS sec_pub,  cc.published AS sec_pub, u.name AS author, u.usertype, s.name AS section, cc.name AS category, g.name AS groups"
 

A konečně poslední řádek 1415:

$query = "SELECT a.*, a.hits, u.name AS author, u.usertype, cc.name AS category, s.name AS section, g.name AS groups,"
        . "\n s.published AS sec_pub, cc.published AS cat_pub, s.access AS sec_access, cc.access AS cat_access,"
        . "\n s.id AS sec_id, cc.id as cat_id"

Změna řazení článků

Na závěr si ukážeme ještě jednu drobnou změnu, pokud nám nevyhovuje řazení článků podle data vytvoření článků a chtěli bychom řadit podle data publikace článku. K tomu si najdeme funkci _orderedby_sec na řádku 2438 v souboru content.php:
function _orderby_sec( $orderby ) {
        switch ( $orderby ) {
                case 'date':
                        $orderby = 'a.publish_up';
                        break;

                case 'rdate':
                        $orderby = 'a.publish_up DESC';
                        break;

                case 'alpha':
a text a.created můžeme nahradit za a.publish_up.

Doufám, že se mi podařilo úpravy popsat dobře. Pokud vám něco není jasné, tak se zeptejte v diskusi pod článkem a já vám rád odpovím. 

Informace o autorovi Filip Bartmann

Líbil se vám článek?
(0 hlasů)
Profesionální statistika
Předchozí článek autora Filip Bartmann  28.12.2005 240
Profesionální statistika
Článek uživatele
Pokud jste dosud hledali statistiku pro Joomla/Mambo a dosud jste neuspěli, tak vám může pomoct...
Joomla! 1.0.15
Následujicí článek autora Filip Bartmann  22.02.2008 240
Joomla! 1.0.15
Článek uživatele
Vyšla nová Joomla! 1.0.15 a opravuje jedinou chybu, která umožňuje spuštění cizího souboru. Chybě...

Štítky:

25.01.2012 10:39 191 zhlédnutí
Novinky
Joomla 1.7.4
Joomla 1.7.4

Vyšla opravná verze Joomly 1.7.4

srVětšina uživalů by měla raději aktualizovat na právě vydanou Joomlu...

25.01.2012 10:28 187 zhlédnutí
Novinky
Joomla 2.5 vydána
Joomla 2.5 vydána

j25Joomla, která je nejpoužívanějším systémem pro správu obsahu od www stránek po intranety, vyšla ve verzi 2.5....

15.12.2011 11:51 172 zhlédnutí
Novinky
Novinky v knihovně Joomly
Novinky v knihovně Joomly

Byla vydána nová verze knihoven Joomly ve verzi 11.3, která budou součástí nové Joomlu 2.5.

Mimo...

05.12.2011 11:26 180 zhlédnutí
Novinky
Joomla 2.5 se blíží
Joomla 2.5 se blíží

Právě byly do Joomly začleněny knihovny ve verzi 11.3 a zbývá již jenom několik týdnu do vydání...

13.07.2010 12:05 183 zhlédnutí
Novinky
Joomla 1.6 Beta 5
Joomla 1.6 Beta 5

Dneska vyšla 5 beta verze Joomly 1.6. Tato verze není určena pro produkční stránky. Je určena...

29.06.2010 12:04 194 zhlédnutí
Novinky
Joomla 1.6 Beta 4
Joomla 1.6 Beta 4

Dneska vyšla další v pořadí již 4 beta verze připravované Joomly 1.6. Tato verze není určena pro...

15.06.2010 11:13 182 zhlédnutí
Novinky
Vyšla Joomla 1.6 beta 3
Vyšla Joomla 1.6 beta 3

Dneska podle plánu vyšla už třetí beta verze Joomly 1.6. Tato verze je beta a není určena pro...

28.04.2010 10:49 191 zhlédnutí
Novinky
Microsoft bude příspívat do Joomly
Microsoft bude příspívat do Joomly

Ano, tentokrát se nejedná o aprílový vtip, ale o skutečnost. Následuje překlad originálu textu od Sama...

28.04.2010 10:14 175 zhlédnutí
Novinky
Opravná Joomla 1.5.17
Opravná Joomla 1.5.17

Jak bylo avizováno, tak dneska vyšla Joomla 1.5.17 s kódovým názvem Wojmamni ama woobusani, která...

24.04.2010 11:19 181 zhlédnutí
Novinky
Joomla 1.5.16
Joomla 1.5.16

Včera (23. dubna) vyšla po 6 měsících nová verze Joomly tentokráte s číslem 16 a kódovým názvem...

14.11.2009 10:23 199 zhlédnutí
Novinky
Údržba JoomlaCode
Údržba JoomlaCode

Díky tomu, že JoomlaCode (místo, kde je uložen kód Joomly a různých rozšíření) dostal nový server, se v...

28.07.2008 10:57 198 zhlédnutí
Novinky
Joomla 1.5.5[Mamni]
Joomla 1.5.5[Mamni]

Právě se rozhlížím po webu a při svých toulkách jsem navštívil i web joomla.org a hned jako první...

05.04.2008 20:34 276 zhlédnutí
Vývojářské tipy
Registrace v Joomle 1.5 a staré šablony
Registrace v Joomle 1.5 a staré šablony

Pokud používáte novou Joomlu! 1.5.2 a ještě nemáte k dispozici šablonu psanou přesně pro tuto...

13.03.2008 11:35 192 zhlédnutí
Novinky
Artio JoomSEF 3.0
Artio JoomSEF 3.0

Pokud nedočkavě očekáváte SEF komponentu pro Joomlu 1.5, tak mám pro vás dobrou zprávu, právě...

08.03.2008 12:57 177 zhlédnutí
Novinky
JCE 1.5 beta 1
JCE 1.5 beta 1

Na stránkách editoru JCE se můžeme dočíst o slibované a mnoha uživateli vyhlížené verzi editoru

22.02.2008 18:17 240 zhlédnutí
Novinky
Joomla! 1.0.15
Joomla! 1.0.15

Vyšla nová Joomla! 1.0.15 a opravuje jedinou chybu, která umožňuje spuštění cizího souboru. Chybě je jí...

20.02.2007 14:29 266 zhlédnutí
Vývojářské tipy
Úprava vzhledu zobrazení článků
Úprava vzhledu zobrazení článků
Protože se tady objevilo několik dotazů ohledně toho, jak lépe naformátovat zobrazení článků, tak mě to
...
28.12.2005 13:28 240 zhlédnutí
Rozšíření a eshopy pro Joomla!
Profesionální statistika
Profesionální statistika
Pokud jste dosud hledali statistiku pro Joomla/Mambo a dosud jste neuspěli, tak vám může pomoct...
19.12.2005 16:55 174 zhlédnutí
Novinky
Co nového chystá Joomla 1.1
Co nového chystá Joomla 1.1
Po té co jsem se začal zajímat co nového chystá nová verze Joomly 1.1 a několik vývojových kompilací jsem
...

Nové články

Článek uživatele
Novinky
Joomla 3.9.11
Článek uživatele
Novinky
Vyšla Joomla 3.9.10
Článek uživatele
Novinky
Vyšla Joomla 3.9.9 - neaktualizujte!
Článek uživatele
Novinky
Joomla 4, Alpha 10

Související články