Ошибка в шаблоне при обновлении 1.5 - 3.х

12 3
CityCat
На сайте с 26.01.2008
Offline
140
1203

Здравствуйте!

Подскажите как победить ошибку в шаблоне Joomla

Переношу сайт с версии 1.5 на 3

Все выставил в шаблоне под 3 как надо.

Но вот проблема возникла, выдает ошибку:

Notice: Undefined variable: hmenu in .....шаблон/index.php on line 22

Fatal error: Call to a member function genHMenu() on a non-object in .....шаблон/index.php on line 22

Сама строка из index.php

<div id="top_menu"><div id="topnav"><?php $hmenu->genHMenu (0); ?></div></div>

Куда копать? В PHP не очень силен.

Спасибо!

Joomla!
S
На сайте с 30.09.2016
Offline
469
#1

В Вашем шаблоне не определена переменная $hmenu. Нужно её определить как объект класса.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
A
На сайте с 23.11.2016
Offline
7
#2

Я с joomla не знаком, но могу предположить что ошибка может быть вызвана тем, что не перенесли необходимый код в контроллер. Скорее всего ваш hmenu там должен был наследовать какой-нибудь класс. И скорее всего метод genHMenu тоже там переопределялся или определялся.

temniy
На сайте с 15.03.2008
Offline
265
#3

$hmenu->genHMenu (0)

Это не джумловская функция. Скорее всего, это функция самого шаблона - найдите ее и перенесите в новый шаблон.

А для начала можно просто закомментировать -

<div id="top_menu"><div id="topnav"><?php // $hmenu->genHMenu (0); ?></div></div>
⭐ Лучший хостинг от 4 евро, VPS от 6 евро - разные локации - любые карты - скидки до 20% - https://fornex.com/c/ffi2e3/ru/services/
S
На сайте с 30.09.2016
Offline
469
#4

Да не надо там ничего комментировать. Всего-то надо добавить строчку с определением переменной. Типа

$hmenu = new hm_Base();
Но я так думаю, ТС уже решил свою проблему, просто нам забыл сказать:)
CityCat
На сайте с 26.01.2008
Offline
140
#5

Пока не решил, не помогает.

Комментировать нельзя, так как меню пропадает. Ошибка конечно исчезает.

Там меню прошито в файле оказывается.

Подключается <?php include('functions.php'); ?>

Sitealert: а куда эту строчку поставить?

S
На сайте с 30.09.2016
Offline
469
#6
CityCat:
а куда эту строчку поставить?

После подключения файла с описанием класса

<?php
include('functions.php');
$hmenu = new hm_Base();
?>
CityCat
На сайте с 26.01.2008
Offline
140
#7
Sitealert:
После подключения файла с описанием класса
<?php

include('functions.php');
$hmenu = new hm_Base();
?>

Выдает:


Warning: Missing argument 1 for hm_Base::hm_Base(), called in index.php on line 34 and defined in functions.php on line 10

Notice: Undefined variable: params in functions.php on line 13

Fatal error: Call to a member function get() on a non-object in functions.php on line 67

S
На сайте с 30.09.2016
Offline
469
#8

Н-да... Тут уже надо подумать, что там за массив или объект предполагается в качестве params. Ещё полезут и ошибки, связанные с разными стандартами в PHP4 и PHP5.

CityCat
На сайте с 26.01.2008
Offline
140
#9

На всякий пожарный прикрепляю файл functions.php в котором вшито само меню.

zip functions.zip
S
На сайте с 30.09.2016
Offline
469
#10

Ну, если это Вы на фрилансе отметились, то этот файл уже передо мной.:)

Там на самом деле всё сложнее, чем казалось на первый взгляд. Корни уходят глубже, в структуру ядра Джумлы. В этом шаблоне используется класс JParameter, который, насколько я понимаю, в 3-й ветке Джумлы отсутствует. Поэтому как бы не пришлось переписывать шаблоновый класс:(

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий