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

Создать свой хук....

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

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

Данные приближенные к тем же, что и у другого хука.

Так вот, я не пойму. А где мне прописывать тот самый php код? И потом нет его в правом блоке на гл странице форума...

Короче ничего не понятно, выручайте..

 

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

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


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

Так нужно создать новый хук, или изменить уже имеющийся? Тема про хуков обсуждалась здесь.

Если в целом, то для вывода данных в сайдбаре создается хук типа "Хук шаблона" к группе шаблонов skin_boards, шаблон boardIndexTemplate, тип хука цикл foreach, ID хука side_blocks, расположение - перед началом цикла. В папке /hooks/ создается файл с названием хука и его классом которые прописываются в соответствующие поля при создания хука - Имя файла в директории хука и Имя класса. Сам класс из себя представляет класс с обязательным методом getOutput который и возвращает код сайдбара.

 

<?php
class sexy_hook
{
public $registry;

public function __construct()
{
	$this->registry     =  ipsRegistry::instance();
	$this->DB           =  $this->registry->DB();
	$this->settings     =& $this->registry->fetchSettings();
	$this->request      =& $this->registry->fetchRequest();
	$this->lang         =  $this->registry->getClass('class_localization');
	$this->member       =  $this->registry->member();
	$this->memberData     =& $this->registry->member()->fetchMemberData();
	$this->cache        =  $this->registry->cache();
	$this->caches       =& $this->registry->cache()->fetchCaches(); 
}

public function getOutput()
{
	/* Здесь тот самый php код  */

	return "SIDEBAR HTML";
}
}
?>

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


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

post-50062-0-15812400-1415036825_thumb.png

 

Вот те данные моего добавленного хука. Он в списке есть но в папке hooks, нет какого то php файла относящегося к данному хуку...

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


Ссылка на сообщение
Вот те данные моего добавленного хука.

При создание хука есть поля где нужно вводить имя файла и класса хука. В папке /hooks/ вы создаете файл с указанным именем и описанным выше для этого типа хуков класса.

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


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

Хотя, посмотрел я в таблицу "core_hooks_files", название не то у данного файла

contentTopicComment_e4eac9fe415c2ca2075159d893d00f91.php

 

Тупик какой то, название у хука "Топ авторс". При чем тут коментс...

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


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

Удалил хук, удалилась строчка в тб core_hooks. В таблице core_hooks_files,строчка осталась...

hook_hook_id = 14, в таблице core_hooks нет данного хука с таким айди

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


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

Нет так нет, вас это не должно волновать какие там записи есть а какие нету. Вы вообще что делаете? И старайтесь внятно объяснить свои действия и цели.

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


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

Извиняюсь , с айди напутал... Короче создал еще один хук, все ок...

В таблице посмотрел имя файла (core_hooks ,core_hooks_files), такоета... (айди и тд верно)

Смотрю в папку, не вижу php с данным именем...

 

Мне нужно бы php код вписать, а файла такого нет..

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


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

Смотрю в папку, не вижу php с данным именем...

В папке /hooks/ вы создаете файл

При следующих вопросов внимательно несколько раз перечитайте все выше сказанное.

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


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

Ах, мне самостоятельно нужно создавать его :lol:

Так создал, класс я указывал при первом добавлении 'informer'. Имя у хука тоже informer

Значит нужно прописать так

 

<?php
class informer
{
   public $registry;

   public function __construct()
   {
       $this->registry     =  ipsRegistry::instance();
       $this->DB           =  $this->registry->DB();
       $this->settings     =& $this->registry->fetchSettings();
       $this->request      =& $this->registry->fetchRequest();
       $this->lang         =  $this->registry->getClass('class_localization');
       $this->member       =  $this->registry->member();
       $this->memberData     =& $this->registry->member()->fetchMemberData();
       $this->cache        =  $this->registry->cache();
       $this->caches       =& $this->registry->cache()->fetchCaches(); 
   }

   public function getOutput()
   {
       /* Здесь тот самый php код  */

       return "SIDEBAR HTML";
   }
}
?>

 

Сделал, не вижу сообщение в правом блоке.

Я одного не понимаю, как функция getOutput вызывается. Где и кто ее вызывет?

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


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

Ура, все работает. Видать еще расширение файла нужно было указывать...

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


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

@siv1987, Спасибо :)

 

Пардон, спама много. Хотел репутацию вам поднять, а оказывается еще раз пост создал.

Непревычное расположение кнопок, да и порой кнопки не совм понятны..

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


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

Имя файла - полное имя файла вместе с расширением.

Имя класса - имя своего класса в хуке.

Если данные не выводится проверьте еще раз имя файла и имя класса. Чтобы отредактировать эти поля включите админку в режим разработчика, в conf_global.php добавить или заменить - define('IN_DEV', IN_ACP ? 1 : 0);

 

Я одного не понимаю, как функция getOutput вызывается. Где и кто ее вызывет?

Вызывается системой хуков.

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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