Přihlásit se

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..
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>
nebo pokud o něco jednoduššího:
Code:
<img src="images/headers/<?= $this->item->category ?>.png">
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

09. srp 2016 18:51 #127957
Odpověď od Cony
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:
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="..." />

09. srp 2016 20:04 #127959
Odpověď od Jiří Drozen
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

09. srp 2016 21:17 #127960
Odpověď od Ernst
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
VYŘEŠENO

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!

Powered by Fórum