Logo stránkyjako obrázek kategorie (měnící se)

Jiří Drozen
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..
<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:
<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

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
09. srp 2016 18:51 #127957
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:
$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í.
$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
<img src="<?php echo JURI::root(true).'/'.$image; ?>" alt="..." />
Poděkovali: Jiří Drozen

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

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

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
09. srp 2016 21:17 #127960
kód <?php ...?> nedoplňujte, protože index.php je celé v php a začíná <?php

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Jiří Drozen
09. srp 2016 22:06 #127961
VYŘEŠENO

velké díky Conymu!!

..do index.php ve vašem templatu mezi znak <?php a ?>
$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>
<img src="<?php echo JURI::root(true).'/'.$image; ?>" alt="..." />

Děkuji za pomoc!

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.