Jump to content
Дизайн и модификация Invision Power Board IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Predator

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

Recommended Posts

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

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

Если в целом, то для вывода данных в сайдбаре создается хук типа "Хук шаблона" к группе шаблонов 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";
}
}
?>

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites
Вот те данные моего добавленного хука.

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

Share this post


Link to post
Share on other sites

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

contentTopicComment_e4eac9fe415c2ca2075159d893d00f91.php

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Ах, мне самостоятельно нужно создавать его :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 вызывается. Где и кто ее вызывет?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...