Default Post Content (доработка) - Дизайн и модификация Invision Power Board

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

 

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

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

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

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

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

Default Post Content (доработка)

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

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

Отправлено 25 Июль 2016 - 23:00

Добрый вечер!
Имеется классный компонент по созданию шаблонов создаваемых тем/сообщений. Хук очень классный и удобный, но есть один минус - устанавливать эти самые шаблоны можно только на каждый форум по отдельности, т.е. на каждый ID форума выставлять приходится заново. Это долго и не удобно.

Как его доработать, чтобы можно было выбрать сразу несколько форумов и разделов, зажав клавишу CTRL? Сейчас в выпадающем списке эта кнопка не работает.

Вложение  Безымянный.png (26,99К)
Количество загрузок: 17

https://invisionpowe...t-post-content/

Вложение  HSC32 Default Post Content 3.2.2.rar (10,63К)
Количество загрузок: 5
0

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

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

Отправлено 26 Июль 2016 - 16:09

Не подскажете? Проблема кроется в файле, отвечающем за подгрузку ID форумов - admin\applications\forums\modules_admin\defaultpost\forums.php, и в файле - admin\applications\forums\skin_cp\cp_skin_defaultpost.php, где ключ forum_name отвечает за выбор нужного форума.

Как бы разблокировать там выбор сразу нескольких форумов?
0

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

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

Отправлено 26 Июль 2016 - 21:52

forum_id идет отдельным полем, чтобы была поддержка мултиселекта нужно переписать полностью как минимум методы _forumForm, _saveForum.

\admin\applications\forums\modules_admin\defaultpost\forums.php

Найти

$formData['forumId'] = $this->registry->output->formDropdown('forumId',$forumList,$row['forum_id'],'forumId');

Заменить на

$formData['forumId'] = $this->registry->output->formMultiDropdown( "forumId[]", $forumList, array( $row['forum_id'] ), 5, "forumId" );

Метод _saveForum заменить на:

    protected function _saveForum()
    {
		$forumId = array_filter( array_map( 'intval', (array) $this->request['forumId'] ) );
		
		if( empty( $forumId ) )
		{
			$this->registry->output->showError('No forum selected','10DPC02');
		}
        
		$data = array('new_template_id' => intval($this->request['newTemplateId']),
					  'reply_template_id' => intval($this->request['replyTemplateId']));
					  
		foreach( $forumId as $id )
		{
			$data['forum_id'] = $id;
			$this->DB->replace( 'defaultpost_templates_forums', $data, 'forum_id='.$id );
		}
        
		$this->registry->output->silentRedirect($this->settings['base_url'] . $this->html->form_code);
    }


Как эти правки будут работать в приложение я не знаю, поэтому все изменения делаете под свою ответственость.
1

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

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

Отправлено 26 Июль 2016 - 23:54

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

Основной баг (недочет) - при сохранении конфигурации, выбранные форумы и категории удаляются из мульти-списка выбора, и вернуть их туда можно, только вручную удалив каждый форум из менюшки управления форумами в приложении... :( Как это починить? Т.е. чтобы при сохранении конфигурации, форумы не исчезали из списка, а оставались просто подсвеченными сереньким в списке, как в хуках например?

А то получается, единожды массово выбрать шаблон можно, а массово удалить (и перенастроить) уже нельзя.
0

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

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

Отправлено 27 Июль 2016 - 10:44

Вручную редактируете каждый форум или при генерации списка делайте дополнительный запрос (джоин) для выбора всех форумов с одинаковыми настройками.
0

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

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

Отправлено 27 Июль 2016 - 11:57

Цитата

при генерации списка делайте дополнительный запрос (джоин) для выбора всех форумов с одинаковыми настройками.

Это как? Хотелось бы автоматизировать процесс... А то несколько десятков форумов вручную не хотелось бы перенастраивать, при редактировании шаблона...
0

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

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

Отправлено 27 Июль 2016 - 12:03

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

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

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

Отправлено 28 Июль 2016 - 14:53

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

при генерации списка делайте дополнительный запрос (джоин) для выбора всех форумов с одинаковыми настройками

Найти

$row = $this->DB->buildAndFetch(array('select' => '*', 'from' => 'defaultpost_templates_forums', 'where' => 'forum_id='.$forumId));

Заменить на

        $this->DB->build(array('select' => 'z.*',
							   'from'   => array( 'defaultpost_templates_forums' => 't' ),
							   'where'  => 't.forum_id=' . $forumId,
							   'add_join' => array(
									array( 'from'  => array( 'defaultpost_templates_forums' => 'z' ),
										   'where' => 'z.new_template_id=t.new_template_id AND z.reply_template_id=t.reply_template_id',
										   'type'  => 'inner',
									)
							   )
							));
		$this->DB->execute();
		$row = $rows = array();
		
		while( $r = $this->DB->fetch() )
		{
			$rows[] = $r['forum_id'];
			
			if( empty( $row ) )
			{
				$row = $r;
			}
		}


Найти

        $formData['forumId'] = $this->registry->output->formMultiDropdown( "forumId[]", $forumList, array( $row['forum_id'] ), 5, "forumId" );

Заменить на

        $formData['forumId'] = $this->registry->output->formMultiDropdown( "forumId[]", $forumList, $rows, 5, "forumId" );
        $formData['forumId'] .= '<input type="hidden" name="_forumsId" values="'.implode( ',', $rows ).'">'."\n";


Найти

        foreach( $forumId as $id )
        {
            $data['forum_id'] = $id;
            $this->DB->replace( 'defaultpost_templates_forums', $data, 'forum_id='.$id );
        }

Ниже добавить

		$_forumsId = array_filter( array_map( 'intval', explode( ',', $this->request['_forumsId'] ) ) );
		
		if( count( $diff = array_diff( $_forumsId, $forumId ) ) )
		{
			$this->DB->delete('defaultpost_templates_forums', 'forum_id IN (' . implode( ',', $diff ));
		}

1

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

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

Отправлено 28 Июль 2016 - 17:33

Странно, у меня вообще ничего после правок не изменилось :unsure:

При настройке и сохранении конфигурации, выбранные в списке форумы так и исчезают из списка...
0

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

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

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

Нет возможности проверить, но по идее должно работать.
0

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

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

Отправлено 29 Июль 2016 - 17:44

Не работает, к сожалению. Разницы не заметил после редактирования файла.
0

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

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

Отправлено 29 Июль 2016 - 19:00

Выше
$this->DB->build(array('select' => '*', 'from' => 'defaultpost_templates_forums'));

Добавить
return $this->forumArray;

1

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

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

Отправлено 29 Июль 2016 - 19:18

Вот сейчас заработало, огромное Вам спасибо! Именно то, что нужно, теперь можно как угодно, и сколько угодно форумов сразу настроить -IMG-
А это не сильно на производительности сайта скажется (если сразу на 50 форумов будут установлены шаблоны)?

Сообщение изменено: Strategius (29 Июль 2016 - 19:19)

0

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

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

Отправлено 29 Июль 2016 - 19:36

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

А это не сильно на производительности сайта скажется (если сразу на 50 форумов будут установлены шаблоны)?

Не скажется.
1

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


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