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

First post on every page phpbb3

Добавлено: 22 июн 2012, 21:05
DeaDRoMeO
И в который раз анонсирую модификацию из разряда - почему такого нет в стандартном движке ?
Имя этой модификации - First post on every page, люди, знакомые с английским языком наверное уже поняли ее назначение, а для прочих поясню - модификация добавляет возможность закрепления первого сообщения темы, а это значит, что оно будет отображаться на всех страницах темы.

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

AВНИМАНИЕ !!!Право закреплять первое сообщение темы имеют те, кто может редактировать свои сообщения !!!

Скачиваем архив с модом и устанавливаем, а так же не забываем выполнить инструкции для стиля, которые располагаются в папке мода templates.

Для руссификации нужно открыть language/ru/common.php и найти

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

'FIND_USERNAME'			=> 'Find a member',
Вставить перед найденным

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

'FIRST_POST_SHOW'		=> 'Первое сообщение на каждой странице темы',

AВнимание !!!Всвязи с тем, что код в новых версиях форума малехо изменился, то в одной из правок следует искать

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

// Check the permissions for post approval. Moderators are not affected.
А не

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

// If the post need approval we will wait a lot longer.
Просто инструкцию к моду не переписали

Доработки
OPEN
viewtopic.php

FIND

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

   'U_TOPIC'            => "{$server_path}viewtopic.$phpEx?f=$forum_id&t=$topic_id",
AFTER, ADD

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

   'S_TOPIC_FIRST_POST_SHOW'   => ($topic_data['topic_first_post_show'] == 1) ? true : false,
OPEN
styles/prosilver/template/viewtopic_body.html
FIND

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

   <div id="p{postrow.POST_ID}" class="post
IN-LINE FIND

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

<!-- IF postrow.S_ROW_COUNT is odd -->
IN_LINE REPLACE

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

<!-- IF S_TOPIC_FIRST_POST_SHOW and postrow.S_ROW_COUNT eq 0 -->bg3<!-- ELSEIF postrow.S_ROW_COUNT is odd -->
FIND

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

   <hr class="divider" />
AFTER, ADD

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

   <!-- IF S_TOPIC_FIRST_POST_SHOW and postrow.S_ROW_COUNT eq 0 --><br /><br /><!-- ENDIF -->
OPEN
styles/subsilver/template/viewtopic_body.html
FIND

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

   <!-- IF postrow.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
REPLACE WITH

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

   <!-- IF S_TOPIC_FIRST_POST_SHOW and postrow.S_ROW_COUNT eq 0 --><tr class="row3"><!-- ELSEIF postrow.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
FIND

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

   <!-- IF postrow.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
REPLACE WITH

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

   <!-- IF S_TOPIC_FIRST_POST_SHOW and postrow.S_ROW_COUNT eq 0 --><tr class="row3"><!-- ELSEIF postrow.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
FIND

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

   <!-- IF postrow.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
REPLACE WITH

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

   <!-- IF S_TOPIC_FIRST_POST_SHOW and postrow.S_ROW_COUNT eq 0 --><tr class="row3"><!-- ELSEIF postrow.S_ROW_COUNT is even --><tr class="row1"><!-- ELSE --><tr class="row2"><!-- ENDIF -->
FIND

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

<!-- END postrow -->
BEFORE, ADD

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

   <!-- IF S_TOPIC_FIRST_POST_SHOW and postrow.S_ROW_COUNT eq 0 --><br /><br /><!-- ENDIF -->
После изменений обновить шаблоны и очистить кэш.
Вот впринципе и все, успехов в установке :-ok-:

First post on every page phpbb3

Добавлено: 23 июн 2012, 21:54
pro100_kotik
Да, ничего сложного нет

First post on every page phpbb3

Добавлено: 26 июн 2012, 19:12
Roman
pro100_kotik писал(а):Да, ничего сложного нет
Действительно, проще некуда.

В файле posting.php Найти : // If the post need approval we will wait a lot longer.
Вставить перед:

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

// Show/Unshow first post on every page
			if(($mode == 'edit' && $post_id == $post_data['topic_first_post_id']) || $mode == 'post')
			{
				if($mode == 'post')
				{
					$topic_id = $data['topic_id'];
				}

				$perm_show_unshow = ($auth->acl_get('m_lock', $forum_id) || ($auth->acl_get('f_user_lock', $forum_id) && $user->data['is_registered'] && !empty($post_data['topic_poster']) && $user->data['user_id'] == $post_data['topic_poster'])) ? true : false;

				if($post_data['topic_first_post_show'] != $topic_first_post_show && $perm_show_unshow)
				{
					$sql = 'UPDATE ' . TOPICS_TABLE . '
						SET topic_first_post_show = ' . (($topic_first_post_show) ? 1 : 0) . " 
						WHERE topic_id = $topic_id";
					$db->sql_query($sql);

				}
			} 
За что отвечает последний код ???, так как первый найти не удаётся !!! Куда его вставить, если первый код найти не могу?

First post on every page phpbb3

Добавлено: 26 июн 2012, 19:59
DeaDRoMeO
Блин забыл написать про это, в конец первого поста написал что нужно искать в коде вместо той строки, которую невозможно найти

First post on every page phpbb3

Добавлено: 26 июн 2012, 20:50
Roman
Сергей подскажи как понять что он установился. Что на это указывает? В админке порылся ничего не надыбал.

...
...
...
Спасибо. Уже нашёл.

First post on every page phpbb3

Добавлено: 26 июн 2012, 20:56
DeaDRoMeO
Молодца что сам накопал, мод то не имеет настроек, ведь мы не загружали его файлов на сервер и не редактировали файлов админки, все логично

First post on every page phpbb3

Добавлено: 24 авг 2012, 14:54
Atlas
Я вроде всё сделал (ну, то есть автомод сделал, а я как всегда доделал))) , но со sql проблема:
#1060 - Duplicate column name 'topic_first_post_show'
Автомод тоже самое показал.
И ещё, у меня при редактировании сообщения:
Показывать первое сообщение на каждой странице темы
Показывать первое сообщение на каждой странице темы
Показывать первое сообщение на каждой странице темы
Это нормально, что 3 раза?))))
Тут, как я понимаю, sql виноват, но что там надо удалить? (там ведь, удалить надо?))

First post on every page phpbb3

Добавлено: 24 авг 2012, 15:00
DeaDRoMeO
Атлант-19 писал(а):#1060 - Duplicate column name 'topic_first_post_show'
Даннные уже есть в БД, ничего не надо делать
Атлант-19 писал(а):И ещё, у меня при редактировании сообщения:
Вы 3 раза вставили один и тот же код, проверяйте правильность установки

First post on every page phpbb3

Добавлено: 05 окт 2012, 12:23
Atlas
Устанавливаю всё заново. Устанавливаю этот мод через автомод, загружаю архив, а автомод мне пишет: Unexpected header, ending loop. И в списках в автомоде ничего нету... Или теперь только самому устанавливать?

First post on every page phpbb3

Добавлено: 05 окт 2012, 14:12
DeaDRoMeO
Атлант-19 писал(а):Или теперь только самому устанавливать?
Самому, не все моды могут устанавливаться через автомод

First post on every page phpbb3

Добавлено: 05 окт 2012, 15:16
Atlas
Но просто раньше-то работало...

First post on every page phpbb3

Добавлено: 05 окт 2012, 17:36
DeaDRoMeO
Атлант-19 писал(а):Но просто раньше-то работало...
Еще раз, какую ошибку кидает???Полный текст приведи)

First post on every page phpbb3

Добавлено: 28 окт 2012, 16:14
ashat
если все нормально где должна появится кнопочка закрепить?

First post on every page phpbb3

Добавлено: 28 окт 2012, 16:16
DeaDRoMeO
При создании новой темы либо редактировании первого сообщения темы, над пунктами выбора типа темы (Важная, Обьявление...) должен появиться чекбокс Первое сообщение на каждой странице темы

First post on every page phpbb3

Добавлено: 28 окт 2012, 16:37
ashat
надо бросто для даунов вроде меня указывать чтоб правили стиль свой в основной инструкции нет )

First post on every page phpbb3

Добавлено: 28 окт 2012, 17:00
DeaDRoMeO
Черд))Надо будет указать))

First post on every page phpbb3

Добавлено: 28 окт 2012, 17:02
DeaDRoMeO
DeaDRoMeO писал(а):а так же не забываем выполнить инструкции для стиля, которые располагаются в папке мода templates.
Хотя вот же уже написано было)))Надо внимательней просто читать))

First post on every page phpbb3

Добавлено: 28 окт 2012, 18:23
ashat
все что мелким шрифтом не читается )))

First post on every page phpbb3

Добавлено: 28 окт 2012, 18:29
DeaDRoMeO
Ну такой шрифт везде))

First post on every page phpbb3

Добавлено: 12 янв 2013, 01:31
Atlas
Ну и мод... Не, я точно с ним с ума сойду, не иначе :-0=)
Кое-как отредактировав файлы, и промучавшись с скл-запросом, всё мод заработал: при создании темы внизу всё же появилась долгожданная галочка...
Ну ладно, отмучился, на 2 день мучений всё же надо уже и установиться :-0=) Ага, щас, установится он! :-0=) Создаю тему. Пишет: слишком маленькое сообщение... Проверил в админке - минимум 1 симвоол. Ну ладно, поставил 3 символа: у меня-то 3 предложения :-0=) Всё равно, сволочь, не работает... включил "первое сообщение...". Нажимаю "Отправить". Итог:

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

Общая ошибка
SQL ERROR [ mysqli ]

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 [1064]

SQL

UPDATE phpbbfa8_topics SET topic_first_post_show = 1 WHERE topic_id = 

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/includes/db/dbal.php
LINE: 757
CALL: trigger_error()

FILE: [ROOT]/includes/db/mysqli.php
LINE: 182
CALL: dbal->sql_error()

FILE: [ROOT]/posting.php
LINE: 1395
CALL: dbal_mysqli->sql_query()
В админке у меня стоит мод проверки ошибок. Заглянул... 16 ошибок((( Некоторые похожи:
Страница: posting.php?mode=post&f=41
Файл: [ROOT]/posting.php
Строка: 1385 [PHP Notice]

Undefined variable: data



Страница: posting.php?mode=post&f=41
Файл: [ROOT]/posting.php
Строка: 1390 [PHP Notice]

Undefined variable: topic_first_post_show



Страница: posting.php?mode=edit&f=42&p=18
Файл: [ROOT]/posting.php
Строка: 1393 [PHP Notice]

Undefined variable: topic_first_post_show
с этим постинг.пхп я особо намучился: там забыл, что надо другое искать, в итоге первый раз нетуда скопировал то что надо, но потом вроде всё подправил...
и ещё:
Страница: posting.php?mode=post&f=81
Файл: [ROOT]/includes/functions_content.php
Строка: 678 [PHP Warning]

preg_replace(): Compilation failed: invalid UTF-8 string at offset 70
Ну, а это уже врят-ли связано с этим модом, это уже наверно я лично напортачил :-0=)
DeaDRoMeO писал(а):Еще раз, какую ошибку кидает???Полный текст приведи)
Unexpected header, ending loop. Это полный текст, и он на зелёном фоне.