Hook. Помогите с API - Страница 2 - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

api hooks

  • 4 Страниц +
  • 1
  • 2
  • 3
  • 4

Hook. Помогите с API

#16 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 763
  • Регистрация: 20-Март 09
  • Репутация: 2 288
  • IPB version:3.1.x
 

Отправлено 11 Июнь 2012 - 11:37

Цитата

Но это явно бред. И не понятно, где мне указать поле, в которое я хочу дописать свое $data['ololo']?

Бред что? Вам знаком принцип работы метода инсерта?..
DB->do_insert( 'table', array $data_insert );

Документация это конечно хорошо, особенно когда она на английском и мы ничего не понимаем, но ее надо совмещать с практикой, иначе она так и останется сухой непонятной теорией.

Вы пробовали хотябы самый простой хук создать?

<?php

class sexy_hook
{
		public function handleData($data)
		{
			$data['ololo'] = 'string';

			exit('Output message');
			return $data;
		}
}

?>

0

#17 Пользователь не на сайте   stud ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 06-Апрель 12
  • Репутация: 0
  • IPB version:3.3.x
 

Отправлено 11 Июнь 2012 - 13:15

Оно работает, оно работает!!!
Спасибо, разобрался)
0

#18 Пользователь не на сайте   stud ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 06-Апрель 12
  • Репутация: 0
  • IPB version:3.3.x
 

Отправлено 15 Июнь 2012 - 16:35

У меня еще 1 вопрос по API, думаю, можно тут продолжить.
Нужно в текстовый редактор вывести $что-то.
Делаю по рецепту:

$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/editor/composite.php', 'classes_editor_composite' );
$editor = new $classToLoad();
$html = $editor->show( 'Post', array(), $что-то );


$что-то не выводится никак, что я только не делал. В чем может быть проблема?

Ребята, мои извинения, я овощь)
Уже все работает. Удалите этот пост, если что, только не баньте меня.
0

#19 Пользователь не на сайте   stud ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 06-Апрель 12
  • Репутация: 0
  • IPB version:3.3.x
 

Отправлено 02 Июль 2012 - 14:20

Кто может сказать, где хранить скины для паблик-стороны приложения? Что б не было мешанины в коде секций.
Структура приложения такая, что скины для админ-стороны нужно хранить в skin_cp/ А для паблика не предусмотрена соответствующая папка.
Разработчики говорят, в папке кэш хранить. Но мне в этой теме сказали, вообще, забыть про папку кэш и ничего не хранить в ней.

И второй вопрос. Если мне нужно в хуке шаблона добавить что-то свое в цсс файл.
Вот это было бы идеальным вариантом, но на сколько я понял,в хуке шаблона так не прокатит.
$this->registry->output->addToDocumentHead( 'inlinecss', "#aga{ display: none; }" );

Пробую то же самое сделать через тег шаблона. Пишу в шаблоне:
{parse addtohead="#aga{ display: none; }" type="inlinecss"}

Но это выводится просто как текст.
Как мне добавить что-то свое в цсс? Или это можно только вручную прописывать в нужном .цсс через админку?
0

#20 Пользователь не на сайте   Ritsuka ответил: »

 
 
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 908
  • Регистрация: 08-Июнь 09
  • Репутация: 531
  • IPB version:3.4.x
 

Отправлено 02 Июль 2012 - 15:28

Чем вам встроенная система скинов не нравится? Создайте группу шаблонов и в ней все шаблоны, что нужны, прямо через админку, все нужные кнопки для этого есть. Затем экспортируйте их в xml, если нужна переносимость, и распространяйте в составе приложения. В итоге они будут храниться в базе и кешироваться в папке кеша :)

Посмотрите как другие официальные и сторонние компоненты сделаны - все содержат XML-файлы шаблонов, что при установке импортируются в базу. И хуки, кстати, так же могут содержать шаблоны.
0

#21 Пользователь не на сайте   stud ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 06-Апрель 12
  • Репутация: 0
  • IPB version:3.3.x
 

Отправлено 02 Июль 2012 - 15:47

Ок, я создал свой шаблон через админку, но как мне его подключить в хук или приложение?
$this->registry->output->addContent( $this->registry->output->getTemplate('ololo') );

Уже не работает.
А, стоп, сейчас пойму.
Да, точно, все приложения содержат xml-файлы с шаблонами. По идее, эти xml-файлы должны обновляться при редактировании шаблонов из админки. Но не могу понять, как экспортировать нужные мне шаблоны в xml-файлы.
Export HTML Templates Into Application Directories ничего не дало. Так и не понял, куда и что именно оно экспортировало.
0

#22 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 763
  • Регистрация: 20-Март 09
  • Репутация: 2 288
  • IPB version:3.1.x
 

Отправлено 02 Июль 2012 - 16:27

$this->registry->output->getTemplate('группа_шаблона')->имя_шаблона( [$vars] );

0

#23 Пользователь не на сайте   stud ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 06-Апрель 12
  • Репутация: 0
  • IPB version:3.3.x
 

Отправлено 03 Август 2012 - 11:23

Маленький вопрос по Skin Overloader:
Я хочу расширить данные передаваемые в скин списка тем на форуме. Мне нужно знать как называется класс, который отвечает за вывод данного шаблона.
Я лезу в /cache/skin_cache/cacheid_1/ и просматриваю, какой из шаблонов может отвечать за вывод таблицы с списком топиков.
skin_topic.php отвечает за вывод одного конкретного топика. Не то, что нужно.
skin_forum.php - в нем не нашел "<table id="forum_table"...", значит он тоже отпадает.
Какой файл отвечает за вывод таблицы с списком топиков?
0

#24 Пользователь не на сайте   Ritsuka ответил: »

 
 
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 908
  • Регистрация: 08-Июнь 09
  • Репутация: 531
  • IPB version:3.4.x
 

Отправлено 03 Август 2012 - 14:54

Цитата

Я лезу в /cache/skin_cache/cacheid_1/ и просматриваю, какой из шаблонов может отвечать за вывод таблицы с списком топиков.

Опять 25. Сколько раз надо повторять - нечего там искать что-то. Ищется все совершенно легко и просто в админке, через поиск по шаблонам.

Если бы вы использовали поиск там, уже бы нашли, что вам нужен шаблон Forum View (skin_forum) > forumIndexTemplate.

Смотрим его переменные:
$forum_data, $announce_data, $topic_data, $other_data, $multi_mod_data, $sub_forum_data, $footer_filter, $active_user_data, $mod_data, $inforum=1


Составляем хук, перегружающий шаблон skin_forum:
class myclass extends (~extends~) {

  function forumIndexTemplate ($forum_data, $announce_data, $topic_data, $other_data, $multi_mod_data, $sub_forum_data, $footer_filter, $active_user_data, $mod_data, $inforum=1) {
    //$forum_data['ololo'] = 'lolol';
    return parent::forumIndexTemplate($forum_data, $announce_data, $topic_data, $other_data, $multi_mod_data, $sub_forum_data, $footer_filter, $active_user_data, $mod_data, $inforum);
  }
}


Проблема решена.

Заметьте, все это ни разу не открывая папку /cache. В эту папку вообще лазают только мудаки (с), если что.
0

#25 Пользователь не на сайте   stud ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 06-Апрель 12
  • Репутация: 0
  • IPB version:3.3.x
 

Отправлено 03 Август 2012 - 19:30

Мне стыдно за такой нубский вопрос, но...как в такой конструкции пользоваться бд?
class myclass extends skin_forum(~id~) {

  function forumIndexTemplate ($forum_data, $announce_data, $topic_data, $other_data, $multi_mod_data, $sub_forum_data, $footer_filter, $active_user_data, $mod_data, $inforum=1) {
    //$forum_data['ololo'] = 'lolol';
    return parent::forumIndexTemplate($forum_data, $announce_data, $topic_data, $other_data, $multi_mod_data, $sub_forum_data, $footer_filter, $active_user_data, $mod_data, $inforum);
  }
}


В конструктор родительского класса передают ipsRegistry $registry, т.е. им уже можно пользоваться, на сколько я понимаю. Но
$this->registry = $registry;
$this->DB = $this->registry->DB();

Call to a member function DB() on a non-object
0

#26 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 763
  • Регистрация: 20-Март 09
  • Репутация: 2 288
  • IPB version:3.1.x
 

Отправлено 03 Август 2012 - 22:03

попробуйте без

Просмотреть сообщениеstud сказал(а):

$this->registry = $registry;

или

$this->registry = ipsRegistry::instance();
$this->DB = $this->registry->DB();

0

#27 Пользователь не на сайте   stud ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 06-Апрель 12
  • Репутация: 0
  • IPB version:3.3.x
 

Отправлено 04 Август 2012 - 09:50

Все равно, в конструкции

class myclass extends skin_forum(~id~) {
    protected $registry;
    protected $DB;
    
    public function forumIndexTemplate($forum_data, $announce_data, $topic_data, $other_data, $multi_mod_data, $sub_forum_data, $footer_filter, $active_user_data, $mod_data, $inforum=1) {
        
        $this->registry = ipsRegistry::instance();
        $this->DB = $this->registry->DB();
        

        
        $new = $this->DB->build( array(
                                        'select' => 'tid, title, starter_name, start_date, title_seo, on_main',
                                        'from' => 'topics',
                                        'where' => 'on_main = 1'
                                ));

        ...


из бд всегда приходит null, как только не пробовал
0

#28 Пользователь не на сайте   Ritsuka ответил: »

 
 
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 908
  • Регистрация: 08-Июнь 09
  • Репутация: 531
  • IPB version:3.4.x
 

Отправлено 04 Август 2012 - 15:28

Класс набора заблонов расширяет класс skinMaster, который уже имеет в своем составе все необходимое:

/**
 * Skin master class. Allows shared methods between skins
 */
class skinMaster
{
	public function __construct( ipsRegistry $registry )
	{
		/* Make object */
		$this->registry   =  $registry;
		$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();
	}
	


Т.е. вы можете сразу же использовать все вышеперечисленные классы и массивы напрямую из общего пространства класса:
class myclass extends skin_forum(~id~) {
	function forumIndexTemplate ($forum_data, $announce_data, $topic_data, $other_data, $multi_mod_data, $sub_forum_data, $footer_filter, $active_user_data, $mod_data, $inforum=1) {
		$this->DB->build( array( 'select' => '*',
			'from'   => 'forums' ) );
		$this->DB->execute();		
		while( $row = $this->DB->fetch() )
		{
			$forums[] = $row;
		}
		echo $this->settings['board_name'];
		print_r($this->memberData);
		print_r($forums); die;
		return parent::forumIndexTemplate($forum_data, $announce_data, $topic_data, $other_data, $multi_mod_data, $sub_forum_data, $footer_filter, $active_user_data, $mod_data, $inforum);
	}
}


Вы никогда не учились и не умеете в PHP, правда? :)
0

#29 Пользователь не на сайте   stud ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 06-Апрель 12
  • Репутация: 0
  • IPB version:3.3.x
 

Отправлено 04 Август 2012 - 16:25

Как же я затупил. У меня ошибка в самом запросе была, только сейчас ее увидел. И да, я совсем забыл про execute()

Цитата

Вы никогда не учились

Вы абсолютно правы, я никогда не учился. Я даже школу бросил в 5 классе. Я ненавидел свою школьную учительницу по математике. Когда я спрашивал ее что-то, что не понимал, она всегда говорила мне: "вот смотри, я знаю, а ты не знаешь, ты сейчас чувствуешь мое превосходство, ведь чувствуешь?". Мне казалось, что она так повышает свое чсв. Замечательный человек, бездонный в своем профессионализме.

Цитата

и не умеете в PHP, правда?

И в PHP я совершенно не умею. Я просто мимо проходил.
0

#30 Пользователь не на сайте   Ritsuka ответил: »

 
 
  • ***
  • Смотреть галерею
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 1 908
  • Регистрация: 08-Июнь 09
  • Репутация: 531
  • IPB version:3.4.x
 

Отправлено 04 Август 2012 - 17:05

Цитата

Мне казалось, что она так повышает свое чсв.

Нет, это такая советская система образования была - через возвышение одних и принижение других.

Цитата

И в PHP я совершенно не умею. Я просто мимо проходил.

Как бы вам так сказать... Временами у меня бывают короткие отрезки свободного времени, и я не ленюсь подробно расписывать вам "PHP для нубов". Но вообще вот так не зная языка браться за подобные задачи - несколько излишне самонадеянно. Вам бы основы PHP сначала подучить. Иначе получается, что вы задаете на форуме IPB вопросы по основам PHP, что, согласитесь, несколько не адресно, а значит, мало кому здесь интересно.
0

Сообщить об этой теме:


  • 4 Страниц +
  • 1
  • 2
  • 3
  • 4


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна