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

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

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

Template Hook - вывод в шаблоне по меткам, которые используются в конструкциях if, foreach. <if test="metka:|:condition"></if>. А вот если поблизости нет никакх меток, либо проявляем смекалку и вставляем в шаблоне свою метку (здесь правда тоже не все так просто, в списке появляются только метки "мастер шаблона").

Есть готовый модуль с хуком. Модуль отображаеться на главной форума, я хочу этот же модуль разместить на главной Unreal Portal. Могу ли я просто в настройках хука "Добавить файл" к нужному шаблону?

Но понятное дело что там нет меток:

16ceb852fa7dt.jpg

 

Добавил метку:

<if test="condition">content</if>

По мануалу: https://www.invisionpower.com/support/guides/_/advanced-and-developers/hooks/template-hooks-r105

0b351bba7e7bt.jpg

 

Но результата 0, хук не добавляеться к шаблону... Не подскажете в чем проблема?

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


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

1. Во первых, лист меток берется из мастер-шаблона. Поэтому в списке выборе меток, файрбугом или оперой драгонфлай, добавляем в селекте свою метку http://s005.radikal.ru/i209/1210/f2/2b250ffa4c7e.png

2. Во вторых, выше я указал формат условия с меткой - -

 

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

  • Upvote 1

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


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

При добавлении значения:

 <if test="myHookPoint:|:1=1"></if>

Страница не грузиться...

Можете немного "по нубски" разтолковать? :)

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


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

Опечатка. Конечно, правильно так

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


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

Опечатка. конечно, правильно так <if test="myHookPoint:|:1==1"></if>

Да даже беру, к приемру, код со своего шаблона GlobalTamplate:

				<if test="hasHeaderAd:|:$items['adHeaderCode']">
				<div class='ipsAd'>{$items['adHeaderCode']}</div>
			</if>

В списке хука этого шаблона есть точка hasHeaderAd. Добавляю этот же код в другой шаблон - точки нет! Как понять эту систему? :)

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


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

Добавляю этот же код в другой шаблон - точки нет! Как понять эту систему?

 

@freeman, как она может быть в другом в шаблоне если ее там нету? Перечитайте еще раз пост выше, метки в списке берутся из мастер шаблона, а то что вы свои кастомные добавляете, неважно какие и откуда, они не выводится.

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


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

@freeman, как она может быть в другом в шаблоне если ее там нету? Перечитайте еще раз пост выше, метки в списке берутся из мастер шаблона, а то что вы свои кастомные добавляете, неважно какие и откуда, они не выводится.

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

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


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

не подскажете где почитать инфу о мастер-шаблонах.

Зачем? Как в два клика добавить метку в списке я показал выше.

 

https://www.invisionpower.com/support/guides/_/advanced-and-developers/miscellaneous/developers-mode-r147

в бд это скин с template_master_key root или template_set_id 0 http://ipbnet.ru/topic/296-pozicionirovanie-hukov/

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


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

Не буду плодить тем, так как вопросы у меня очень нубские специфические, никому они больше не будут полезны, поэтому продолжу свою старую тему.

Мне нужно просто инкрементить числовое значение topics.

По логике должно быть так

$this->DB->update( 'forums', array( 'topics' => 'topics + 1' ), 'id=100500' );

Но что-то оно ничего не инкрементит)

Как мне быть?

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


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

Обновление с полями таблицы делается еще с двумя параметрами

 

$this->DB->update( 'forums', 'topics=topics+1', 'id=100500', true, true );

 

 * @param	string		 Table name
 * @param	mixed		 Array of field => values, or pre-formatted "SET" clause
 * @param	string		 [Optional] Where clause
 * @param	boolean		[Optional] Run on shutdown
 * @param	boolean		[Optional] $set is already pre-formatted

  • Upvote 1

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


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

Хм, что-то все-равно не инкрементит.

Только строго получается задать кол-во топиков. Так обновляет:

$this->DB->update( 'forums', 'topics=22', 'id=100500');

 

 

$this->DB->update( 'forums', 'topics=topics+1', 'id=100500', true, true );

Так не прибавляет 1 к topics

 

Но все-равно, спасибо за наводку

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


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

Запрос выполняется в shutdown режиме, то есть после выполнения скрипта. Обновление вы увидите при следующем запуске скрипта. Либо поставьте третий параметр в false.

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


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

Эмм, что-то никак, вообще никак.

Что-то ихний апи не очень упрощает взаимодействие с бд. Действие, которое делается простым запросом меньше чем за минуту (UPDETE forums SET topics = topics + 1 WHERE id = 100500) невозмжно реализовать через ихний апи.

Ну или у меня очень кривые руки)

Либо поставьте третий параметр в false

Дык, третий параметр - это ж WHERE...

Если вы про четвертый параметр - то если его в false, а пятый в труе - то так нельзя.

 

Из документации:

or it can be a specific preformatted set clause to pass to the query ( id=id+1 ). If you pass a pre-formatted clause to use in the query, be sure to set the last parameter, $preformatted, to true

Но ведь я так и делаю, я выставляю последний парамаетр в труе ($preformatted который)

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


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

Только что проверил, запрос отлично работает как и в shutdown так и в нормальном режиме.

 

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

Это вам так кажется на простом запросе (в котором по сложности почти никакой разницы нету), а попробуйте вручную из 15 полей составить, предварительно каждое поле закэкранировав.

 

Дык, третий параметр - это ж WHERE...

Пардон, четвертый.

 

Если вы про четвертый параметр - то если его в false, а пятый в труе - то так нельзя.

Почему нельзя? Можно.

 

Но ведь я так и делаю, я выставляю последний парамаетр в труе

Значит запрос составили неправильно. Смотрите внимательно что обновляете, и на условие.

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


Ссылка на сообщение
Почему нельзя? Можно.

Дык "Возникла ошибка при работе с базой данных". Какая именно ошибка, апи мне не говорит

 

Запрос пишу такой:

$this->DB->update( 'forums', array( 'topics' => 'topics+1' ), "id=16", true, true);

Если убрать два последних труе и задать обновление топиков жестко (но мне так не надо, это чисто для теста, работает ли запрос), т.е. так:

$this->DB->update( 'forums', array( 'topics' => '22' ), "id=16");

То все работает, значение в topics обновляется.

 

Но какие тут могут быть проблемы?

1) 'forums' - у меня в бд 100% есть такая таблица. Хотя все действия происходят с таблицей ibf_forums, как я понял (там вообще у них всё как-то запутано. Всех таблиц по 2 экземпляра. Одни с префиксом ibf_ вторые без. Если в запросах через ихний апи указывать имена таблиц с префиксом - то выскакивает ошибка, короче, мистика, непонятно зачем это, но суть в том, что в этом аргументе у меня все правильно (ведь правильно ж?)

 

2) array( 'topics' => 'topics+1' ) - тут не может быть ошибки, поле topics у меня есть в ibf_forums

 

3)id=16 - у меня 100% в таблице ibf_forums есть запись с id равным 16

 

4)ну и 2 труе в конце, хотя...мне shutdown режим абсолютно не нужен. Как я понял, по документации последний, 5 аргумент обязательно должен быть тру, для инкремента значения. Но если 4 параметр в фалсе, а 5 в труе - то "Возникла ошибка при работе с базой данных"

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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