PDA

Zobacz pełną wersję : Aktualizacja szablonu agriculture_15 pod Joomla 1.7



Zabolxp
28-07-2011, 01:27
Próbuję zaktualizować dla Joomla 1.7 szablon Agriculture (http://www.joomla24.com/Joomla_1.5.x_Downloads/Joomla_1.5_Templates/Agriculture.html) stworzony pierwotnie pod Joomla 1.5 i mam problem z plikiem "menu.php". Pojawia się komunikat:

Fatal error: Call to a member function getCfg() on a non-object in /home/[*skracam ścieżkę]/templates/agriculture_15/menu.php on line 9
Dzięki tym (http://wiki.joomla.pl/index.php/Aktualizacja_szablon%C3%B3w_Joomla_z_wersji_1.5_do _1.6) sugestiom poradziłem sobie z podobnym problemem w pliku "index.php", ale w przypadku "menu.php" to nie działa. Poniżej wklejam zawartość linii od 9 do 17 (bo w dalszych pewnie też pojawi się problem związany z ciągiem "$mainframe->getCfg"

$database = $mainframe->getCfg('db');
$user =& JFactory::getUser();
$my = $user -> get('usertype');
$cur_template = $mainframe->getTemplate();
$Itemid = JRequest::getInt('Itemid');
//$mosConfig_absolute_path;
$mosConfig_live_site = $mainframe->getCfg('live_site');
$contentConfig = &JComponentHelper::getParams( 'com_content' );
$mosConfig_shownoauth = !$contentConfig->get('shownoauth');
Według podlinkowanych wcześniej wskazówek wydawało mi się logiczne zamienić

$database = $mainframe->getCfg('db');na

$database = $app->getCfg('db');Jednak to nie działa. Nic nie zmienia również zgodna z sugestiami (jak je rozumiem) zmiana linii poniżej z

$user =& JFactory::getUser();na

$user = $app = JFactory::getApplication();Proszę o pomoc.

wojsmol
29-07-2011, 02:19
Witam
Spróbuj tak, pisane na szybko
$app = JFactory::getApplication();
$database = $app->getCfg('db');
$user =& JFactory::getUser();
$my = $user -> get('usertype');
$cur_template = $app->getTemplate();
$Itemid = JRequest::getInt('Itemid');
//$mosConfig_absolute_path;
$mosConfig_live_site = $app->getCfg('live_site');
$contentConfig = &JComponentHelper::getParams( 'com_content' );
$mosConfig_shownoauth = !$contentConfig->get('shownoauth');Pozdrawiam

Zabolxp
29-07-2011, 15:22
Dziękuję za pomoc! Zadziałało. Jednak pojawiły się kolejne schodki, mam nadzieję, że ostatnie.

Pierwszy problem to komunikat:


Unknown column 'p.parent' in 'field list' SQL=SELECT m.*, count(p.parent) as cnt FROM q2szg_menu AS m LEFT JOIN q2szg_menu AS p ON p.parent = m.id WHERE m.menutype='topmenu' AND m.published='1' GROUP BY m.id ORDER BY m.parent, m.ordering

Nie bardzo rozumiem o co chodzi z "nieznanymi kolumnami"? "q2szg_" to przedrostek tabel ustalony przed instalacją Joomli 1.7, tylko pytanie co wymaga modyfikacji? W innym temacie dopatrzyłem się podpowiedzi związaną z naprawą tabel w SQL - zrobiłem to w PHP My Admin i nic to nie dało. Poniżej kod z menu.php chyba z tym związany (linie od 59 do 88):


if ($mosConfig_shownoauth) {
$database = &JFactory::getDBO();
$database->setQuery( "SELECT m.*, count(p.parent) as cnt" .
"\nFROM #__menu AS m" .
"\nLEFT JOIN #__menu AS p ON p.parent = m.id" .
"\nWHERE m.menutype='$menutype' AND m.published='1'" .
"\nGROUP BY m.id ORDER BY m.parent, m.ordering ");

} else {
$database = &JFactory::getDBO();
$database->setQuery( "SELECT m.*, sum(case when p.published=1 then 1 else 0 end) as cnt" .
"\nFROM #__menu AS m" .
"\nLEFT JOIN #__menu AS p ON p.parent = m.id" .
"\nWHERE m.menutype='$menutype' AND m.published='1' AND m.access <= '$my->gid'" .
"\nGROUP BY m.id ORDER BY m.parent, m.ordering ");

}
$rows = $database->loadObjectList( 'id' );
echo $database->getErrorMsg();

//work out if this should be highlighted
$sql = &JFactory::getDBO();
$sql->setQuery( 'SELECT m.* FROM #__menu AS m WHERE menutype='.$menutype.' AND m.published=1'); // nie wiadomo po co to
$query = 'SELECT m.* FROM #__menu AS m WHERE menutype=\'.$menutype.\' AND m.published=1';
$database->setQuery( $query );
$subrows = $database->loadObjectList( 'id' );
$maxrecurse = 5;
$parentid = $Itemid;


Drugi kłopot to błąd w linii 113 (Invalid argument supplied for foreach() in ). Poniżej kod od linii 102 do 120 (113 pogrubiona na czerwono):


// I think nav-wrapper is obsolete and can be removed. See comment in suckerfiss.css
echo "<div id=\"cssMenu1\" class=\"horizontal\">";
$indents = array(
// block prefix / item prefix / item suffix / block suffix
array( "<ul class=\"menu\">", "<li>" , "</li>", "</ul>" ),
);
// establish the hierarchy of the menu
$children = array();
// first pass - collect children
foreach ($rows as $v ) {
$pt = $v->parent;
$list = @$children[$pt] ? $children[$pt] : array();
array_push( $list, $v );
$children[$pt] = $list;
}
// second pass - collect 'open' menus
$open = array( $Itemid );
$count = 20; // maximum levels - to prevent runaway loop
$id = $Itemid;
while (--$count) {
if (isset($rows[$id]) && $rows[$id]->parent > 0) {
$id = $rows[$id]->parent;
$open[] = $id;
} else {
break;
}
}
$class_sfx = null;
mosRecurseListMenu( 0, 0, $children, $open, $indents, $class_sfx, $hilightid );

PeFik
29-07-2011, 16:11
a nie łatwiej było wziąć pusty framework i dorzucić tylko te twoje zielone kolory + fotki , zajęło by to około 1h a tak ?

Zabolxp
29-07-2011, 23:26
Niestety pierwszy raz słyszę o frameworkach do Joomla. Znalazłem kilka, ale gdybym mógł prosić o kilka wskazówek będę wdzięczny, ale podejrzewam, że dla laika w temacie może to być trudne na początek.

Generalnie chciałbym poprawić to co jest, bo pod Joomla 1.5 zmodyfikowałem sobie już ten szablon idealnie tak jak bym chciał. Kwestia tylko prawidłowego wyświetlania się bazowego template'u.

---------- Post dodany o 22:26 ---------- Poprzedni post był o 15:35 ----------

Zrobiłem duży postęp, ponieważ pobrałem jakąś inaczej sformatowaną wersję tego szablonu STĄD (http://www.joomla-monster.com/free-templates/dj-agriculture-free-template.html). Nie ma w nim już pliku menu.php i wszystko w zasadzie wygląda pięknie poza tym, że nie wyświetla się żadne menu (top, left, right). Czy to przywoływany wcześniej problem z kolumnami? Kłopot w tym, że nie wyświetla się na stronie żaden komunikat o błędzie. W pliku index.php zamieniłem jedynie wyrażenia $mainframe na $app i dodałem $app = JFactory::getApplication();

Oto zawartość pliku index.php:


<?php
/***
# December 2008 (for Joomla 1.5)
# Copyright (C) design-joomla.eu All Rights Reserved.
# License: Copyrighted Commercial Software
# Website: http://www.design-joomla.eu (http://www.design-joomla.eu/)
# Support: joomla-monster@design-joomla.eu
***/
defined( '_JEXEC' ) or die( 'Restricted access' );
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
<head>
<jdoc:include type="head" />
<?php
if ( $my->id ) initEditor();
$mosConfig_live_site = JURI :: base();
$app = JFactory::getApplication();
$dj_name = $app->getTemplate();
$dj_path = $mosConfig_live_site . 'templates/' . $dj_name . '/';

if ( $this->countModules('left') == 0) $a = '-noleft';
if ( $this->countModules('right') == 0) $b = '-noright';
?>
<link rel="stylesheet" href="<?php echo $dj_path;?>css/template_css.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $dj_path;?>css/horizontal.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $dj_path;?>css/editor.css" type="text/css" />
<!--[if IE 6]>
<link href="<?php echo $dj_path;?>css/template_ie.css" rel="stylesheet" type="text/css" />
<style type="text/css">
img, #header_r, #header, #logo a { behavior: url(<?php echo $dj_path;?>images/iepngfix.htc) }
</style>
<![endif]-->
<script type="text/javascript" language="javascript" src="<?php echo $dj_path;?>js/animation.js"></script>
<link rel="shortcut icon" href="<?php echo $dj_path;?>images/favicon.ico"/>

</head>
<body>
<div id="header_in"><div align="center"><div id="header_mod">
<?php if ($this->countModules('header')) {?>
<jdoc:include type="modules" name="header" style="raw"/>
<?php } else { ?>
<img src="<?php echo $dj_path;?>images/header.jpg" alt="header" />
<?php } ?></div>
</div></div>
<div id="header_l"><div align="center"><div id="header_r"><div id="header_box">
<div id="logo_box">
<div id="logo">
<h1><a onfocus="blur()" href="<?php echo $app->getCfg('live_site');?>"><span><?php echo $app->getCfg('sitename');?></span></a></h1>
</div>
</div>
<div id="topmod_box">
<div id="topmod"><jdoc:include type="modules" name="top" style="xhtml"/></div>
</div>
</div></div></div></div>

<div id="bg">
<div align="center">
<div id="header">


<div id="empty"></div>
<div id="top_l"><div id="top_r"><div id="top">
<div id="menu_box"><div id="topmenu"><jdoc:include type="modules" name="user3" style="raw"/></div></div>
<div id="search_box"><div id="search"><jdoc:include type="modules" name="user4" style="xhtml"/></div></div>
</div></div></div>
<div id="pathway_box">
<div id="path_text">You are here:</div>
<div id="path"><jdoc:include type="modules" name="breadcrumb" style="html"/></div>
</div>
</div><!--header-->
<div id="container" class="clearfix">
<div id="left_col<?php echo $a; ?>">
<div id="left_mod">
<jdoc:include type="modules" name="left" style="rounded"/>
</div>
</div><!--left_col-->
<div id="right_col<?php echo $a; ?>">
<div id="content<?php echo $a; ?><?php echo $b; ?>"><div id="content_in<?php echo $a; ?><?php echo $b; ?>">
<div id="mainbody">
<jdoc:include type="message" />
<jdoc:include type="component" style="html"/>
</div>
</div></div>
<div id="right_box<?php echo $b; ?>">
<div id="right_mod">
<jdoc:include type="modules" name="right" style="rounded"/>
</div>
</div>
</div><!--right_col-->
</div><!--container-->
<div id="foot_l"><div id="foot_r"><div id="foot">
<div id="license_box"><div id="license" align="left"><jdoc:include type="modules" name="copyrights" style="raw"/></div></div>
<div id="copyright_box"><div id="copyright">created by <a href="http://www.joomla-monster.com (http://www.joomla-monster.com/)" onfocus="blur()" target="_blank" title="Professional Joomla Templates">joomla-monster.com</a></div></div>
</div></div></div>
</div>
</div>
</body>
</html>

PeFik
30-07-2011, 11:17
a na moim blogu szukać się nie chciało ? przecież mam pole [szukaj] poza tym jest google. Aaa dużo by opowiadać, a forum nie jest od tego.

Zabolxp
30-07-2011, 15:12
Blogu nie znałem, powertowałem trochę i znalazłem ciekawy artykuł (http://www.joomlapraise.com/blog/item/520-joomla-15-to-16-template-upgrade-tutorial-part1) o aktualizacji szablonów, choć aż wstyd się przyznać jak prozaiczny był problem. W Google szukałem i znajdowałem tylko innego typu proste problemy innych użytkowników do starszych Joomli i nie spodziewłem się, że w zasadzie mnie dotyczy coś równie banalnego. :)

Modyfikacje z powyższego artykułu nic w zasadzie nie zmieniły, bo kluczową sprawą było przypisanie prawidłowych pozycji do modułów (były position-1, position-7, a powinny być left, right itp.). Głupi błąd to chyba efekt, że nigdy nie próbowałem się z Joomla 1.6 i przeszkoczyłem na siódemkę od razu z piątki i to po dużej przerwie, dlatego nie spodziewałem się czegoś takiego.

Dziękuję wszystkim aktywnym za próby pomocy. Pozdrawiam.