Как правильно установить мод

Проблемы с установкой или работой phpBB 3.0.х. Решение проблем связанных с модами, стилями, доработками и так далее.
Аватара пользователя
Slash
Администратор
Сообщения: 2031
Поблагодарили: 62 раза

Как правильно установить мод

Сообщение Slash » Вс авг 12, 2012 11:11 am

В этой теме рассматриваем установку модов, как в ручную так и с помощи АвтоМода.
Что необходимо для установки:
1. Тестовый редактор, рекомендую использовать Notepad++ в нём есть возможность сохранять файл в кодировке: UTF-8 без BOM.
2. Мод который надо установить, инструкцию установки к нему.
3. Естественно руки и желание.

Внимательно изучаем статью: http://www.phpbbguru.net/community/topic20956.html
Находим интегрирующий Вас мод актуальной версии, скачиваем. Открываем архив, в архиве находятся:
contrib - папка инструкций для обновления или дружбы модов.
root - папка с файлами, которык необходимо разместить в соответствуещие места.
install.xml - сама инструкция, все изменения необходимо выполнять по этому файлу. (название может меняться в зависимости названия мода)
license.txt - лицензия на мод.
modx.prosilver.en.xsl - таблица стилей.

Далее: открываем инструкцию установки мода install.xml с помощи Notepad++ и видим код из множества тегов, где это: <copy> - говорит о переносе файлов в соответствующие места:

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

         <file from="root/toplist.php" to="toplist.php"/>

значит файл: toplist.php переносим в корень форума, там где файл config.php.

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

         <file from="root/adm/style/acp_thanks.html" to="adm/style/acp_thanks.html"/>

говорит о переносе файла: acp_thanks.html в папку: adm/style/.

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

         <file from="root/umil/*.*" to="umil/*.*"/>

говорит о том, что папку: umil, вместе со всем содержимым надо перенести в корень форума.
</copy> - значит больше нет копируемых файлов.

Далее видим код:

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

        <open src="index.php">
            <edit>
                <find><![CDATA[// Assign index specific vars]]></find>
                <action type="before-add"><![CDATA[// Generate thankslist if required ...
$thanks_list = '';
$ex_fid_ary = array_keys($auth->acl_getf('!f_read', true));
$ex_fid_ary = (sizeof($ex_fid_ary)) ? $ex_fid_ary : 0;
if ($config['thanks_top_number'])
{
    $sql = 'SELECT t.poster_id, COUNT(t.user_id) AS tally, u.user_id, u.username, u.user_colour
        FROM ' . USERS_TABLE . ' u 
        LEFT JOIN ' . THANKS_TABLE . ' t ON (u.user_id = t.poster_id)
        WHERE ' . $db->sql_in_set('t.forum_id', $ex_fid_ary, true) . '
        GROUP BY t.poster_id 
        ORDER BY tally DESC';
    $result = $db->sql_query_limit($sql, $config['thanks_top_number'], 0);    

    while ($row = $db->sql_fetchrow($result))
    {
        $thanks_list .= (($thanks_list != '') ? ', ' : '') . get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']) . ' (' . $row['tally'] . ')';
    }
    $db->sql_freeresult($result);
}]]></action>
            </edit>

теперь подробно:
<open src="index.php"> - говорит нам, что надо открыть файл: index.php
<find><![CDATA[// Assign index specific vars]]></find> - найти нужную строчку, в данном случаи это: // Assign index specific vars

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

                <action type="before-add"><![CDATA[// Generate thankslist if required ...
$thanks_list = '';
$ex_fid_ary = array_keys($auth->acl_getf('!f_read', true));
$ex_fid_ary = (sizeof($ex_fid_ary)) ? $ex_fid_ary : 0;
if ($config['thanks_top_number'])
{
    $sql = 'SELECT t.poster_id, COUNT(t.user_id) AS tally, u.user_id, u.username, u.user_colour
        FROM ' . USERS_TABLE . ' u 
        LEFT JOIN ' . THANKS_TABLE . ' t ON (u.user_id = t.poster_id)
        WHERE ' . $db->sql_in_set('t.forum_id', $ex_fid_ary, true) . '
        GROUP BY t.poster_id 
        ORDER BY tally DESC';
    $result = $db->sql_query_limit($sql, $config['thanks_top_number'], 0);    

    while ($row = $db->sql_fetchrow($result))
    {
        $thanks_list .= (($thanks_list != '') ? ', ' : '') . get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']) . ' (' . $row['tally'] . ')';
    }
    $db->sql_freeresult($result);
}]]></action>

эта команда говорит нам, что вот это:

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

// Generate thankslist if required ...
$thanks_list = '';
$ex_fid_ary = array_keys($auth->acl_getf('!f_read', true));
$ex_fid_ary = (sizeof($ex_fid_ary)) ? $ex_fid_ary : 0;
if ($config['thanks_top_number'])
{
    $sql = 'SELECT t.poster_id, COUNT(t.user_id) AS tally, u.user_id, u.username, u.user_colour
        FROM ' . USERS_TABLE . ' u 
        LEFT JOIN ' . THANKS_TABLE . ' t ON (u.user_id = t.poster_id)
        WHERE ' . $db->sql_in_set('t.forum_id', $ex_fid_ary, true) . '
        GROUP BY t.poster_id 
        ORDER BY tally DESC';
    $result = $db->sql_query_limit($sql, $config['thanks_top_number'], 0);    

    while ($row = $db->sql_fetchrow($result))
    {
        $thanks_list .= (($thanks_list != '') ? ', ' : '') . get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']) . ' (' . $row['tally'] . ')';
    }
    $db->sql_freeresult($result);
}

необходимо вставить перед строчкой: // Assign index specific vars

В теге <action> элемент type="before-add" может меняться в зависимости от задания:
Add after - Добавить после
Add before - Добавить перед
Replace With - Заменить

После внесенных изменений может потребоваться выполнить запрос в базу данных (БД), эта команда выглядит таким образом: <php-installer><![CDATA[install_thanks_mod.php]]></php-installer> - значит переходим в браузере по адресу: (http://сайт.ру/install_thanks_mod.php) и следуем инструкции. Однако выполнения запроса может выглядеть и по другому, например так:

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

        <sql><![CDATA[INSERT INTO phpbb_config (config_name, config_value) VALUES ('enable_post_num', '0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('enable_post_num_js', '0');]]></sql>

говорит о том, что запрос:

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

INSERT INTO phpbb_config (config_name, config_value) VALUES ('enable_post_num', '0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('enable_post_num_js', '0');

необходимо выполнить в ручную, например через phpMyAdmin

После этого обновить кеш, темы и набор рисунков. А так же если потребуется выставить права доступа для установленного мода.
Мод установлен и готов служить Вам!
Редактированные файлы необходимо сохранять в UTF-8 (без BOM), подробнее об этом здесь: Re: [FAQ] Часто задаваемые вопросы по phpBB 3.0.х

Так же читайте:
Как искать часть кода
Реклама

Вернуться в «phpBB»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость