• Фиксы ошибок от модов, исправления, доработки • 
Здесь инструкции по дружбе модов и доработки
При создании темы о модах для двигателя форумов phpBB ветки 3.0.Х название темы должно начинаться с названия мода на английском, без указания версии, затем тире, затем короткое название мода на русском с маленькой буквы. Создание тем не о модах в данном подфоруме запрещено. Посторонние темы о двиге и посторонних проблемах для ветки 3.0.Х в соседнем подфоруме. И помните - Вам тут никто ничего не должен. При малейшем "приказном" тоне в сообщениях - бан на вечно.

    Фиксы ошибок от модов, исправления, доработки

Сообщение Разместил Pthelovod 25 мар 2013, 07:57

Здесь инструкции по дружбе модов...
Что насобирал... Могут быть повторы. Закончу выкладывать все - потом проверю на повторы....

О Версиях мода с файлами именно с этого форума.
ПОМНИТЕ!!!! Скачивая и устанавливая вариант мода с файлами от этого форума вы рискуете!!!
Не имея знаний в вопросах правки и исправления глюков делать это не стоит!
1. Я не могу помнить всех нюансов и правок в моде и доработок его работы у себя на форуме!
2. Обычно все файлы мода у меня тут максимально оптимизированы, из них выкинуто все "лишнее".
3. Переводы адаптированы именно под данный форум с правилами под так называемую "тошноту".
4. Файлы стиля могут иметь CSS классы, которых нет в ваших классах CSS ваших стилей
5. В любых файлах могут находиться правки от других модов (дружбы) и даже от СЕО

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Фиксы ошибок от модов, исправления, доработки

Сообщение Разместил Татьяна5 05 фев 2017, 14:52

09 Fix от автор мода Avatar Index Viewforum v1.3.0 для уменьшения аватарок от fashion Random No Avatar v1.0.4b [Рандомный "Ноуаватар"] при установленном Avatar Index Viewforum v1.3.0 имеет небольшой глюк...
Аватары при данной правке - Дружба модов между собой (наработки) теряют соотношение сторон и авы становится чисто квадратными... Ну или такими, как выставлены размеры...
Заменить на:
Код: выделить все
//-- mod : apiv ----------------------------------------------------------------
//-- add
function user_display_avatar($row, $prefix = '', $tpl_switch, $display)
{
   if ( !$display || empty($row[$prefix . '_poster_avatar']) )
   {
      return;
   }

   global $config, $template;

   $avatar = unserialize($row[$prefix . '_poster_avatar']);
   if ( $avatar['width'] >= $avatar['height'] )
   {
      $avatar_width = ($avatar['width'] > $config['avatar_max_dimensions']) ? $config['avatar_max_dimensions'] : $avatar['width'];
      $avatar_height = ($avatar_width == $config['avatar_max_dimensions']) ? round($config['avatar_max_dimensions'] / $avatar['width'] * $avatar['height']) : $avatar['height'];
   }
   else
   {
      $avatar_height = ($avatar['height'] > $config['avatar_max_dimensions']) ? $config['avatar_max_dimensions'] : $avatar['height'];
      $avatar_width = ($avatar_height == $config['avatar_max_dimensions']) ? round($config['avatar_max_dimensions'] / $avatar['height'] * $avatar['width']) : $avatar['width'];
   }
   
   if (!$avatar_width && !$avatar_height) {
      $avatar_width = $avatar_height = $config['avatar_max_dimensions'];
   }

   $template->alter_block_array($tpl_switch, array(
      strtoupper($prefix) . '_POSTER_AVATAR' => get_user_avatar($avatar['avatar'], $avatar['type'], $avatar_width, $avatar_height),
      strtoupper($prefix) . '_POSTER_AVATAR_MARGIN' => ($avatar_width == $config['avatar_max_dimensions']) ? 5 : ($config['avatar_max_dimensions'] - $avatar_width + 5),
   ), true, 'change');
}
//-- fin mod : apiv ------------------------------------------------------------

Данная правка убивает ТРЕХ ЗАЙЦЕВ - ресайзятся обычные авы, ресайзятся рандом авы и сохраняется соотношение ав нестандартного размера ...
Татьяна5
Профессор форума
Профессор форума 

  Фиксы ошибок от модов, исправления, доработки

Сообщение Разместил Pthelovod 05 фев 2017, 14:57

11 Fix для исправления отсутствия пагинации при выводе нескольких страниц в блоке от мода NV Recent Topics v1.0.6 при установленном Zero Dupe.
Открыть index.php
Найти:
Код: выделить все
// www.phpBB-SEO.com SEO TOOLKIT BEGIN -> Zero dupe

Добавить до:
Код: выделить все
//Fix for Recent topics
$recent_topics_start = request_var('recent_topics_start', 0);
//End Fix for Recent topics

Найти:
Код: выделить все
if (!$pl) {
   $phpbb_seo->seo_chk_dupe();
}

Заменить на:
Код: выделить все
if (!$pl && !$recent_topics_start) {
   $phpbb_seo->seo_chk_dupe();
}

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Фиксы ошибок от модов, исправления, доработки

Сообщение Разместил Pthelovod 05 фев 2017, 15:00

12 Fix для исправления отсутствия смены аватары автора сообщения при смене автора сообщения в модераторском разделе при установленном моде Avatar Index Viewforum v1.3.0
(От Автора)
Открыть:
includes/mcp/mcp_post.php
Найти:
Код: выделить все
    // Resync topic/forum if needed

Добавить перед:
Код: выделить все
//-- mod : apiv ----------------------------------------------------------------
//-- add
    include $phpbb_root_path . 'includes/functions_user.' . $phpEx;
    user_update_avatar($post_info['user_id'], $userdata['user_avatar'], $userdata['user_avatar_type'], $userdata['user_avatar_width'], $userdata['user_avatar_height']);
//-- fin mod : apiv ------------------------------------------------------------

Открыть:
includes/functions_user.php
Найти:
Код: выделить все
   $avatar_info = serialize(array(
        'avatar' => $new_avatar,
        'type' => (int) $new_avatar_type,
        'width' => (int) $new_avatar_width,
        'height' => (int) $new_avatar_height,
    ));

Заменить на:
Код: выделить все
    $avatar_info = '';
    if ( !empty($new_avatar) )
    {
        $avatar_info = serialize(array(
            'avatar' => $new_avatar,
            'type' => (int) $new_avatar_type,
            'width' => (int) $new_avatar_width,
            'height' => (int) $new_avatar_height,
        ));
    }

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Фиксы ошибок от модов, исправления, доработки

Сообщение Разместил Татьяна5 05 фев 2017, 15:05

14 Дружба модов NV recent topics v1.0.6 и Topic Text in Mouse Over v1.0.6
Открыть includes/functions_recenttopics.php
Найти:
Код: выделить все
if ($display_parent_forums)
   {
      $sql_query_array['SELECT'] .= ', f.parent_id, f.forum_parents, f.left_id, f.right_id';
   }

   $sql = $db->sql_build_query('SELECT', $sql_query_array);
   $result = $db->sql_query_limit($sql, $topics_per_page);

Вставить перед:
Код: выделить все
// BEGIN Topic Text Hover Mod
         if ($config['hover_active'] && !$user->data['user_text_hover'])
         {
            include($phpbb_root_path . 'includes/topic_text_hover.' . $phpEx);
            if($config['hover_show'] == TOPIC_TEXT_HOVER_FIRST || $config['hover_show'] == TOPIC_TEXT_HOVER_BOTH)
            {
               $sql_query_array['LEFT_JOIN'][] = array('FROM' => array(POSTS_TABLE => 'p'), 'ON' => 'p.post_id = t.topic_first_post_id');
                  $sql_query_array['SELECT'] .= ', p.post_text AS first_text_hover';
            }
            if($config['hover_show'] == TOPIC_TEXT_HOVER_LAST || $config['hover_show'] == TOPIC_TEXT_HOVER_BOTH)
            {
               $sql_query_array['LEFT_JOIN'][] = array('FROM' => array(POSTS_TABLE => 'pt'), 'ON' => 'pt.post_id = t.topic_last_post_id');
               $sql_query_array['SELECT'] .= ', pt.post_text AS last_text_hover';
            }
         }
         // END Topic Text Hover Mod

Найти:
Код: выделить все
$template->assign_block_vars($tpl_loopname, array(

Вставить перед:
Код: выделить все
       // BEGIN Topic Text Hover Mod
            if (!empty($row['first_text_hover']) || !empty($row['last_text_hover']))
            {
               // strip bbcode
               include($phpbb_root_path . 'includes/topic_text_hover.' . $phpEx);         
               if(!empty($row['first_text_hover']))
               {
                  $first_text_hover = bbcode_strip($row['first_text_hover']);
                  if (utf8_strlen($first_text_hover) >= $config['hover_char_limit'])
                  {
                     $first_text_hover = (utf8_strlen($first_text_hover) > $config['hover_char_limit'] + 3) ? utf8_substr($first_text_hover, 0, $config['hover_char_limit']) . '...' : $first_text_hover;
                  }
               }
               if(!empty($row['last_text_hover']))
               {
                  $last_text_hover = bbcode_strip($row['last_text_hover']);
                  if (utf8_strlen($last_text_hover) >= $config['hover_char_limit'])
                  {
                     $last_text_hover = (utf8_strlen($last_text_hover) > $config['hover_char_limit'] + 3) ? utf8_substr($last_text_hover, 0, $config['hover_char_limit']) . '...' : $last_text_hover;
                  }
               }
            }
            else
            {
               $first_text_hover = $last_text_hover = '';
            }
            // END Topic Text Hover Mod

Найти:
Код: выделить все
'S_TOPIC_TYPE'         => $row['topic_type'],

Вставить перед:
Код: выделить все
// BEGIN Topic Post Text Mod
            'FIRST_TEXT_HOVER'   => (isset($first_text_hover)) ? censor_text($first_text_hover) : '',
            'LAST_TEXT_HOVER'   => (isset($last_text_hover)) ? censor_text($last_text_hover) : '',
            'LAST_POST_IMG'      => $user->img('icon_topic_latest'),
            // END Topic Post Text Mod

Открыть styles/ваш стиль/template/recent_topics_body.html
Найти:
Код: выделить все
href="{recent_topics.U_VIEW_TOPIC}" class="topictitle"

Вставить после;
Код: выделить все
<!-- IF recent_topics.FIRST_TEXT_HOVER -->title="{recent_topics.FIRST_TEXT_HOVER}"<!-- ENDIF -->

Найти:
Код: выделить все
href="{recent_topics.U_LAST_POST}"

Вставить после:
Код: выделить все
<!-- IF recent_topics.LAST_TEXT_HOVER -->title="{recent_topics.LAST_TEXT_HOVER}"<!-- ENDIF -->

Найти:
Код: выделить все
{LAST_POST_IMG}

Заменить на:
Код: выделить все
<!-- IF recent_topics.LAST_TEXT_HOVER -->{recent_topics.LAST_POST_IMG}<!-- ELSE -->{LAST_POST_IMG}<!-- ENDIF -->

Чистим кеши и радуемся результатам
Татьяна5
Профессор форума
Профессор форума 

  Фиксы ошибок от модов, исправления, доработки

Сообщение Разместил Pthelovod 07 фев 2017, 06:40

СОЗДАНИЕ, например, 20 штукового списка юзеров в МЕМБЕРЕ
По-хорошему надо завести в таблице _config новое значение и использовать его.
Значит так:
1) Заходишь в phpMyAdmin
2) Добавляешь в таблицу_config параметр users_per_page и ставишь значение, например, 20 (третье поле — 0)
3) Чистишь кеш конференции через админку
4) Меняешь в memberlist.php все $config['topics_per_page'] на $config['users_per_page']

или запросом
Код: выделить все
INSERT INTO phpbb_config (config_name, config_value) VALUES ('users_per_page', '20');

Потом можно сменить на любое другое запросом
Код: выделить все
UPDATE phpbb_config SET config_value = '20' WHERE config_name = 'users_per_page'

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Фиксы ошибок от модов, исправления, доработки

Сообщение Разместил Pthelovod 07 фев 2017, 07:25

От Shredder
При модерировании темы, когда выбираешь количество сообщений на странице, ставишь значение больше того что по умолчанию и нажимаешь "Перейти", то те из сообщений, которые были вновь добавлены для отображения, по какой-то непонятной причине оказываются уже отмеченными. По-моему, это серьёзный баг. Я могу начать выбирать сообщения для переноса вверху, не заметив "автоотмеченного" внизу, и затем напереношу всё что надо и не надо...
Происходит в любом стиле и браузере.

Решение от Shredder
Фикс для проблемы, о которой я писал тут, возможно, следующий (по крайней мере у меня после этого всё адекватно работает):
В includes/mcp/mcp_topic.php найти
Код: выделить все
         'S_CHECKED'         => (($submitted_id_list && !in_array(intval($row['post_id']), $submitted_id_list)) || in_array(intval($row['post_id']), $checked_ids)) ? true : false,

Заменить на:
Код: выделить все
         'S_CHECKED'         => ((!$submitted_id_list && in_array(intval($row['post_id']), $submitted_id_list)) || in_array(intval($row['post_id']), $checked_ids)) ? true : false,

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Фиксы ошибок от модов, исправления, доработки

Сообщение Разместил Pthelovod 07 фев 2017, 07:47

Изменение информации о новых ЛС другим цветом -
В overall_header.htmlнайти:
Код: выделить все
<!-- IF S_DISPLAY_PM --> (<a href="{U_PRIVATEMSGS}">{PRIVATE_MESSAGE_INFO}</a>)<!-- ENDIF -->

Заменить на:
Код: выделить все
<!-- IF S_DISPLAY_PM --><!-- IF S_USER_NEW_PRIVMSG -->(<a href="{U_PRIVATEMSGS}" style="color:#FF0000;">{PRIVATE_MESSAGE_INFO}</a>)<!-- ELSE -->(<a href="{U_PRIVATEMSGS}">{PRIVATE_MESSAGE_INFO}</a>)<!-- ENDIF --><!-- ENDIF -->

Надпись будет красной при наличии новых ЛС

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Фиксы ошибок от модов, исправления, доработки

Сообщение Разместил Pthelovod 06 мар 2017, 08:39

ССЫЛКА на СООБЩЕНИЕ ЦИТИРУЕМОЕ в полной ЦИТАТЕ
Posting.php
Код: выделить все
        $message_parser->message = '[quote=&quot;' . $post_data['quote_username'] . '&quot;]' . censor_text(trim($message_parser->message)) . "[/quote]n" ;

Replace with:
Код: выделить все
//        $message_parser->message = '[quote=&quot;' . $post_data['quote_username'] . '&quot;]' . censor_text(trim($message_parser->message)) . "[/quote]n";
        $message_parser->message = '[quote=&quot;' . '[url=' . generate_board_url() . "/viewtopic.$phpEx?p=$post_id#p$post_id" . ']' . $post_data['quote_username'] . ' &raquo; ' . $user->format_date($post_data['post_time']) . '[/url]' . '&quot;]' . censor_text(trim($message_parser->message)) . "[/quote]n";   

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Фиксы ошибок от модов, исправления, доработки

Сообщение Разместил Pthelovod 06 мар 2017, 08:52

С разрешения автора правки косяка между модами Post Expire 1.0.3 и jQuery Quick Edit FEAR93 выкладываю правки, позволяющие работать обоим модам вместе...
В файле quickedit.php
Найти:
Код: выделить все
$url_status       = ($config['allow_post_links'] && $post_data['enable_magic_url']) ? true : false;

Заменить на:
Код: выделить все
$url_status      = ($config['allow_post_links']) ? true : false;

Найти:
Код: выделить все
      // start parsing the text for the database
      $message_parser = new parse_message();
     
      $message_parser->message = $post_text;
     
      // Always check if the submitted attachment data is valid and belongs to the user.

Заменить на:
Код: выделить все
      // start parsing the text for the database
      $message_parser = new parse_message();
      $message_parser->message = $post_text;
      $post_data['topic_first_post_id'] = (isset($post_data['topic_first_post_id'])) ? (int) $post_data['topic_first_post_id'] : 0;
      $post_data['date_picker'] = '';
      $post_data['post_expire_time'] = (isset($post_data['post_expire_time'])) ? (int) $post_data['post_expire_time'] : -1;
      $post_data['post_expire_time'] = ($post_data['post_expire_time'] != 0) ? $post_data['post_expire_time'] : -1;
      $expire_default_action = -1;
      $perm_actions = array('0' => $auth->acl_get('u_post_expire_delete'), '1' => $auth->acl_get('u_post_expire_lock'), '2' => $auth->acl_get('u_post_expire_move'), '3' => $auth->acl_get('u_post_expire_lockandmove'));
      foreach ($perm_actions as $key => $value)
      {
         if ($value)
         {
            if ($key == $config['expire_default_action'])
            {
               $expire_default_action = $key;
               break;
            }
            else if ($expire_default_action == -1)
            {
               $expire_default_action = $key;
            }
         }
      }
   unset($perm_actions);
   if ($expire_default_action == -1)
   {
      $expire_default_action = 0;
   }
   $uninit = array('post_attachment' => 0, 'poster_id' => $user->data['user_id'], 'enable_magic_url' => 0, 'topic_status' => 0, 'topic_type' => POST_NORMAL, 'post_subject' => '', 'topic_title' => '', 'post_time' => 0, 'post_edit_reason' => '', 'notify_set' => 0, 'topic_expire_type' => $expire_default_action);
   foreach ($uninit as $var_name => $default_value)
   {
      if (!isset($post_data[$var_name]))
      {
         $post_data[$var_name] = $default_value;
      }
   }
   unset($uninit);
      // Always check if the submitted attachment data is valid and belongs to the user.

Найти:
Код: выделить все
      // Create the data array for submit_post

Добавить перед:
Код: выделить все
   $post_data['date_picker'] = request_var('date_picker', '');
   $post_data['post_expire_time'] = request_var('post_expire_time', -1);
   $post_data['topic_expire_type'] = request_var('topic_expire_type', $expire_default_action);
   $post_data['expire_forum_id'] = request_var('expire_forum_id', 0);
   if ($config['expire_enable'])
   {
      if(!empty($post_data['date_picker']))
      {
         $date_picker = str_replace('-', ' ', $post_data['date_picker']);
         $date_picker = str_replace(':', ' ', $date_picker);
         $date_array = explode(' ', $date_picker);
         $day = (isset($date_array[0])) ? $date_array[0] : NULL;
         $month = (isset($date_array[1])) ? $date_array[1] : NULL;
         $year = (isset($date_array[2])) ? $date_array[2] : NULL;
         (!isset($date_array[3])) ? $hour = NULL : $date_array[3] ? $hour = $date_array[3] : $hour = '00';
         (!isset($date_array[4])) ? $minute = NULL : $date_array[4] ? $minute = $date_array[4] : $minute = '00';
         $am_pm = (isset($date_array[5])) ? $date_array[5] : NULL;
         if (preg_match("/^(d{2}) (d{2}) (d{4}) ([01][0-9]|2[0-3]) ([0-5][0-9])$/", "$day $month $year $hour $minute", $matches))
         {
            if (isset($am_pm))
            {
               $am_pm = strtolower($am_pm); 
               switch ($am_pm)
               {
                  case 'am':
                     $hour = ($hour == 12) ? 0 : $hour;
                  break;
                  case 'pm':
                     $hour = ($hour == 12) ? 12 : $hour + 12;
                  break;
                  default:
                     $error[] = $user->lang['INVALID_DATE'];
                  break;
               }
            }
            if (checkdate($matches[2], $matches[1], $matches[3]))
            {
               $post_data['post_expire_time'] = gmmktime(intval($hour), intval($minute), 0, intval($month), intval($day), intval($year)) - (time() + $user->timezone + $user->dst);
               if ($post_data['post_expire_time'] < 0)
               {
                  $error[] = $user->lang['PAST_DATE'];
               }
            }
            else
            {
               $error[] = $user->lang['INVALID_DATE'];
            }       
         }
         else
         {
            $error[] = $user->lang['INVALID_DATE'];
         }
      }
      if (intval($config['expire_max_time']) != 0 && (intval($post_data['post_expire_time'])) > intval($config['expire_max_time'])*86400)
      {
         $error[] = sprintf($user->lang['MAX_DATE'], $config['expire_max_time']);
      }
      if($post_data['post_expire_time'] == -1)
      {
         $post_data['topic_expire_type'] = $expire_default_action;
         $post_data['expire_forum_id'] = 0;
      }
      else if ($post_data['post_expire_time'] != -1 && ($post_data['topic_expire_type'] == 0 || $post_data['topic_expire_type'] == 1))
      { 
         $post_data['expire_forum_id'] = 0;
      }
      if ($post_data['post_expire_time'] != -1 && $post_data['expire_forum_id'] == 0 && ($post_data['topic_expire_type'] == 2 || $post_data['topic_expire_type'] == 3) && $post_data['topic_first_post_id'] == $post_id)
      {
         if (!$auth->acl_get('u_post_expire_only'))
         {
            $error[] = $user->lang['MOVE_UNABLE'];
         }
      }
   }

Найти и удалить:
Код: выделить все
          'topic_poster'      => $post_data['topic_poster'],

Найти:
Код: выделить все
       // Other Options
          'post_edit_locked'  => $post_data['post_edit_locked'],

Добавить после:
Код: выделить все
          'post_expire_time'      => ($post_data['post_expire_time'] != -1) ? (int) $post_data['post_expire_time'] : -1,
         'topic_expire_type'      => (int) $post_data['topic_expire_type'],
         'expire_forum_id'      => (int) $post_data['expire_forum_id'],

Найти:
Код: выделить все
         * $username is set to $user->data['username'] as we don't need the clean username for the logs
         */
         submit_post('edit', $post_data['post_subject'], $post_data['username'], $post_data['topic_type'], $poll, $data);

Заменить на:
Код: выделить все
         * $username is set to $user->data['username'] as we don't need the clean username for the logs
         */
         submit_post('edit', $post_data['post_subject'], $user->data['username'], $post_data['topic_type'], $poll, $data);

Оба указанных мода будут работать на форуме вместе...удачи..И спасибо FEAR93 еще раз за такую профессиональную работу ...

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 

  Фиксы ошибок от модов, исправления, доработки

Сообщение Разместил Pthelovod 06 мар 2017, 08:57

ДРУЖБА jQuery Quick Edit и Topic Title Colour (после правки исчезает намеченный цвет названия темы)
В файле - quickedit.php
Найти:
Код: выделить все
          'topic_title'       => $post_data['topic_title'],

Добавить после:
Код: выделить все
         'topic_title_colour'       => $post_data['topic_title_colour'],

Найти:
Код: выделить все
         add_log('mod', $post_data['forum_id'], $post_data['topic_id'], 'LOG_POST_EDITED', $post_data['topic_title'], (!empty($post_data['username'])) ? $post_data['username'] : $user->lang['GUEST']);

Найти в строке:
Код: выделить все
$post_data['topic_title'],

Добавить в строку после:
Код: выделить все
 $post_data['topic_title_colour'],

Pthelovod
Александр (можно Николаич)
Александр (можно Николаич) 
Предыдущая страница
Следующая страница

Вернуться в Коды и модификации для движка phpBB версий до 3.0.Х