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

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

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

Но это явно бред. И не понятно, где мне указать поле, в которое я хочу дописать свое $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;
	}
}

?>

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


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

Оно работает, оно работает!!!

Спасибо, разобрался)

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


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

У меня еще 1 вопрос по API, думаю, можно тут продолжить.

Нужно в текстовый редактор вывести $что-то.

Делаю по рецепту:

 

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

 

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

 

Ребята, мои извинения, я овощь)

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

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


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

Кто может сказать, где хранить скины для паблик-стороны приложения? Что б не было мешанины в коде секций.

Структура приложения такая, что скины для админ-стороны нужно хранить в skin_cp/ А для паблика не предусмотрена соответствующая папка.

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

 

И второй вопрос. Если мне нужно в хуке шаблона добавить что-то свое в цсс файл.

Вот это было бы идеальным вариантом, но на сколько я понял,в хуке шаблона так не прокатит.

$this->registry->output->addToDocumentHead( 'inlinecss', "#aga{ display: none; }" );

Пробую то же самое сделать через тег шаблона. Пишу в шаблоне:

{parse addtohead="#aga{ display: none; }" type="inlinecss"}

Но это выводится просто как текст.

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

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


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

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

 

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

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


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

Ок, я создал свой шаблон через админку, но как мне его подключить в хук или приложение?

$this->registry->output->addContent( $this->registry->output->getTemplate('ololo') );

Уже не работает.

А, стоп, сейчас пойму.

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

Export HTML Templates Into Application Directories ничего не дало. Так и не понял, куда и что именно оно экспортировало.

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


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

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


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

Маленький вопрос по Skin Overloader:

Я хочу расширить данные передаваемые в скин списка тем на форуме. Мне нужно знать как называется класс, который отвечает за вывод данного шаблона.

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

skin_topic.php отвечает за вывод одного конкретного топика. Не то, что нужно.

skin_forum.php - в нем не нашел "<table id="forum_table"...", значит он тоже отпадает.

Какой файл отвечает за вывод таблицы с списком топиков?

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


Ссылка на сообщение
Я лезу в /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. В эту папку вообще лазают только бандерлоги (с), если что.

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


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

Мне стыдно за такой нубский вопрос, но...как в такой конструкции пользоваться бд?

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

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


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

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

 

$this->registry = $registry;

или

 

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

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


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

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

 

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, как только не пробовал

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


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

Класс набора заблонов расширяет класс 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, правда? :)

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


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

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

 

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

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

 

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

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

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


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

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

 

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

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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