Хак от товарища
Mephisteus аки
DarkSSJ3? Он не совсем рабочий, и вот почему:
Code:
$newsticky = str_replace(",$threadid", "", "$personalstick[threadsticky]");
$newsticky = str_replace("$threadid,", "", "$newsticky");
$newsticky = str_replace("$threadid", "", "$newsticky");
Т.е. если есть пристыкованные темы
325 и 1
325, после расстыковки 325-ой 1325-ая превратиться в 1. Не говоря уж про про правку исходников воблы (кажется, хуки
forumdisplay_query_threadid и
forumdisplay_query никто не отменял) и CSV-строку идентификаторов тем в таблице
user (при 2000 пользователей это, может, и не сильно плохо, а при 20 000?

).
Я чуть перелопатил этот хак для себя, если кому он такой нужен, см. аттач.
ИЗМЕНЕНИЯ- Для пристыкованных тем создана отдельная таблица с уникальным ключом userid/threadid, ИМХО её обновление будет шустрее (особенно отстыковка
).
- Не вырезаются куски идентификаторов тем (строка со списком идентификаторов заменена на массив).
- Нет необходимости править forumdisplay.php.
- Правильно рассчитывается счётчик всех тем в строке «Показаны темы с X по Y из NN тем (т.е. индивидуально пристыкованные темы также не учитываются)
- Перерисованы кнопки (под стандартный светлый стиль).
- За компанию добавлена автосмена цвета ячеек таблицы для пристыкованных тем и их отделение thead'ом.
УСТАНОВКА
Описана в ридми, но продублирую:
1. Загрузить файлы:images/misc/mystickypin.gif -> <папка_форума>/images/misc/mystickypin.gif
images/buttons/mysticky.gif -> <папка_форума>/images/buttons/mysticky.gif
2. Правка шаблонов.
Найти в
FORUMDISPLAY:
Добавить
ВЫШЕ:
PHP Code:
$threadbits_personalsticky
</tr><tr><td class="thead" colspan="7"><img src="images/clear.gif" alt="" width="1" height="10" border="0" /></td></tr>
Вторую строку можно убрать, если не хотите отделять пристыкованные темы от обычных.
Найти в
SHOWTHREAD:
PHP Code:
<if condition="$show['member']">
<tr>
<td class="vbmenu_option"><img class="inlineimg" src="$stylevar[imgdir_button]/subscribe.gif" alt="$vbphrase[subscription]" />
<if condition="$show['subscribed']">
<a href="subscription.php?$session[sessionurl]do=removesubscription&t=$threadid">$vbphrase[unsubscribe_from_this_thread]</a>
<else />
<a href="subscription.php?$session[sessionurl]do=addsubscription&t=$threadid">$vbphrase[subscribe_to_this_thread]</a>
</if>
</td>
</tr>
Добавить
НИЖЕ:
PHP Code:
<tr>
<td class="vbmenu_option"><img class="inlineimg" src="$stylevar[imgdir_button]/mysticky.gif" />
<if condition="$psticked">
<a href="showthread.php?$session[sessionurl]do=unpersonalsticky&t=$threadid">$vbphrase[personal_unsticky]</a>
<else />
<a href="showthread.php?$session[sessionurl]do=personalsticky&t=$threadid">$vbphrase[personal_sticky]</a>
</if>
</td>
</tr>
Найти в
threadbit:
PHP Code:
<if condition="$show['sticky']"> <img class="inlineimg" src="$stylevar[imgdir_misc]/sticky.gif" alt="$vbphrase[sticky_thread]" /> </if>
Добавить
ВЫШЕ:
PHP Code:
<if condition="$show['personalsticky']"> <img class="inlineimg" src="$stylevar[imgdir_misc]/mystickypin.gif" alt="$vbphrase[personal_sticky_thread]" /> </if>
3. Правка стилей.
Если хотите, чтобы ячейки пристыкованных тем были отмечены другим цветом, в настройках стиля (
Админпанель ->
Стили и шаблоны ->
Увравление стилями ->
Основная таблица CSS) в графе
Дополнительные определения CSS нужно дописать следующее:
HTML Code:
/* Separate sticky threads */
.alt1_sticky
{
background: #E6E6F0;
color: #000000;
}
.alt2_sticky
{
background: #D0D6E6;
color: #000000;
}
Цвета, разумеется, можно подобрать по вкусу
Кроме того, в шаблоне threadbit необходимо заменить все
<td class="alt1"... и
<td class="alt2"...
НА:
<td class="$threadbitalt1"... и
<td class="$threadbitalt2"...
Кроме того, в конце шаблона threadbit есть строка, пропущенная автозаменой:
<td class="<if condition="$show['forumlink']">alt2<else />alt1</if>">
Её заменить НА:
<td class="<if condition="$show['forumlink']">$threadbitalt2<else />$threadbitalt1</if>">
Собственно, на этом всё
Хак отлаживался на линейке 3.6.х (
3.6.4 и
3.6.11 PL1), но в принципе, должен подойти и для 3.7.х.