Skip to content

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

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

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

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

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

 

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

Featured Replies

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

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

  • Author

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

 

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

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

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

  • Author

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

contentTopicComment_e4eac9fe415c2ca2075159d893d00f91.php

 

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

  • Author

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

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

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

  • Author

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

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

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

 

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

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

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

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

  • Author

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

  • Author

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

  • Author

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

 

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

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

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

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

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

 

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

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

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.