[FAQ] Вопросы и ответы по Модам и околоМодные вопросы

Автор digger®, 09 мая 2009, 00:20:38

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.


digger®

#1
Q: Мод затрагивает движок, и последующая накладка патча на движек может вызвать большие проблемы. Насколько эти слова правдивы?
A: мод это всего лишь дополнение к функциональности форума если ваш мод не затрагивал базу данных т.е. не создавал дополнительных таблиц то никаких проблем не должно быть. Единственно, при обновлении придется ставить все моды заново, правда они должны быть совместимы с версией форума. Некоторые моды имеют баги и соответственно нужно следить за обновлениями не только форума но и модов. Были случаи когда из за бага в моде ломали сам форум.
В общем, мод не является проблемой... После обновления как правило приходится и обновлять все моды, потому как большую часть файлов просто заменяется. Хотя в принципе если обновления проходят в одной линейки т.е. правятся те или иные баги то иногда выпускаются обновления в виде модов .


Q: Насколько совместимы моды от предыдущих версий с последней ???
A: Далеко не все, потому как код версий отличен в принципе. При желании можно посидеть и адаптировать все моды, но порою некоторые со временем просто включаются в поставку самого форума.


Q: Есть ли такой мод, чтобы выводил упрощенную версию форума для наладонников?
А: http://твой домен/__forum/index.php?imode
http://твой домен/__forum/index.php?wap
http://твой домен/__forum/index.php?wap2


Q: Есть ли мод аськи для форума?например,чтобы можно было получать и отправлять сообщения в онлайне?
A: Нет. Есть незаконченная бета-версия для Jabber.


Q: Существует ли мод облегчающий работу с правами доступа ?
т.е. в частности интересует следующее:
* создаю раздел "Test"
* настраиваю различные права доступа для групп
* далее создаю еще штук 20 разделов

далее приходится переносить в каждый раздел права как у "Test"
интересует решение чтобы выбранным разделам перенести права с  "Test" одним махом

A: стандартными способами! читаем доку по данному вопросу http://www.simplemachines.ru/index.php?topic=1063.0
Выбираем группы пользователей в крайнем правом столбце, на которые мы хотим скопировать уже установленные права для группы "Обычные пользователи". По окончанию данной операции выбираем пункт дополнительного меню "Установить права доступа как у этой группы" выбираем группу  "Обычные пользователи" и жмем "Сохранить". Результат данной операции – все выбранные группы имеют аналогичные права, что и группа "Обычные пользователи". Согласно данного примера можно также скопировать права доступа с раздела на раздел, только вот выбрать нужно будет пункт дополнительного меню "Копировать права доступа с этого раздела".
читайте внимательно ! обратите внимание на последние строки
Согласно данного примера можно также скопировать права доступа с раздела на раздел, только вот выбрать нужно будет пункт дополнительного меню "Копировать права доступа с этого раздела".
Q: дык.. это понятно
вопрос то был про массовый перенос прав, а не по одному переносить (исключительно для разделов)
A: зайти и скопировать права этого вполне достаточно! даже на большом форуме где порядка 200 разделов! Знаю по собственному опыту потому как прописывал права для одного из крупнейших форумов России


Q: Подскажите,плз,чем архивировать в .tar.gz?
В .tar то 7zip жмет,а вот в .gz?
И обязательно ли такое сжатие для мода?
A: вообще то хватит и обычного zip. tar.gz - обычно используют в *nix подобных системах


Q: Может кто видел сабж... типа как на других движках чтоб выводить где-нить справа номер поста по теме..
A: Чем не устраивает стандартный вывод количества ответов в теме ??
Сообщение -- Ответ #XX


Q: Можно ли модифицировать форум так, чтобы все вложения которые оставляют  пользователи автоматически помещались в каталог загрузки созданный Download 1.1 RC2 или SimpleDownload 1.1.1. И если можно там же добавить вкладку описание файла? Есть ли такой мод?
A: Admin - Attachments and Avatars - Attachment directory [x:homelocalhostwww/attachments] Выставляешь ту директорию, которая тебе нужна.


Q: Есть такой мод, чтобы пользователи видели своих героев, а не только админы и модеры? Например, вот на этом форуме внизу надпись - Powered by и под ней чтобы была строчка "Блокированные пользователи и хосты". И там табличка: дата бана, имя юзера или IP, причина бана, когда истекает бан.
A: Есть мод Banlist http://custom.simplemachines.org/mods/index.php?mod=1198
Добавляет в меню форума дополнительный раздел где пользователи могут видеть список банов.


Q: У меня установлены 2 языка на форуме. Включена возможнсть пользователю выбирать язык самостоятельно. Где находиться меню выбора?
A:
1. Пользователь может выбирать язык в своем профиле
Профиль -> Настройки учетной записи -> Предпочитаемый язык  - выбираешь язык интерфейса какой нужен.
2. Для того чтобы упростить задачу в переключении языка, можно выполнить следующие действия
http://www.simplemachines.ru/index.php?topic=10.0
3. Мод Language Drop Down


Q: При переключении языка сбивается кодировка русских надписей (название форума). Возможно установить одну кодировку для обеих версий?
A: В файле Themes/default/languages/index.english.php
Найти
$txt['lang_character_set'] = 'ISO-8859-1';
Заменить на
$txt['lang_character_set'] = 'windows-1251';
или
$txt['lang_character_set'] = 'utf-8';

Для SMF2 после этого потребуется очистка кэша в обслуживании форума.


Q: Ищу мод репутации
A:
Для SMF1 - Karma Description Mod http://www.simplemachines.ru/index.php?topic=353.0
Для SMF2 - Advanced Reputation System http://custom.simplemachines.org/mods/index.php?mod=1129


Q: Как вручную установить мод?
A: Нужно открывать файл ***.xml который входит в архив с модом, смотреть какие изменения он делает и вручную править файлы форума. Проще всего, поставить его на стандартный шаблон и довнести в ваша_тема_оформления.template.php нужные изменения.
На http://custom.simplemachines.org/mods можно получить код для ручной установки выбранного мода для нужной версии SMF.


Q: Как сделать, чтоб при написании ответов кем-либо из форума ответ принимал вид: определенные сочетания букв становились большими, например сочетание букв СЛ:   я СЛез со стола поСЛе этого СЛедовало СЛедующее действие...
A: Посредством автозамены Нецензурных слов. Настраивается в админке в разделе "Сообщения и темы"


Q: Есть на форуме стандартная пунктуация: можно сделать так, что бы при вводе определенных букв они сменялись на другие...
Есть вопрос: существует ли мод, который может заменять не буквы на буквы при наборе сообщения а буквы на картинку? например в слове дарк крю сделать вместо буквы К рисунок...
A: В автозамене пишете
дарк крю => дарк рю


Q: Как убрать проверку статуса ICQ?
A: В Load.php найти

'icq' => $profile['ICQ'] != '' && (empty($modSettings['guest_hideContacts']) || !$user_info['is_guest']) ? array(
         'name' => &$profile['ICQ'],
         'href' => 'http://www.icq.com/whitepages/about_me.php?uin=' . $profile['ICQ'],
'link' => '<a href="http://www.icq.com/whitepages/about_me.php?uin=' . $profile['ICQ'] . '" target="_blank"><img src="http://status.icq.com/online.gif?img=5&amp;icq=' . $profile['ICQ'] . '" alt="' . $profile['ICQ'] . '" width="18" height="18" border="0" /></a>',
         'link_text' => '<a href="http://www.icq.com/whitepages/about_me.php?uin=' . $profile['ICQ'] . '" target="_blank">' . $profile['ICQ'] . '</a>',
      ) : array('name' => '', 'add' => '', 'href' => '', 'link' => '', 'link_text' => ''),


заменить на


'icq' => $profile['ICQ'] != '' && (empty($modSettings['guest_hideContacts']) || !$user_info['is_guest']) ? array(
         'name' => &$profile['ICQ'],
         'href' => '',
'link' => '<img src="' . $settings['images_url'] . '/icq.gif" alt="' . $profile['ICQ'] . '" title="' . $profile['ICQ'] . '" border="0" />',
         'link_text' => $profile['ICQ'],
      ) : array('name' => '', 'add' => '', 'href' => '', 'link' => '', 'link_text' => ''),


и в Тема_оформления/images/  кинуть icq.gif


Q: Возможно ли сделать, чтобы внутренние (по форуму) ссылки открывались в том же окне, внешние - в новом?
А: Мод Internal Links Use Same Window


Q: Как добавить дополнительные поля при регистрации участника? Есть такой мод?
A:
Для SMF1 - мод Custom Profile Field
В SMF2 - стандартная опция.


Q: В логах ошибок форума постоянно сыпятся сообщения типа:
Undefined index: xyz
Файл: /xxx/yyy/zzz/Sources/Something.php
A: Как правило, это вызвано отсутствующими текстовыми переменными, которые пытается использовать мод. Если язык форума русский, то следует добавить в Modifications.russian.php или в index.russian.php строку
$txt['xyz'] = 'Ожидаемый текст';



Q: Возможно ли расшифровать пароли пользователей хранящиеся в базе?
A: http://www.simplemachines.ru/index.php/topic,2661.0.html


Q: Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 3200 bytes) in /.../.../xxx.php on line  yyy

с чем это связано?


A: Для выполнения php-скриптом xxx.php действия в строке yyy недостаточно памяти выделяемой php для работы скриптов. Лимит памяти задается в файле конфигурации php.ini параметром memory_limit. Также можно увеличить лимит  вписав в .htaccess строку php_value memory_limit ​xxM (вместо xx - необходимое количество мегабайт), если эта возможность доступна.


Q: Как получить список последних сообщений форума через SSI и отобразить их в произвольном виде? Заодно хотелось бы перекодировать текст, т.к. форум в UTF-8, а сайт Win-1251.
A:

<?php
require($_SERVER['DOCUMENT_ROOT'] .'/forums/SSI.php');
$recentTopics ssi_recentTopics('10','','array');
$out ='';

// Выбираем из массива нужные элементы, все можно посмотреть в SSI.php. Форматируем вывод как хочется
foreach($recentTopics as $recentTopic)
{
$out .= $recentTopic['board']['name'];
$out .= $recentTopic['subject'];
$out .= $recentTopic['poster']['name'];
$out .= '<BR />';
}

// Выводим перекодированный вариант UTF-8 -> 1251
echo iconv("UTF-8""CP1251//IGNORE"$out);;
?>




Q: Установил нерусифицированный мод на русифицированный форум. Нигде не видно настроек мода или галочки есть - надписей нет.
A: Если переключить язык форума на английский, то все появится.
Можно установить мод Load Standard Language, тогда на русифицированном форуме непереведенные фразы из модов будут отображаться на английском.
Ну и последний вариант - найти русифицированную версию мода или русифицировать самому, это не сложно.


Q: Как добавить новую кнопку в меню навигации форума.
A:
Custom Tab
Menu Buttons
Website Button
Your Button


Q: как убрать "Re:" в сообщениях
A: В index.russian.php поменять
$txt['response_prefix'] = 'Re: ';
на
$txt['response_prefix'] = '';


Q: В SMF2 при изменении строк в языковых файлах на форуме остаются прежние.
A: Если включено кэширование в настройках форума, то языковые строки тоже кэшируются.
Необходимо очистить кэш - Обслуживание форума / Очистить файл кэша.


Q: Добавил новый BB-код, создал для него кнопку в панели ответа, привязал к ней подсказку, как добавить картинку для кнопки?
A: Создать картинку с расширением gif и именем таким же как у нового BB-кода и положить в /Themes/default/images/bbc


Q: Как убрать автоматическую подстановку http:// для нестандартных протоколов, например magnet-ссылок?
A: Мод Alternativ Protocol Fix


Q: Как вставить приаттаченные изображения в произвольные места сообщения?
A:
Мод Attachments In Message
Мод Attachments Positioning


Q: Как можно запретить регистрацию пользователей например с mail.ru?
A: Мод Restrict Email Providers on Registration


Q: Есть мод, который показывает первый пост на всех страницах топика?
A: TopFirstPost


Q: Как организовать подсветку кода для разных языков программирования?
A: Мод SMF Syntax Highlighter


Q: Как организовать вывод более десяти страниц последних сообщений форума?
A: В Recent.php
поменять

if (isset($_REQUEST['start']) && $_REQUEST['start'] > 95)
$_REQUEST['start'] = 95;

на

if (isset($_REQUEST['start']) && $_REQUEST['start'] > 995)
$_REQUEST['start'] = 995;

поменять

// !!! This isn't accurate because we ignore the recycle bin.
$context['page_index'] = constructPageIndex($scripturl . '?action=recent', $_REQUEST['start'], min(100, $modSettings['totalMessages']), 10, false);

на

// !!! This isn't accurate because we ignore the recycle bin.
$context['page_index'] = constructPageIndex($scripturl . '?action=recent', $_REQUEST['start'], min(1000, $modSettings['totalMessages']), 10, false);

Будет выводиться 100 страниц последних сообщений форума.


Q: Как создавать страницы на движке форума?
A:
Custom Action Mod
Bakers Dozen Pages
Custom Pages
Pages Mod


Q: Как осуществить обтекание картинки текстом?
A: Мод Wrap Text Around Image


Как вставить картинку из вложения в произвольное место сообщения?


Q: Вопрос по ссылкам: Видел такую фишку: если ссылка слишком длинная, она укорачивается т.е. например запись
[url]http://somesite.com/index.php?option=com_content&view=article&id=47&Itemid=57[/url]
заменяется на
[url=http://somesite.com/index.php?option=com_content&view=article&id=47&Itemid=57]http://somesite.com/index.php?o...temid=57[/url]
Можно ли такое реализовать в SMF?

A: Мод TrimUrl.


Q: После ручной правки файлов форума перестала работать Капча (Captcha), форум в utf-8.
A: Не пользуйтесь стандартным Notepad для работы с файлами форума. Он добавляет дополнительную сигнатуру BOM в заголовки файлов, которая нарушает работу некоторых функций форума, таких как капча. Пользуйтесь специализированными редакторами такими как Notepad++, PSPad, RJ TextED.
Для поиска BOM в файлах можно воспользоваться скриптом http://www.simplemachines.org/community/index.php?topic=329069.0.

digger®

По умолчанию подсчёт статистики сделан таким образом, что подсчёт идёт максимум на 2 уровня вглубь, чтобы форум не тормозил на этом сложном запросе. Как сделать чтобы считались все?
Подробное освещение проблемы тут.


В Sources/Subs-BoardIndex.php
найти
            LEFT JOIN {db_prefix}collapsed_categories AS cc ON (cc.id_cat = c.id_cat AND cc.id_member = {int:current_member})' : '')) . '
            LEFT JOIN {db_prefix}moderators AS mods ON (mods.id_board = b.id_board)
            LEFT JOIN {db_prefix}members AS mods_mem ON (mods_mem.id_member = mods.id_member)
      WHERE {query_see_board}' . (empty($boardIndexOptions['countChildPosts']) ? (empty($boardIndexOptions['base_level']) ? '' : '
          AND b.child_level >= {int:child_level}') : '
          AND b.child_level BETWEEN ' . $boardIndexOptions['base_level'] . ' AND ' . ($boardIndexOptions['base_level'] + 1)),

заменить на
            LEFT JOIN {db_prefix}collapsed_categories AS cc ON (cc.id_cat = c.id_cat AND cc.id_member = {int:current_member})' : '')) . '
            LEFT JOIN {db_prefix}moderators AS mods ON (mods.id_board = b.id_board)
            LEFT JOIN {db_prefix}members AS mods_mem ON (mods_mem.id_member = mods.id_member)
                WHERE {query_see_board}',

Найти там же
                // Found a child of a child - skip.
              else
                      continue;

и закомментировать.

Для SMF2 есть готовый мод Count descendant's posts для включения подсчета неограниченной вложенности.

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


digger®

#3
Есть два элементарных варианта:

1. В нужном месте шаблона после ; завершающей строку вставляем
?>коды счетчиков<?php

2. В нужном месте шаблона после ; завершающей строку вставляем
include_once('counters.php');
В корне форума создаем файл counters.php и туда вставляем код счетчиков.

Таким же образом можно вставить баннеры и прочие сторонние объекты.

digger®

Рассмотрим русификацию на примере мода 'Custom Actions'.
1) Распаковываем архив с модом.
2) В архиве обычно файлы:
package-info.xml - это файл с информацией о моде
modification.xml или install.xml или что-то подобное - это установщик мода, его и будем редактировать.
3) Открываем текстовым редактором файл с установщиком (если ваш форум в utf-8, требуется редактор умеющий работать с юникодом) и ищем в нем секцию вида

<file name="$languagedir/***.english.php">
<operation>
<search position="end"></search>
<add><![CDATA[
$txt['custom_action_shorttitle'] = 'Custom Actions';
]]></add>
</operation>
</file>

4) Cоздаем копию этой секции и переименовываем в

<file name="$languagedir/***.russian.php">
<operation>
<search position="end"></search>
<add><![CDATA[
$txt['custom_action_shorttitle'] = 'Custom Actions';
]]></add>
</operation>
</file>

(если форум в utf-8, то переименовываем в ***.russian-utf8.php)
5) Ищем в переименованной секции внутри блока <add></add> все переменные вида $txt['***']='что-то'
и меняем 'что-то' на русский эквивалент, получается

<file name="$languagedir/***.russian.php">
<operation>
<search position="end"></search>
<add><![CDATA[
$txt['custom_action_shorttitle'] = 'Настраиваемые действия';
]]></add>
</operation>
</file>

6) Ищем все остальные секции <file name="$languagedir/***.english.php"> и поступаем с ними также.
7) Запаковываем обратно в архив и устанавливаем на форум.


digger®

Как сделать чтобы пользователям/гостям были видны названия разделов к которым у них нет доступа.
При этом им, также, будет видно названия последних сообщений в этих разделах.
Зайти в эти разделы или прочитать сообщения они все равно не смогут.

В /Sources/Subs-BoardIndex.php

найти
WHERE {query_see_board}' . (empty($boardIndexOptions['countChildPosts']) ? (empty($boardIndexOptions['base_level']) ? '' : '
заменить на
WHERE 1=1' . (empty($boardIndexOptions['countChildPosts']) ? (empty($boardIndexOptions['base_level']) ? '' : '

Также, есть моды View Only Boards и View/Enter Board Permissions


digger®

Если форум в кодировке windows-1251, то для того чтобы русские ники нормально генерировались, нужно в файле class_ulogin.php

после $username = substr($this->__fetch_random_name(), 0, 25);

добавить
global $context;
if ($context['character_set'] == 'windows-1251') $username = iconv('UTF-8', 'CP1251//IGNORE', $username);

digger®

Чтобы в нике сначала стояло имя, а потом фамилия, нужно в файле class_ulogin.php

заменить $name = $this->user->last_name . '_' . $this->user->first_name;

на $name = $this->user->first_name . '_' . $this->user->last_name;



digger®

#12
Как можно изменить шаблоны почтовых сообщений?

Можно отредактировать вручную. Шаблоны писем находятся в файле /Themes/default/languages/EmailTemplates.russian-utf8.php или EmailTemplates.russian.php (в зависимости от кодировки форума)
Или установить мод Email Template Editor

digger®

Мод не ставится, потому что предназначен для более старой/новой версии форума чем у меня, но я уверен что он заработает. Что мне сделать?

Ищем в моде файл packages-info.xml. открываем любым текстовым редактором и ищем строки install for="1.1" - что то похожее и либо убираем вообще for="..."  либо меняем на "1.1 - 1.1.99" или "2.0 - 2.0.99".
Это на свой страх и риск, потому что никто не даст 100% гарантии что мод заработает или не перестанет работать что-то другое.
Для SMF1 есть мод эмуляции версии Version Emulate Dropdown чтобы не править моды.

У SMF2 в менеджере пакетов внизу есть блок "Эмуляция версий", в котором можно включить эмуляцию любого номера версии и не править сами моды. Проще всего, выставить там версию SMF 2.0 и сбрасывать только во время обновления форума.


digger®

Как уменьшить шаг изменения уровня предупреждений? Сейчас шаг 5, нужно сделать 1 или произвольное число.

В Profile.template.php
найти
onclick="changeWarnLevel(-5);
и
onclick="changeWarnLevel(5);

заменить на
onclick="changeWarnLevel(-1);
и
onclick="changeWarnLevel(1);

Вместо 1 можно выставить любое значение от 1 до 100.

digger®

Как избавиться от сообщения "Длина слова должна быть хотя бы в два символа" при использовании поиска?

Установить мод Minimum Characters for Search и задать в настройках поиска минимальное количество символов = 1.


digger®

Как включить для всех пользователей отображение личных сообщений в виде диалога?

Режим отображения ЛС в виде диалога включается в настройках ЛС каждого пользователя
Личные сообщения - Изменить настройки - Отображение личных сообщений: В виде диалога
Для того, чтобы установить нужное значение для всех пользователей сразу, есть мод PM Settings.


digger®

Список игнорируемых пользователей ограничен по количеству, как сделать данный список неограниченным?

Следует увеличить размер поля pm_ignore_list в таблице smf_members

Нужно выполнить в PhpMyAdmin следующий запрос:
ALTER TABLE  `smf_members` CHANGE  `pm_ignore_list`  `pm_ignore_list` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT  ''

digger®

Если скачиваются исходники через "Download ZIP", то нужно перепаковать архив без папки.
Если у мода есть релизы, то нужно скачивать "Source code (tar.gz)" нужной версии со страницы Releases, он будет ставится без перепаковки.

digger®

#21
Как в моде Optimus Brave убрать нумерацию с первой страницы темы/раздела?


В файле Subs-Optimus.php
найти
if (!empty($context['page_info']['current_page']) && $context['page_info']['num_pages'] != 1)заменить на
if (!empty($context['page_info']['current_page']) && $context['page_info']['num_pages'] != 1 && $context['page_info']['current_page'] != 1)
В последних версиях Optimus это встроенная функция

digger®

При просмотре некоторых файлов в галерее Aeva Media ошибка ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION в Google Chrome и основанных на его движке других браузерах.

В Aeva-Gallery.php найти строку
header('Content-Disposition: inline; filename=' . $filename);
заменить на
header('Content-Disposition: inline; filename="' . $filename . '"');