Joomla 5.2.2 Security & Bugfix Release
Joomla 5.2.2 je nyní k dispozici. Jedná se o bezpečnostní vydání pro Joomla 5.x.
Idea Logo stránkyjako obrázek kategorie (měnící se)
09. srp 2016 16:10 #127954
Dobrý den, prosím vás o pomoc, snažím se LOGO webu nahradit obrázkem kategorie.
Chtěl bych aby to fungovalo tak, že pokud se pohybuji po webu a po různých článcích = v různých kategoriích, bude se podle toho měnit i LOGO.
Nejlepší cesta mi přišla využít obrázku kategorie.
Pokusil jsem se do index.php napsat něco takového..
nebo pokud o něco jednoduššího:
zde jsem počítal s použitím stejného jména obráku jako kategorie..
Nefunguje ani jedno..(kódy výše jsou kódy,co fungují ve starších joomla verzích - použito z EN fora)
Prosím, nemáte nějaký nápad jak na to??
Moc vám všem děkuju za jakékoliv nápady
Chtěl bych aby to fungovalo tak, že pokud se pohybuji po webu a po různých článcích = v různých kategoriích, bude se podle toho měnit i LOGO.
Nejlepší cesta mi přišla využít obrázku kategorie.
Pokusil jsem se do index.php napsat něco takového..
Code:
<div class="logo">
<?php
$secid = $this->item->catid;
$category = JCategories::getInstance('Content')->get($secid);
if ($category->getParams()->get('image')):?>
<img src="<?php echo $category->getParams()->get('image'); ?>" />
<?php endif; ?>
</div>
Code:
<img src="images/headers/<?= $this->item->category ?>.png">
Nefunguje ani jedno..(kódy výše jsou kódy,co fungují ve starších joomla verzích - použito z EN fora)
Prosím, nemáte nějaký nápad jak na to??
Moc vám všem děkuju za jakékoliv nápady
09. srp 2016 18:51 #127957
Odpověď od Cony
Moderátor
Kódy které jste si ale zkopíroval je nutné také používat v místě, ve kterém mají být použity. Zde se patrně jednalo o úpravy zobrazení kategorie článků, ne samotné základní šablony.
Problém je, že v index.php neexistuje nic jako $this->item a není tam ani informace o tom, že jste zrovna na stránce kategorie, nebo článku. Klidně můžete být třeba na stránce kontaktu nebo úplně jiné komponenty.
V první řadě je tedy nutné zjistit zda jste na správné stránce, kde vůbec můžete nějakou kategorii zjistit a pokud ano, tak zjistit její ID. Šlo by to např. nějak takto:
Když už budete mít hodnotu ID kategorie, tak musíte zjistit přiřazený obrázek a pokud není (nebo není kategorie) tak zřejmě nějaký výchozí.
No a nakonec obrázek zobrazit
Problém je, že v index.php neexistuje nic jako $this->item a není tam ani informace o tom, že jste zrovna na stránce kategorie, nebo článku. Klidně můžete být třeba na stránce kontaktu nebo úplně jiné komponenty.
V první řadě je tedy nutné zjistit zda jste na správné stránce, kde vůbec můžete nějakou kategorii zjistit a pokud ano, tak zjistit její ID. Šlo by to např. nějak takto:
Code:
$app = JFactory::getApplication();
$categoryId = 0;
if ($app->input->getCmd('option') == 'com_content'
&& $app->input->getCmd('view') == 'category')
{
// stránka zobrazení obsahu kategorie
$categoryId = $app->input->getInt('id');
} else if ($app->input->getCmd('option') == 'com_content'
&& $app->input->getCmd('view') == 'article'
&& $app->input->getInt('id'))
{
// stránka zobrazení článku
$articleId = $app->input->getInt('id');
$db = JFactory::getDbo();
$db->setQuery('select catid from #__content where id='.$article_id);
$categoryId = $db->loadResult();
}
Když už budete mít hodnotu ID kategorie, tak musíte zjistit přiřazený obrázek a pokud není (nebo není kategorie) tak zřejmě nějaký výchozí.
Code:
$image = '';
if ($categoryId) {
$category = JCategories::getInstance('Content')->get($categoryId);
$image = $category->getParams()->get('image');
}
if (empty($image)) {
$image = 'images/default.png';
}
No a nakonec obrázek zobrazit
Code:
<img src="<?php echo JURI::root(true).'/'.$image; ?>" alt="..." />
Poděkovali: Jiří Drozen
09. srp 2016 20:04 #127959
Odpověď od Jiří Drozen
Začátečník
Děkuji Vám moc za odpověď!
Jsem v PHP bohužel lama, tak jsem nedokázal nic víc než kód doplnit o <?php ...?> a nakopírovat do index.php
..a dostávám stránku 404 a chybu 1064.
1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 SQL=select catid from #__content where id=
Mohu Vás ještě jedno poprosit o pomoc?
Děkuji Vám
S pozdravem
JD
Jsem v PHP bohužel lama, tak jsem nedokázal nic víc než kód doplnit o <?php ...?> a nakopírovat do index.php
..a dostávám stránku 404 a chybu 1064.
1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 SQL=select catid from #__content where id=
Mohu Vás ještě jedno poprosit o pomoc?
Děkuji Vám
S pozdravem
JD
09. srp 2016 21:17 #127960
Odpověď od Ernst
Joomla Expert
kód <?php ...?> nedoplňujte, protože index.php je celé v php a začíná <?php
09. srp 2016 22:06 #127961
Odpověď od Jiří Drozen
Začátečník
VYŘEŠENO
velké díky Conymu!!
..do index.php ve vašem templatu mezi znak <?php a ?>
..poté kamkoliv do html za znak <body>
Děkuji za pomoc!
velké díky Conymu!!
..do index.php ve vašem templatu mezi znak <?php a ?>
Code:
$app = JFactory::getApplication();
$categoryId = 0;
if ($app->input->getCmd('option') == 'com_content'
&& $app->input->getCmd('view') == 'category')
{
// stránka zobrazení obsahu kategorie
$categoryId = $app->input->getInt('id');
} else if ($app->input->getCmd('option') == 'com_content'
&& $app->input->getCmd('view') == 'article'
&& $app->input->getInt('id'))
{
// stránka zobrazení článku
$articleId = $app->input->getInt('id');
$db = JFactory::getDbo();
$db->setQuery('SELECT catid FROM #__content WHERE id='.$articleId);
$categoryId = $db->loadResult();
}
$image = '';
if ($categoryId) {
$category = JCategories::getInstance('Content')->get($categoryId);
$image = $category->getParams()->get('image');
}
if (empty($image)) {
$image = 'images/headers/default.png';
}
..poté kamkoliv do html za znak <body>
Code:
<img src="<?php echo JURI::root(true).'/'.$image; ?>" alt="..." />
Děkuji za pomoc!