Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

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

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

Так вот, я не пойму. А где мне прописывать тот самый 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

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

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.