DomůČlánkyTipy a trikyPřišpendlení článků

Určitě jste již narazili na situaci, kdy jste chtěli, aby nějaký článek zůstal na stránce jako první, ale Joomla jej pořád odsouvá, pod nejnovější článek a vy jej musíte stále ručně posouvat nahoru. Řešení na opravu tohoto problému je přitom velmi jednoduché.

Administrace

Formulář

Začátek naších úprav začneme v administraci Joomly v souboru /administrator/components/com_content/models/article.xml, kde se nachází definice položek vedle článku. Zde si přidáme položku, která nám bude určovat přišpendlení článku:

                <param name="sticky" type="radio" default="0" label="Sticky">
                        <option value="0">No</option>
                        <option value="1">Yes</option>
                </param>
 

Následně musíme do tabulky přidat sloupec s názvem sticky, což provedeme asi v PHPMyAdminu zadáním příkazu:

ALTER TABLE jos_content ADD sticky int(1) NOT NULL DEFAULT '0';

Tento sloupec také musíme přidat do mapování Joomly, které se nachází v souboru /libraries/joomla/database/table/content.php přidáním řádku:

var $sticky=null;

na začátek třídy JTableContent.

Tímto máme zajištěno ukládání této hodnoty v administraci.

Tabulka článků

Jestliže chceme, mít možnost přepínat přišpendlení článku stejně jako třeba zobrazení na titulce v přehledu článků podíváme se do souboru /administrator/components/com_content/admin.content.html.php, kde si najdeme funkci showContent(). Jak si můžete všimnout jedná se o komponentu ještě ne plně převedenou do nového MVC stylu Joomly. Zde si ve druhé tabulce najdeme sekci thead a na požadované místo vložíme:

<th>
    <?php echo JHTML::_('grid.sort', 'Sticky', 'sticky', @$lists["order_Dir"],@$lists["order"] ); ?>
</th>

To tbody vložíme do odpovídajícího sloupce:

<td align="center">
    <a href="javascript:void(0);" onclick="return listItemTask('cb','toggle_sticky');" title="">
        <img src="images/" alt="" width="16" height="16"/>
    </a>
</td>
 

Jelikož jak jsem před chvilkou zmínil administrace článku ještě není plně přizpůsobená novému stylu Joomly, tak nejprve musíme v souboru admin.content.php přidat do switche podmínku:

 case 'toggle_sticky':
                ContentController::toggleSticky();
                break;
 

Následuje poslední krok a to přidání metody do souboru controller.php:

    function toggleSticky() {
                $app=JFactory::getApplication();
                $cid=JRequest::getVar('cid',array('0'),'post','array');
                $db=JFactory::getDBO();
 
                $query="SELECT sticky FROM #__content \n";
                $query.="WHERE id=".$cid[0];
                $db->setQuery($query);
                $sticky=(int)$db->loadResult();
 
                if($sticky==1) {
                        $nsticky=0;
                } else {
                        $nsticky=1;
                }
 
                $query="UPDATE #__content SET sticky=".$nsticky." \n";
                $query.="WHERE id=".$cid[0];
                $db->setQuery($query);
                $db->query();
 
                $app->redirect('index.php?option=com_content');
 
        }
 

Pokud v Joomle teprve začínáte programovat, předchozí kód je ukázka toho, jak rozšíření v Joomle rozhodně nemá vypadat. Přechozí řádky přijdou do části Model, nikoliv Controlleru, který pouze řídí odpovědi na uživatelské akce, tento stav je způsoben nedokončeným přepsáním Joomly.

Veřejná část

Zobrazení

Dále pokračujeme do veřejné části, kde musíme vyřešit řazení podle této hodnoty a také její ukládání při zadávání článku z veřejné části. Pro nedočkavce začneme jak seřadit články podle parametry sticky(Přilepení). Úpravy provedeme v souborech section.php, category.php a frontpage.php v adresáři /components/com_content/models. Ve všech souborech si najdeme metodu _buildContentOrderBy a řádek:

$orderby = ' ORDER BY ';

nahradíme za

$orderby = ' ORDER BY a.sticky DESC, ';

Pouze v souboru frontpage.php tento řádek vypadá:

$orderby = ' ORDER BY '.$primary.' '.$secondary;

takže jej upravíme na:

$orderby = ' ORDER BY a.sticky DESC, '.$primary.' '.$secondary;

čímž zajistíme, že články označené jako přišpendlené se budou zobrazovat nejdříve.

Editace článku

Pokud chceme, aby i uživatelé ve veřejné části si mohli volit jestli má být článek přišpendlený, změnu provedeme v souboru /components/com_content/views/article/tmpl/form.php. Do tabulky pod článkem přidáme nový řádek:

<tr>
 <td class="key">
 <label for="sticky">
 
 </label>
 </td>
 <td>
 <?php echo JHTML::_('select.booleanlist','sticky','class="inputbox"',$this->article->sticky); ?>
 </td>
</tr>

Překlad

Pokud chceme mít popisek v Sticky v administrační části v češtiíne stačí do souboru /administrator/language/cs-CZ/cs-CZ.com_content.ini přidat řádek:

STICKY=Přišpendlený

Totéž provedeme pro veřejnou část v souboru /language/cs-CZ/cs-CZ.com_content.ini

Komentářů (0)
Přidat komentář
YOUR_CONTACT_DETAILS:
Komentářů:
[b] [i] [u] [s] [url] [quote] [code] [img]   
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
SECURITY
Prosím=vložte text z obrázku (anti-SPAM ochrana

Zprávičky

Napsat novou zprávičku  |  Vše

sh404SEF 2.0.3.545

Nová verze

Napsal Peter Smrčák | 13.08 22:12

Kunena 1.6 RC1

Nová verze

Napsal Peter Smrčák |  9.08 15:28

Vyšla nová Kunena RC1 pre pripravovanú Joomlu 1.6.

EasyBook reloaded!

Nová verze

Napsal Peter Smrčák |  4.08 06:41

Vyšla stabilná verzia obľúbenej návštevnej knihy EasyBook reloaded vo verzii 2.0.4.

VirtueMart 1.1.5

Nová verze

Napsal Peter Smrčák | 28.07 15:11

Práve vyšiel nový VirtueMart.

Táto verzia opravuje rôzne problémy.

changelog | download

Joomla 1.5.19

Bezpečnost

Napsal Filip Bartmann | 16.07 18:30

Dnešním dnem spatřila světlo světa další aktualizace stabilní řady Joomly 1.5, tentokrát s pořadovým číslem 19 a kódovým jménem Wojmamni ama batani. Jedná se o opravu několika menších bezpečnostních chyb v administraci a také novou verzi js frameworku Mootools.

Více...

Jméno Joomla!® je použito pod limitovanou licenci od Open Source Matters ve Spojených státech a ostatních zemích. Joomladev nemá spojení s Open Source Matters, nebo projektem Joomla! a není součástí jejich podpory
Logo Joomla!® je použito pod limitovanou licenci od Open Source Matters ve Spojených státech a ostatních zemích. http://joomladev.eu nemá spojení s Open Source Matters, nebo projektem Joomla! a není součástí jejich podpory