Хук для выборки тем - Дизайн и модификация Invision Power Board

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

 

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

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

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

Теги не найдены

Страница 1 из 1

Хук для выборки тем

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

 
 
  • Advanced
  • ***
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 765
  • Регистрация: 27-Март 16
  • Репутация: 47
  • IPB version:3.4.x
 

Отправлено 02 Январь 2017 - 23:36

Подскажите, пожалуйста, существует ли хук, выводящий в боковой блок список тем с такой выборкой:

- Из определенных форумов
- За определенное время
- Фильтр по просмотрам

Есть ли такое решение?
0

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

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

Отправлено 02 Январь 2017 - 23:55

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

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

 
 
  • Advanced
  • ***
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 765
  • Регистрация: 27-Март 16
  • Репутация: 47
  • IPB version:3.4.x
 

Отправлено 03 Январь 2017 - 00:06

Дело в том, что с ходу не смог найти хука для вывода тем, кроме того, что идет в комплекте с форумом (последние темы)...
0

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

 
 
  • Advanced
  • ***
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 765
  • Регистрация: 27-Март 16
  • Репутация: 47
  • IPB version:3.4.x
 

Отправлено 03 Январь 2017 - 00:32

Нашел хороший польский хук (JW34) Latest Topics in Sidebar (сайт разработчика - http://forum.invisio...ics-in-sidebar/), в нем уже есть выборка из нужных форумов.

Не подскажите, как в него добавить функцию отбора по времени?

Вот сам хук - Вложение  (JW34) Latest Topics in Sidebar 1.0.1.zip (39,93К)
Количество загрузок: 0
0

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

 
 
  • Advanced
  • ***
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 765
  • Регистрация: 27-Март 16
  • Репутация: 47
  • IPB version:3.4.x
 

Отправлено 03 Январь 2017 - 13:03

Есть запрос вывода лучших авторов за определенное время (из хука RAW33 Top Topic Starters - http://ipbskins.ru/f...topic14669.html )

	if( $this->settings['ttS_list'] == 2 )
	{

	$topic_date = time() - (86400 * 1);

	$this->DB->build( array( 'select' 	=> 'COUNT( t.starter_id ) as topts',
							 'from'		=> array( 'topics' => 't' ),		
							 'where'  => "t.start_date  > '".$topic_date."'" . ( $this->settings['ttS_forums'] ? ' AND t.forum_id IN ('.$this->settings['ttS_forums'].')' : '' ),
							 'order'	=> 'topts DESC',
							 'group'	=> 't.starter_id',
							 'limit'    => array( 0, $this->settings['ttS_total'] ),							
							 'add_join' => array( array( 'select'	=> 'm.members_display_name, m.member_id, m.members_seo_name, m.member_group_id',
														  'from'  	=> array( 'members' => 'm' ),
														  'where' 	=> 't.starter_id = m.member_id',
														  'type'  	=> 'left'),
                                                          1 => array( 'select' => 'pp.*',
				                                                      'from'   => array( 'profile_portal' => 'pp' ),
				                                                      'where'  => 'm.member_id=pp.pp_member_id',
				                                                      'type'   => 'left' )),														  
						                        ));
	
	$t = $this->DB->execute();		
					
	while( $r = $this->DB->fetch( $t ) )
	{
	    $r = IPSMember::buildDisplayData( $r );
		$r['topts'] = $this->registry->getClass('class_localization')->formatNumber($r['topts']);
	    $tts[] = $r;
	}

И настройка для него:

<setting>
      <conf_id>309</conf_id>
      <conf_title>Отображение списка</conf_title>
      <conf_description>Отображение лучших авторов за все время, день, неделю или месяц.</conf_description>
      <conf_group>34</conf_group>
      <conf_type>dropdown</conf_type>
      <conf_key>ttS_list</conf_key>
      <conf_value/>
      <conf_default>1</conf_default>
      <conf_extra>1=За все время
2=За сутки
3=За неделю
4=За месяц</conf_extra>
      <conf_evalphp/>
      <conf_protected>0</conf_protected>
      <conf_position>4</conf_position>
      <conf_start_group/>
      <conf_add_cache>1</conf_add_cache>
      <conf_keywords/>
      <conf_title_keyword>ttS</conf_title_keyword>
      <conf_is_title>0</conf_is_title>
    </setting>

Подскажите, пожалуйста, как изменить этот запрос, чтобы выводились не пользователи, а темы?
0

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

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

Отправлено 03 Январь 2017 - 20:01

$period = array( 1 => '-1 day', 2 => '-1 week', 3 => '-1 month' );
$this->DB->build( array( 'select' => '*',
						 'from'   => 'topics',
						 'where'  => 'start_date >= ' . strtotime( $period[1] ) . ' AND forum_id IN(1,2,3)',
						 'order'  => 'start_date DESC',
						 'limit'  => array(0,10)
) );
$this->DB->execute();

Вывод 10 тем за последний день из форумов 1,2,3.
1

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

 
 
  • Advanced
  • ***
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 765
  • Регистрация: 27-Март 16
  • Репутация: 47
  • IPB version:3.4.x
 

Отправлено 03 Январь 2017 - 20:25

Спасибо большое! А как вместо статичных данных добавить в запрос настройки из хука (из поста 4)? Чтобы вместо 10 тем были данные из настройки $this->settings['jw_lts_limit'], и форумы тоже подгружались из настройки $this->settings['jw_lts_forums'].

И куда этот запрос добавить в хук? А то добавляю в private function _getTopics() и public function getOutput(), но выдает ошибку базы данных при загрузке...

Сообщение изменено: Strategius (03 Январь 2017 - 20:44)

0

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

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

Отправлено 03 Январь 2017 - 21:49

так и пишите вместо 10 $this->settings['jw_lts_limit']
0

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

 
 
  • Advanced
  • ***
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 765
  • Регистрация: 27-Март 16
  • Репутация: 47
  • IPB version:3.4.x
 

Отправлено 03 Январь 2017 - 23:25

Цитата

за последний день

А возможно ли добавить только временной запрос в этот уже готовый запрос?

$this->DB->build( array( 
														'select'   => 't.tid, t.title as topic_title, t.title_seo, t.start_date, t.starter_id, t.starter_name',
														'from'     => array('topics' => 't'),
														'where'    => "t.approved=1 AND t.forum_id in (".implode(",",$forumIds).")",
														'order' => 't.start_date DESC',
														'limit' => array(0,$this->settings['st_stv_limit']),
														'add_join' => array(
																			array(
																					'select'	=> 'm.*',
																					'from'		=> array( 'members' => 'm' ),
																					'where'		=> 'm.member_id=t.starter_id',
																					'type'		=> 'left',
																				),
																			array(
																					'select'	=> 'pp.*',
																					'from'		=> array( 'profile_portal' => 'pp' ),
																					'where'		=> 'm.member_id=pp.pp_member_id',
																					'type'		=> 'left',
																				),
																			)
												)	);
				

				$outer = $this->DB->execute();
				while( $t = $this->DB->fetch( $outer ) )
				{            
					$t = IPSMember::buildDisplayData( $t );
				
					$topics[] = $t;
				}
			
				return $topics;

Не получается никак добавить Ваш тот запрос в хук (JW34) Latest Topics in Sidebar, может, проще штатный запрос дополнить...

Сообщение изменено: Strategius (04 Январь 2017 - 00:17)

0

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

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

Отправлено 04 Январь 2017 - 00:09

Что значит временный? Что именно не получается?
0

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

 
 
  • Advanced
  • ***
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 765
  • Регистрация: 27-Март 16
  • Репутация: 47
  • IPB version:3.4.x
 

Отправлено 04 Январь 2017 - 00:19

Цитата

Что значит временный?

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

$period = array( 1 => '-1 day', 2 => '-1 week', 3 => '-1 month' );
'where'  => 'start_date >= ' . strtotime( $period[1] ) .


Добавляю его в готовый запрос из хука, строку:

'where'    => "t.approved=1 AND t.forum_id in (".implode(",",$forumIds).")",

Меняю на:

'where'    => "start_date >= ' . strtotime( $period[1] ) . ' AND t.approved=1 AND t.forum_id in (".implode(",",$forumIds).")",

Но не работает...

Дело в том, что в хуке из поста #4 уже есть условия отбора по количеству тем и по опред. форумам. Хотелось бы в него добавить условие отбора по времени.
0

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

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

Отправлено 04 Январь 2017 - 00:23

Цитата

Но не работает...

Что значит не работает? Конкретнее пишите.
0

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

 
 
  • Advanced
  • ***
  • Смотреть блог
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 765
  • Регистрация: 27-Март 16
  • Репутация: 47
  • IPB version:3.4.x
 

Отправлено 04 Январь 2017 - 00:27

Установлена настройка запроса вывода тем за последний день, но условие отбора по времени не выполняется, выводятся старые темы (т.е. как будто запроса и не существует).
0

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

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

Отправлено 04 Январь 2017 - 00:34

Переменная $period объявлена перед запросом?
Перед $outer = $this->DB->execute(); добавьте echo $this->DB->fetchSQLString(); exit; и изучите запрос.
0

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


Страница 1 из 1


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

  

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-2017 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна