Problém so šablónou At Cesmiro

Mat
18. lis 2018 12:18 #137776
Ahojte, prešiel som na joomlu 3.9.0 so šablonou At Cesmiro: http://www.joomla24.com/remository/Download/Templates_for_Joomla_2.5__or__1.7/Generator_Templates/At_Cesmiro.htmlhttp://www.joomla24.com/remository/Download/Templates_for_Joomla_2.5__or__1.7/Generator_Templates/At_Cesmiro.html

Stránku mám na localhoste vo verzií PHP 5.6.31 mi to zobrazuje chyby:
Notice: Undefined property: stdClass::$contactid in...
Deprecated: Non-static method Joomla\CMS\Application\SiteApplication::getMenu() should not be called statically, assuming $this from incompatible context in....
Deprecated: Non-static method Joomla\CMS\Application\CMSApplication::getMenu() should not be called statically, assuming $this from incompatible context in....
Pod tými chybami mi zobrazí článok

Problém ale pokračuje keď chcem dať vyššiu verziu PHP, keď dám PHP 7.1.9, po kliknutí na konkrétny článok mi zobrazí iba chybu:
0 - Using $this when not in object context
zobrazí mi iba chybu - žiaden text článkov...

Prosím poraďte čo robiť, viem že ta šablona bude asi zastaralá, ako sa zbaviť tých chýb???

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

Odpověď od Cony
18. lis 2018 12:58 #137778

Mat napsal: Prosím poraďte čo robiť, viem že ta šablona bude asi zastaralá, ako sa zbaviť tých chýb???

Ano šablona bude zřejmě staršího data. Máte dvě možnosti, buď zůstat na starším PHP, a v globalní nastavení Joomly nastavit Hlášení chyb na Žádné, nebo opravit kódy v šabloně. V tomto případě zřejmě někde v šabloně bude volání
JApplication::getMenu
což by mělo nově být
JFactory::getApplication()->getMenu()
Ale dost možná tam toho bue víc.

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

Odpověď od Ernst
18. lis 2018 16:16 #137782
ano, je to tak, jak psal Cony.
Pokud se vám ta hláška objeví při zobrazení článku, tak si zkuste najít /templates/xxxxxxx/html/com_content/article/default.php
Prostřednictvím FTP, když to neumíte, můžete použít rozšíření pro Joomla Phoca Commander, si v tomto souboru změňte kód, tak jak psal cony -

JApplication::getMenu
což by mělo nově být
JFactory::getApplication()->getMenu()


Druhou možností je, že si ten soubor přejmenujete a tak použijete tento soubor z joomly, ne ze šablony (pak se vám ale také začne jinak zobrazovat) a musel by jste měnit styly a možná i některé funkce, proto doporučuji jen tu změnu kódu.

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

Odpověď od Mat
18. lis 2018 23:49 #137793
Našiel som default.php, ale konkrétne veci nie. Toto je to čo som tam našiel, čo môžem v tom zmeniť, prípadne vymazať aby to fungovalo?
<?php
defined('_JEXEC') or die;

require_once dirname(__FILE__) . str_replace('/', DIRECTORY_SEPARATOR, '/../../../functions.php');

JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');

$component = new ArtxContent($this, $this->params);
$article = $component->article('article', $this->item, $this->item->params, array('print' => $this->print));

echo $component->beginPageContainer('item-page');
if (strlen($article->pageHeading))
    echo $component->pageHeading($article->pageHeading);
$params = $article->getArticleViewParameters();
if (strlen($article->title)) {
    $params['header-text'] = $this->escape($article->title);
    if (strlen($article->titleLink))
        $params['header-link'] = $article->titleLink;
}
// Change the order of "if" statements to change the order of article metadata header items.
if (strlen($article->created))
    $params['metadata-header-icons'][] = "<span class=\"at-postdateicon\">" . $article->createdDateInfo($article->created) . "</span>";
if (strlen($article->modified))
    $params['metadata-header-icons'][] = "<span class=\"at-postdateicon\">" . $article->modifiedDateInfo($article->modified) . "</span>";
if (strlen($article->published))
    $params['metadata-header-icons'][] = "<span class=\"at-postdateicon\">" . $article->publishedDateInfo($article->published) . "</span>";
if (strlen($article->author))
    $params['metadata-header-icons'][] = "<span class=\"at-postauthoricon\">" . $article->authorInfo($article->author, $article->authorLink) . "</span>";
if ($article->printIconVisible)
    $params['metadata-header-icons'][] = $article->printIcon();
if ($article->emailIconVisible)
    $params['metadata-header-icons'][] = $article->emailIcon();
if ($article->editIconVisible)
    $params['metadata-header-icons'][] = $article->editIcon();
if (strlen($article->hits))
    $params['metadata-header-icons'][] = $article->hitsInfo($article->hits);
// Build article content
$content = '';
if (!$article->introVisible)
    $content .= $article->event('afterDisplayTitle');
$content .= $article->event('beforeDisplayContent');
if (strlen($article->toc))
    $content .= $article->toc($article->toc);
if (strlen($article->text))
    $content .= $article->text($article->text);
if ($article->introVisible)
    $content .= $article->intro($article->intro);
if (strlen($article->readmore))
    $content .= $article->readmore($article->readmore, $article->readmoreLink);
$content .= $article->event('afterDisplayContent');
$params['content'] = $content;
// Change the order of "if" statements to change the order of article metadata footer items.
if (strlen($article->category))
  $params['metadata-footer-icons'][] = "<span class=\"at-postcategoryicon\">"
    . $article->categories($article->parentCategory, $article->parentCategoryLink, $article->category, $article->categoryLink)
    . "</span>";
// Render article
echo $article->article($params);
echo $component->endPageContainer();

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

Odpověď od Cony
19. lis 2018 00:13 #137794
Tady zřejmě nic. Šablona používá jakýsi svůj vlastní framework, nepoužívá standardy Joomly, vstupní bod bude v souboru functions.php v hlavním adresáři šablony, ale těch souborů tam bude zřejmě někde víc. kuste porhledat celý adresář na ::getMenu.

Otázkou ale je kolik podobných anachronismů tam bude, jestli by se časově a náročností spíš nevyplatilo přejít na jinou, novou šablonu.

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

Odpověď od Ernst
19. lis 2018 00:18 #137796
jen pro jistotu - kde je ten default.php umístěn?

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

Odpověď od Mat
19. lis 2018 19:07 #137808
Súbor default.php mám umiestnený tam ako ste mi povedali: /templates/xxxxxxx/html/com_content/article/default.php

functions.php - som pozrel ale JApplication::getMenu som tam nenašiel a podobne aj v ostatných súboroch šablóny.

Keď si dám joomlu späť v php 5.6.31 ukazuje mi stále tieto tri chyby:

Notice: Undefined property: stdClass::$contactid in C:\wamp64\www\farnostjasenica\templates\at_cesmiro\classes\ArtxContentSingleArticle.php on line 40
Deprecated: Non-static method Joomla\CMS\Application\SiteApplication::getMenu() should not be called statically, assuming $this from incompatible context in C:\wamp64\www\farnostjasenica\templates\at_cesmiro\classes\ArtxContentSingleArticle.php on line 41

Kód v tých riadkoch vyzerá takto:
if (strlen($this->author)) {
            $needle = 'index.php?option=com_contact&view=contact&id=' . $this->_article->contactid;
            $item = JSite::getMenu()->getItems('link', $needle, true);
            $this->authorLink = !empty($item) ? $needle . '&Itemid=' . $this->_article->id : $needle;
        } else

Posledná chyba je táto:
Deprecated: Non-static method Joomla\CMS\Application\CMSApplication::getMenu() should not be called statically, assuming $this from incompatible context in C:\wamp64\www\farnostjasenica\libraries\src\Application\SiteApplication.php on line 275
Kód je:
public function getMenu($name = 'site', $options = array())
	{
		return parent::getMenu($name, $options);
	}

Nejaké dobre rady čo by som mohol pomeniť v týchto chybách???

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

Odpověď od Ernst
19. lis 2018 19:55 #137809
Je těžké radit, jen takhle z pár řádků. Kdyby to bylo na netu a byl k tomu přístup, tak by se daly některé chyby opravit, ale je to pracné a mohou se objevit zase další chyby.
Jednodušší je možná to předělat na novou šablonu.

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

Odpověď od Cony
19. lis 2018 20:16 #137810
Zkuste odstranit celý tento blok
if (strlen($this->author)) {
            $needle = 'index.php?option=com_contact&view=contact&id=' . $this->_article->contactid;
            $item = JSite::getMenu()->getItems('link', $needle, true);
            $this->authorLink = !empty($item) ? $needle . '&Itemid=' . $this->_article->id : $needle;
        } else
Zakomonetujte jej, nebo smažte. Zřejmě se jedná o odkaz na profil autora, pokud nemáte vytvořené profily (kontakty), stejně se nic nezobrazí.

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