Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
by_marat

Не корректно наследуется мод "Спасибо" из родительского стиля (v2.3.6)

Рекомендованные сообщения

04/01/12 18:59 (изменено)

Доброго времени суток!

Немного предистории: достался в администрирование форум (forum.acmilanfan.ru) с некоторым количеством предустановленных модов.

Проблема возникла с модом "Спасибо".

На родительском стиле (elegancesimple) мод работает корректно. По нажатию на количество "спасибок" отображается новая страница с хистори, кто и за что сказал спасибо.

Есть второй скин, дочерний от elegancesimple - в нем мод работает корректно, за исключением той части, где вызывается тот самый хистори.

Ошибку выдает следующего характера:

Fatal error: Call to a member function start_nav() on a non-object in /var/www/forum/www/sources/classes/class_display.php on line 117

полез в class_display - start_nav прописан. В шаблонах тоже все ок.

Вручную сверил изменяемые файлы в шаблонах - вроде все идентично.

 

Можете подсказать, в каком направлении искать этот баг??

 

 

Спасибо!

Изменено пользователем by_marat

Поделиться сообщением


Ссылка на сообщение

Вероятно, дочерний шаблон переопределен, поэтому наследование не происходит. Нужно вручную править.

Проверьте еще раз изменения вручную.... Возможно, входящие переменные забыли добавть.

Поделиться сообщением


Ссылка на сообщение

а входящие переменные вообще наследуются от родительского скина?

в качестве эксперимента, установил другой и скин и назначил родительский.

Точно такая же ошибка.

к сожалению, в php не силен, знания ограничиваются только "здесь не хватает точки с запятой" и простым сравнением кусков кода.

 

Если обратить внимание на код из class_display:

 

$nav  = $this->ipsclass->compiled_templates['skin_global']->start_nav();

       $nav .= "<a href='{$this->ipsclass->base_url}act=idx'>{$this->ipsclass->vars['board_name']}</a>";


       if ( empty($output_array['OVERRIDE']) )
       {
		if ( isset($output_array['NAV']) AND is_array( $output_array['NAV'] ) )
		{
			foreach ($output_array['NAV'] as $n)
			{
				if ($n)
				{
					$nav .= "<{F_NAV_SEP}>" . $n;
				}
			}
		}
       }

       $nav .= $this->ipsclass->compiled_templates['skin_global']->end_nav();

 

то меня смущает

 

['skin_global']

 

Возможно, что дочерний шаблон на попадает под это действите??

Поделиться сообщением


Ссылка на сообщение

то меня смущает

А что вас смущает, skin_global это группа глобальных шаблонов.

 

а входящие переменные вообще наследуются от родительского скина?

Если наследуется шаблон значит наследуется все. У вас ошибка говорит именно о том, что такого шаблона нету в скине нету, и нужно создать вручную.

 

 

установил другой и скин и назначил родительский.

Точно такая же ошибка.

Вероятно, дочерний шаблон переопределен, поэтому наследование не происходит. Нужно вручную править.

Поделиться сообщением


Ссылка на сообщение

не совсем корректно выразился.

есть скин, в котором все работает.

Установил абсолютно новый, скин и назначил родительским тот - который работает.

Если верить теории - то в новом скине, все должно работать как часы. Но нет, опять выскакивает такая же ошибка.

 

Или же моя логика не верная и недостающие шаблоны не присваиваются новую стилю?

Поделиться сообщением


Ссылка на сообщение

Не все как часы.

Повторяю.

Если в новом шаблоне есть переопределенные шаблоны, они не могут наследовать...

Поделиться сообщением


Ссылка на сообщение

Вообще-то это ошибка не из-за отсутствия шаблона, а потому что вызывается метод не инициированного объекта, и кроется она не в class_display.php а где-то в другом месте. Не понятно только почему на дефолтном работает.

 

Откройте /sources/components_public/thanks.php

Есть там такие строчки?

	if( !is_object( $this->ipsclass->compiled_templates['skin_global'] ) ) 
	{
		$this->ipsclass->load_template( 'skin_global' );
	}

 

или хотябы

		$this->ipsclass->load_template( 'skin_global' );

Поделиться сообщением


Ссылка на сообщение

thanks.php вообще оказался в action_public/

 

есть строчка

$this->ipsclass->load_template( 'skin_global' );

 

перенес в /components_public/

 

не помогло

Поделиться сообщением


Ссылка на сообщение

thanks.php вообще оказался в action_public/

Надо было там оставить, наверное я о другом моде говорю или у меня не полный. По вашей ссылки файл должен быть там.

Поделиться сообщением


Ссылка на сообщение

+-------------------------------------------------------------------------------
|  Thanks v2.1.x
| =============================================================================
|  by AVol (http://www.ibresource.ru/forums/index.php?showuser=41059)
| =============================================================================
|  function "thanks_add" based on Thanks by Unlovelt
| =============================================================================
+-------------------------------------------------------------------------------

*/

 

меня тоже больше всего смущает, что на дефолтном то все работает..

Поделиться сообщением


Ссылка на сообщение

А кэши новых скинов у вас пишутся вообще? Перекешировать этих "наследователей" получается? :)

Поделиться сообщением


Ссылка на сообщение

да, с этим все ок.

В качестве эксперимента прописывал другой мод, в родительском скине - дочка получила все изменения автоматически.

Поделиться сообщением


Ссылка на сообщение

сверил все шаблоны ручками - все ок. Везде одинаковые значения прописаны.

Что еще можно проверить?

Поделиться сообщением


Ссылка на сообщение

1. Отменить дочерность и ставить как обычный скин. Все кастомные шаблоны перенести вручную.

2. Проверить версию скина, соответствует ли она версии форума.

 

Что проверить? Проверить все, начиная с того, почему не грузится группа глобальных шаблонов на этом скине. http://www.phpfaq.ru/debug

Поделиться сообщением


Ссылка на сообщение

и еще немного помучаю вопросами.

Рандомно, по вызову хистори, стала появляться уже другая ошибка:

 

Fatal error: Call to a member function pagination_next_link() on a non-object in /var/www/forum/www/sources/ipsclass.php on line 4196

 

и если честно - голова уже идет круго.

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...