Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[release] First post on every page by rxu

Все расширения, созданные нашим сообществом для phpBB, как находящиеся в разработке, так и прошедшие валидацию на официальном сайте phpbb.com, будут анонсированы тут. Вся техническая поддержка по этим расширениям оказывается в этом форуме.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16367
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза

[release] First post on every page by rxu

Сообщение rxu »

Закрепить первое сообщение в теме

Расширение прошло валидацию на phpbb.com:
Для phpBB 3.2/3.3 - https://www.phpbb.com/customise/db/exte ... ry_page_3/

Скачать актуальную версию: https://github.com/rxu/first_post_on_ev ... op-3.2.zip
Исходный код: https://github.com/rxu/first_post_on_every_page
Копировать в папку: /ext/rxu/firstpostoneverypage/
Изображение
Перенесено из форума Бета-версии расширений для phpBB 3.1.x в форум Анонсы и поддержка расширений для phpBB 3.1.x 11.07.2015 12:49 модератором LavIgor

Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12425
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2477 раз

Re: [release] First post on every page by rxu

Сообщение Татьяна5 »

Аватара пользователя
Kuskow
phpBB 1.4.4
Сообщения: 160
Стаж: 7 лет 11 месяцев
Откуда: Караганда
Благодарил (а): 25 раз
Поблагодарили: 15 раз

Re: [release] First post on every page by rxu

Сообщение Kuskow »

Татьяна5, спасибо, но это не то, чего хотелось, поскольку первое сообщение желтеет только через полторы секунды после загрузки и отображения страницы. Это даже меня пугает, а уж пользователей и подавно. Поэтому пришлось покопаться и сделать, чтобы закреплённое сообщение было выделено уже в HTML-тексте страницы.

Очень не хотел лезть в PHP текст rxu. Для это надо, чтобы во viewtopic_body.html были переданы поля из базы данных _forums.first_post_always_show, _topics.topic_first_post_show, но мне не удалось их там хоть в каком-то виде обнаружить. Аналога переменной postrow для topic и forum тоже не нашёл. Так что, rxu, извините, пожалуйста, пришлось для себя дополнить Ваш текст PHP.

Итак, я изменил три файла:

1) /styles/prosilver/theme/colours.css - находим стиль фона bg1:

Код: Выделить всё

.bg1 {
	background-color: #ECF3F7;
}
и перед ним добавляем свой новый стиль bg0, в котором будет указан цвет фона для закреплённого сообщения:

Код: Выделить всё

.bg0 {
	background-color: #EFEED9;
}
Цвет #EFEED9 я взял из стиля цитаты второго уровня. Он чуть бледнее того, что на hover для списка форумов.

2) /styles/prosilver/template/viewtopic_body.html здесь надо добавить условие, при котором сообщение будет иметь цвет фона bg0, если на странице есть закреплённое и оно первое. Для этого находим контекст:

Код: Выделить всё

<!-- IF postrow.S_ROW_COUNT is odd -->bg1<!-- ELSE -->bg2<!-- ENDIF -->
и заменяем его на:

Код: Выделить всё

<!-- IF S_FIRST_POST_SHOW*postrow.S_FIRST_ROW -->bg0<!-- ELSEIF postrow.S_ROW_COUNT is odd -->bg1<!-- ELSE -->bg2<!-- ENDIF -->
После этого в админке форума надо "Очистить кэш", чтобы изменения вступили в силу.

3) /ext/rxu/FirstPostOnEveryPage/event/listener.php тут надо добавить переменную, передаваемую в HTML для распознавания, было ли на этой странице закреплено сообщение. Если совсем по минимуму вносить изменения, то достаточно в функцию modify_viewtopic_post_list после строки:

Код: Выделить всё

		$topic_data = $event['topic_data'];
добавить строку:

Код: Выделить всё

		$this->template->assign_vars(array('S_FIRST_POST_SHOW' => $topic_data['topic_first_post_show'] || $topic_data['first_post_always_show']));
И всё, после этого должно заработать.

Но я там ещё немного поковырялся и нашёл в функции modify_viewtopic_post_list, что не все строчки на своих местах, поэтому переписал её для себя иначе. Было:

Код: Выделить всё

	public function modify_viewtopic_post_list($event)
	{
		$post_list = $event['post_list'];
		$topic_data = $event['topic_data'];
		$sql_ary = $event['sql_ary'];

		if (($topic_data['topic_first_post_show'] || $topic_data['first_post_always_show']) && ($post_list[0] != (int) $topic_data['topic_first_post_id']))
		{
			foreach ($post_list as $key => $value)
			{
				$post_list[$key+1] = $value;
			}
			$post_list[0] = (int) $topic_data['topic_first_post_id'];
			$this->template->assign_vars(array('S_FIRST_POST_SHOW' => 1));
		}

		$sql_ary['WHERE'] = $this->db->sql_in_set('p.post_id', $post_list) . ' AND u.user_id = p.poster_id';

		$event['post_list'] = $post_list;
		$event['sql_ary'] = $sql_ary;
	}
стало:

Код: Выделить всё

	public function modify_viewtopic_post_list($event)
	{
		$topic_data = $event['topic_data'];
		$topic_first_post_id = (int) $topic_data['topic_first_post_id'];
		$first_post_show = $topic_data['topic_first_post_show'] + $topic_data['first_post_always_show'];
		$this->template->assign_vars(array('S_FIRST_POST_SHOW' => $first_post_show));
 
		if ($first_post_show * ($event['post_list'][0] - $topic_first_post_id))
		{
			$post_list[0] = $topic_first_post_id;
			foreach ($event['post_list'] as $key => $value)	$post_list[++$key] = $value;
			$event['post_list'] = $post_list;
 
			$sql_ary = $event['sql_ary'];
			$sql_ary['WHERE'] = $this->db->sql_in_set('p.post_id', $post_list) . ' AND u.user_id = p.poster_id';
			$event['sql_ary'] = $sql_ary;
		}
	}
Больше всего хотелось бы заменить конструкцию foreach функциями работы с массивами, но эксперименты показали, что существенного уменьшения времени обработки (на 10-20 элементах-то) не наблюдается, так что, оставил то, что очевидней.
Пример 
Честно не знаю, можно ли тут давать ссылки, если что, модераторы удалят. Как всё это выглядит, можно посмотреть на натуре:
https://navimba.com/viewtopic.php?t=3524
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12425
Стаж: 12 лет 8 месяцев
Благодарил (а): 166 раз
Поблагодарили: 2477 раз

Re: [release] First post on every page by rxu

Сообщение Татьяна5 »

Kuskow, через 1,5 секунды? Страница скриптами перегружена
Аватара пользователя
Kuskow
phpBB 1.4.4
Сообщения: 160
Стаж: 7 лет 11 месяцев
Откуда: Караганда
Благодарил (а): 25 раз
Поблагодарили: 15 раз

Re: [release] First post on every page by rxu

Сообщение Kuskow »

Понятно, но не я ж её перегрузил. Рекламы нет никакой, счётчика нет ни одного, стиль стандартный из комплекта [3.2.9]. Расширения:
Antispam by CleanTalk
Convert Local Url To Link Name 0.3.0
External Links Open in New Window
First post on every page
Google Search
Large Font
phpBB Display Age Users
QuickReply Reloaded 2.0.0-beta4
SEO Topic & Canonical URL
Thanks for posts

Как видим, ничего особо скриптового. Ну разве что только External Links Open in New Window и QuickReply Reloaded.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: [release] First post on every page by rxu

Сообщение Sheer »

Kuskow писал(а): 26.06.2020 16:32Google Search
Он и тормозит. И не понимаю, на кой леший он нужен.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Kuskow
phpBB 1.4.4
Сообщения: 160
Стаж: 7 лет 11 месяцев
Откуда: Караганда
Благодарил (а): 25 раз
Поблагодарили: 15 раз

Re: [release] First post on every page by rxu

Сообщение Kuskow »

Спасибо, отключил - не помогло.
Нужен для "литературного" поиска по сайту, в том числе и слов с ошибками, с которым внутренний поиск, естественно, не справится. Да и нужен поиск страниц, а не сообщений.
Аватара пользователя
Mushu-svbk
phpBB 1.4.2
Сообщения: 58
Стаж: 14 лет 1 месяц
Благодарил (а): 10 раз

Re: [release] First post on every page by rxu

Сообщение Mushu-svbk »

У меня вообще не сработал. При включении выдает такую ошибку The reserved indicator "@" cannot start a plain scalar; you need to quote the scalar at line 5 (near "- @dbal.conn"). Кто-то знает как этот вопрос решить?
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16367
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза

Re: [release] First post on every page by rxu

Сообщение rxu »

Mushu-svbk писал(а): 25.09.2020 3:04 У меня вообще не сработал.
Кто не сработал?
Изображение
Аватара пользователя
Mushu-svbk
phpBB 1.4.2
Сообщения: 58
Стаж: 14 лет 1 месяц
Благодарил (а): 10 раз

Re: [release] First post on every page by rxu

Сообщение Mushu-svbk »

rxu писал(а): 25.09.2020 5:47 Изображение
Вернуться к началу
Плагин. Поискала решение в сети, нашла. Работает теперь. Нужно было внести правки в файл services.yml. Прописать кавычки одинарные. Спасибо
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: [release] First post on every page by rxu

Сообщение Sheer »

Mushu-svbk писал(а): 25.09.2020 19:32 кавычки одинарные
В репозитории давным-давно исправлено
rxu committed on 21 May
https://github.com/rxu/first_post_on_ev ... ces.yml#L6
&
https://github.com/rxu/first_post_on_ev ... 7ba44c9f21
Откуда вы взяли устаревшую версию расширения черт его знает.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Mushu-svbk
phpBB 1.4.2
Сообщения: 58
Стаж: 14 лет 1 месяц
Благодарил (а): 10 раз

Re: [release] First post on every page by rxu

Сообщение Mushu-svbk »

Sheer писал(а): 25.09.2020 20:08 Откуда вы взяли устаревшую версию расширения черт его знает.
брала с этой же темы с первого поста. Но скачивала не с реппозитория, а с phpbb com пройдя по ссылке с первого поста. Откуда ж мне было знать что там и в реппозитории разные версии выложены
Последний раз редактировалось Mushu-svbk 25.09.2020 20:13, всего редактировалось 1 раз.
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: [release] First post on every page by rxu

Сообщение Sheer »

На офф-сайте устаревшая версия. Брать надо с github
rxu писал(а): 09.01.2015 15:06 Исходный код: https://github.com/rxu/first_post_on_every_page
rxu, Обновить на оффе надо аднака
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16367
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1744 раза

Re: [release] First post on every page by rxu

Сообщение rxu »

Sheer писал(а): 25.09.2020 20:13 На офф-сайте устаревшая версия.
Не совсем. Их там просто две - отдельно для 3.1, отдельно для 3.2/3.3.
Исправлено в первом сообщении темы.
Изображение
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 17 лет 2 месяца
Откуда: Калининград не Кенигсберг
Благодарил (а): 41 раз
Поблагодарили: 1716 раз

Re: [release] First post on every page by rxu

Сообщение Sheer »

Mushu-svbk писал(а): 25.09.2020 20:09 что там и в реппозитории разные версии
А все равно, возьмите себе за правило всегда брать из репо. Там всегда самые свежие версии.
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
Аватара пользователя
Mushu-svbk
phpBB 1.4.2
Сообщения: 58
Стаж: 14 лет 1 месяц
Благодарил (а): 10 раз

Re: [release] First post on every page by rxu

Сообщение Mushu-svbk »

Sheer писал(а): 25.09.2020 20:18 А все равно, возьмите себе за правило всегда брать из репо. Там всегда самые свежие версии.
спасибо за совет. Просто я честно говоря, обновлялась оочень давно, когда все вручную еще прописывать надо было по файлам. И этот новый способ для меня в новинку. Тем более у меня немного сроки поджимают.

Вернуться в «Анонсы и поддержка расширений для phpBB»