Полезная информация


----

Начать новую тему Ответить на тему
АвторСообщение

 Сообщение Сео-оптимизация phpbb3 2011-11-30

Аватар пользователя

Введение. В сети множество мануалов по этой теме, вот и я решил немного написать об этом. Под сео-оптимизацией я понимаю такие улучшения форума, которые помогают поисковым системам быстрее и качественней индексировать форум, и как следствие лучшие выдачи в поисковых запросах. Впринципе не будем заморачиваться именно на всех тонкостях, расскажу о оптимизации заголовков и метатегов.
Внимание !!!Если вы не боитесь ковырять код форума, то вам следует пропустить первый шаг(установку мода) и обратить внимание на модификации и и , так как с помощью них вы можете вручную задать нужные описания и ключевые слова, мод представленный ниже делает это автоматически, но в результате можете получить кашу из тегов и не ахти какие популярные ключевые слова !!! А так же в любом случае нужно установить мод карты сайта (сайтмап, sitemap) для ускорения индексации форума поисковиками -

Шаг 1. Метатеги. Автоматический вывод метатегов и заполнение их.
Что такое метатеги ??? А метатеги это необязательные теги языков HTML и XMTL, которые не преднаназчены для посетителей сайта, они направлены на поисковые машины. К оформлению метатегов нужно отнестись очень серьезно, т.к. их поисковики используют в сниппетах, то есть показывают его содержимое в результатах поиска в качестве описания страницы. От того, насколько это описание соответствует тому, что ищет пользователь, во многом зависит, перейдет ли он на ваш сайт или на соседний в результатах поиска.

В стандартной, чистой инсталке форума метатеги забиты жестко, регулируются прямыми правками в файлах и отображаются для всех страниц тем одинаковыми. Представьте себе сколько форумов-клонов с мире с одинаковыми метатегами ??? Коллосальное число, оптимизации ноль, шансы перед поисковиками равны. С модом, описанным ниже, ваши позиции возрастут по сравнению с неоптимизированными форумами.

Установка.
Скачать и установить по инструкции мод из архива
Вложение :
Advanced Meta Tags.rar [29.42 KiB]
Скачиваний: 384


A Обратите внимание !!!
Сразу же в процессе установки мода нам надо решить проблему с тем, что мод не выводит русские ключевики.
Решение под спойлером
Решение - открыть includes/functions.php (перед правкой установить кодировку данного файла в UTF-8 без BOOM) и найти
 // Advanced Meta Tags MOD
   $page_keywords = $config['global_keywords'];
   $page_description = $config['site_desc'];
   
   if (!empty($post_text))
   {
      $post_text = strtolower(strip_tags($post_text));
      $post_text = str_word_count($post_text, 1);
      if ($config['use_dynamic_keywords'])
      {
         $count = 0;
         $page_keywords = array();
         foreach ($post_text as $word)
         {
            $word = str_replace("'", '', $word);
           
            if (strlen($word) > 2)
            {
               if (!empty($page_keywords) && in_array($word, $page_keywords))
               {
                  continue;
               }
               $page_keywords[] = $word;
               $count++;
            }
           
            if ($count == $config['keyword_word_count'])
            {
               break;
            }
         }
         $config_keywords = ($config['append_global_keywords']) ? $config['global_keywords'] : '';
         $page_keywords = ($config['append_keywords_first']) ? $config_keywords . ', ' . implode(', ', $page_keywords) : implode(', ', $page_keywords) . ', ' . $config_keywords;
      }
     
      if ($config['use_dynamic_description'])
      {
         $count = 0;
         $page_description = '';
         foreach ($post_text as $word)
         {
            $page_description .= $word . ' ';
            $count++;
           
            if ($count == $config['description_word_count'])
            {
               break;
            }
         }
      }
   }
 

Заменить найденное на
       // Meta Keywords MOD 2.0
       $stopwords = array("/^about$/","/^1$/","/^after$/","/^2$/","/^all$/","/^also$/","/^3$/","/^an$/","/^4$/","/^and$/","/^5$/","/^another$/","/^6$/","/^any$/","/^7$/","/^are$/","/^8$/","/^as$/","/^9$/","/^at$/","/^0$/","/^be$/","/^$$/","/^because$/","/^been$/","/^before$/","/^being$/","/^between$/","/^both$/","/^but$/","/^by$/","/^came$/","/^can$/","/^come$/","/^could$/","/^did$/","/^do$/","/^each$/","/^for$/","/^from$/","/^get$/","/^got$/","/^has$/","/^had$/","/^he$/","/^have$/","/^her$/","/^here$/","/^him$/","/^himself$/","/^his$/","/^how$/","/^if$/","/^in$/","/^into$/","/^is$/","/^it$/","/^like$/","/^make$/","/^many$/","/^me$/","/^might$/","/^more$/","/^most$/","/^much$/","/^must$/","/^my$/","/^never$/","/^now$/","/^of$/","/^on$/","/^only$/","/^or$/","/^other$/","/^our$/","/^out$/","/^over$/","/^said$/","/^same$/","/^see$/","/^should$/","/^since$/","/^some$/","/^still$/","/^such$/","/^take$/","/^than$/","/^that$/","/^the$/","/^their$/","/^them$/","/^then$/","/^there$/","/^these$/","/^they$/","/^this$/","/^those$/","/^through$/","/^to$/","/^too$/","/^under$/","/^up$/","/^very$/","/^was$/","/^way$/","/^we$/","/^well$/","/^were$/","/^what$/","/^where$/","/^which$/","/^while$/","/^who$/","/^with$/","/^would$/","/^you$/","/^your$/","/^а$/","/^безо$/","/^более$/","/^будем$/","/^будет$/","/^будто$/","/^буду$/","/^будут$/","/^бы$/","/^были$/","/^было$/","/^быть$/","/^в$/","/^в отношении$/","/^в течении$/","/^вас$/","/^ваш$/","/^вблизи$/","/^вбок$/","/^ввосьмером$/","/^в-восьмых$/","/^ввысь$/","/^вдали$/","/^вдаль$/","/^вдвое$/","/^вдвоем$/","/^вдвойне$/","/^вдевятером$/","/^в-девятых$/","/^вдесятеро$/","/^вдогон$/","/^вдогонку$/","/^вдоль$/","/^вдосталь$/","/^вдруг$/","/^верх$/","/^весь$/","/^взамен$/","/^вид$/","/^видно$/","/^вкратце$/","/^вкупе$/","/^вместо$/","/^вне$/","/^внешне$/","/^вниз$/","/^внизу$/","/^вновь$/","/^внутри$/","/^внутрь$/","/^во$/","/^во время$/","/^вовне$/","/^вовсе$/","/^вовсю$/","/^во-первых$/","/^воз$/","/^возле$/","/^воочию$/","/^вопреки$/","/^вот$/","/^впредь$/","/^в-пятых$/","/^вровень$/","/^врознь$/","/^врозь$/","/^вряд ли$/","/^в-седьмых$/","/^все$/","/^всего$/","/^все-таки$/","/^вслед$/","/^всплошную$/","/^вспять$/","/^всюду$/","/^в-третьих$/","/^в-шестых$/","/^вы$/","/^выше$/","/^где$/","/^где-либо$/","/^где-нибудь$/","/^где-то$/","/^да$/","/^дабы$/","/^далее$/","/^де$/","/^для$/","/^до$/","/^другие$/","/^других$/","/^его$/","/^едва$/","/^едва-едва$/","/^ее$/","/^еле$/","/^если$/","/^есть$/","/^еще$/","/^ж$/","/^же$/","/^за$/","/^заключается$/","/^зато$/","/^зачем$/","/^зачем-либо$/","/^зачем-нибудь$/","/^зачем-то$/","/^и$/","/^из$/","/^из-за$/","/^или$/","/^имеющее$/","/^имеющие$/","/^имеющий$/","/^имеющим$/","/^иначе$/","/^итого$/","/^их$/","/^к$/","/^как$/","/^как-либо$/","/^как-нибудь$/","/^какой$/","/^какой-то$/","/^как-то$/","/^кверху$/","/^ко$/","/^когда$/","/^когда-либо$/","/^когда-нибудь$/","/^когда-то$/","/^кое$/","/^кое-где$/","/^кое-как$/","/^кое-какой$/","/^кое-когда$/","/^кое-кто$/","/^кое-куда$/","/^кое-откуда$/","/^кое-чей$/","/^кое-что$/","/^который$/","/^который$/","/^который-либо$/","/^который-нибудь$/","/^кто-либо$/","/^кто-нибудь$/","/^кто-то$/","/^куда$/","/^куда-либо$/","/^куда-нибудь$/","/^куда-то$/","/^ли$/","/^либо$/","/^ль$/","/^мало$/","/^меж$/","/^мимо$/","/^может$/","/^можно$/","/^мы$/","/^на$/","/^над$/","/^надо$/","/^намного$/","/^наш$/","/^не$/","/^него$/","/^некий$/","/^некогда$/","/^некого$/","/^некто$/","/^нем$/","/^немало$/","/^немного$/","/^несколько$/","/^нет$/","/^нечего$/","/^ни$/","/^нигде$/","/^никакой$/","/^никогда$/","/^никто$/","/^никуда$/","/^ним$/","/^нисколько$/","/^ничей$/","/^ничто$/","/^но$/","/^о$/","/^об$/","/^обе$/","/^обо$/","/^однако$/","/^около$/","/^он$/","/^она$/","/^они$/","/^опять$/","/^особенно$/","/^от$/","/^от$/","/^откуда$/","/^откуда-либо$/","/^откуда-нибудь$/","/^откуда-то$/","/^относится$/","/^относятся$/","/^отнюдь$/","/^ото$/","/^отсюда$/","/^оттого$/","/^по$/","/^под$/","/^подле$/","/^подо$/","/^подчас$/","/^позднее$/","/^позже$/","/^пока$/","/^полно$/","/^помимо$/","/^поначалу$/","/^понемногу$/","/^по-прежнему$/","/^порой$/","/^по-своему$/","/^поскольку$/","/^после$/","/^посредине$/","/^постольку$/","/^потом$/","/^потому$/","/^почему$/","/^почему-либо$/","/^почему-нибудь$/","/^почему-то$/","/^почти$/","/^поэтому$/","/^пред$/","/^предо$/","/^представляет$/","/^прежде$/","/^при$/","/^про$/","/^просто$/","/^против$/","/^прямо$/","/^путем$/","/^путем$/","/^ради$/","/^разве$/","/^разом$/","/^ранее$/","/^с$/","/^себе$/","/^сквозь$/","/^сколь$/","/^сколько$/","/^сколько-нибудь$/","/^сколько-то$/","/^сложно$/","/^служащее$/","/^служащие$/","/^служащим$/","/^служит$/","/^сначала$/","/^снова$/","/^со$/","/^собой$/","/^совсем$/","/^содержащее$/","/^содержащий$/","/^содержит$/","/^сообразно$/","/^сперва$/","/^спереди$/","/^сразу$/","/^среди$/","/^средь$/","/^столь$/","/^столько$/","/^та$/","/^так$/","/^такой$/","/^так как$/","/^так что$/","/^также$/","/^там$/","/^то$/","/^тогда$/","/^того$/","/^тоже$/","/^только$/","/^том$/","/^тот$/","/^тут$/","/^у$/","/^уже$/","/^хоть$/","/^хотя$/","/^чего$/","/^чего-то$/","/^чей$/","/^чей-либо$/","/^чей-нибудь$/","/^чей-то$/","/^чем$/","/^через$/","/^что$/","/^что-либо$/","/^что-нибудь$/","/^что-то$/","/^чтоб$/","/^чтобы$/","/^чуть$/","/^чье-либо$/","/^чье-нибудь$/","/^чье-то$/","/^эти$/","/^этим$/","/^этих$/","/^это$/","/^этом$/","/^я$/","/^этот$/","/^оно$/");
       $page_keywords = $config['global_keywords'];
       $page_description = $config['site_desc'];
       
       if (!empty($post_text))
       {
          $post_text = utf8_strtolower(strip_tags($post_text));
          $post_text = explode(" ", $post_text);
          if ($config['use_dynamic_keywords'])
          {
             $count = 0;
             $page_keywords = array();
             foreach ($post_text as $word)
             {
                $word = str_replace("'", '', $word);
                $word = eregi_replace("\n{1,}|\r{1,}|\n\r{1,}","",$word);
                $word = preg_replace($stopwords,"",$word);
                if (strlen($word) > 3)
                {
                   if (!empty($page_keywords) && in_array($word, $page_keywords))
                   {
                      continue;
                   }
                   $page_keywords[] = $word;
                   $count++;
                }
               
                if ($count == $config['keyword_word_count'])
                {
                   break;
                }
             }
             $config_keywords = ($config['append_global_keywords']) ? $config['global_keywords'] : '';
             $page_keywords = ($config['append_keywords_first']) ? $config_keywords . ', ' . implode(', ', $page_keywords) : implode(', ', $page_keywords) . ', ' . $config_keywords;
          }
         
          if ($config['use_dynamic_description'])
          {
             $count = 0;
             $page_description = '';
             foreach ($post_text as $word)
             {
                $word = str_replace("'", '', $word);
                $word = eregi_replace("\n{1,}|\r{1,}|\n\r{1,}","",$word);

                $page_description .= $word . ' ';
                $count++;
               
                if ($count == $config['description_word_count'])
                {
                   break;
                }
             }
          }
       }
       
 

И после этого мод корректно заработает


Руссификация
Открыть language/ru/acp/board.php и найти
    'WARNINGS_EXPIRE_EXPLAIN'
));
 

Добавить после
// Advanced Meta Tags MOD
$lang = array_merge($lang, array(
    'APPEND_GLOBAL_KEYWORDS'                => 'Глобальные ключевые слова ',
    'APPEND_GLOBAL_KEYWORDS_EXPLAIN'=> 'Добавить глобальные ключевые слова к сгенерированным',
    'APPEND_KEYWORDS_FIRST'                 => 'Место глобальных ключевых слов',
    'APPEND_KEYWORDS_FIRST_EXPLAIN' => 'Да - Глобальные перед сгенерированными,<br />Нет - Глобальные после сгенерированных',
    'DESCRIPTION_WORD_COUNT'                => 'Лимит сгенерированных слов',
    'DYNAMIC_DESCRIPTION'                   => 'Включить в страницу сгенерированное описание',
    'DYNAMIC_KEYWORDS'                              => 'Включить сгенерированные слова',
    'GLOBAL_KEYWORDS'                               => 'Глобальные ключевые слова',
    'KEYWORD_WORD_COUNT'                    => 'Лимит слов в описании',
));
 


Для стиля на любой верстке
Открыть /styles/ваш стиль/overall_header.html и найти
<meta name="keywords" content="" />
<meta name="description" content="" />
 

Заменить на
<meta name="keywords" content="{PAGE_KEYWORDS}" />
<meta name="description" content="{PAGE_DESCRIPTION}" />
 


Настраиваем мод на свой вкус - Админка - Настройки Форума и больше не паримся насчет метатегов


Шаг 2. Заголовки - Просмотр темы, Просмотр форума, Главная страница.
Стандартные заголовки или тайтлы (от названия тега <title>) форума ничего общего с сео-оптимизацией не имеют. Лишние слова, такие как «Просмотр форума», «Просмотр темы», «Главная», и притом одинаковые для всех тем и разделов, мы постараемся убрать в этом шаге.

Избавляемся от «Главная страница»
Открываем index.php и находим
page_header($user->lang['INDEX']);
 

Заменяем на
page_header();
 


Избавляемся от «Просмотр форума»
Открываем viewforum.php и находим
page_header($user->lang['VIEW_FORUM'] . ' - ' . $forum_data['forum_name'], true, $forum_id);
 

Заменяем на
page_header($forum_data['forum_name'], true, $forum_id);
 


Избавляемся от «Просмотр темы»
Открываем viewtopic.php и находим
page_header($user->lang['VIEW_TOPIC'] . ' - ' . $topic_data['topic_title'], true, $forum_id);
 

Заменяем на
page_header($topic_data['topic_title'], true, $forum_id);
 

Если установлен мод, описанный выше,то данная строка должна иметь вид(после правок)
page_header($topic_data['topic_title'], true, $first_post_text, $forum_id);
 


Шаг 3. Оптимизация alt-ов вложенных изображений и картинок
Те, кто знаком с тем, чем хорош валидный код, знают наверняка, что любому изображению в коде должен быть присвоен тег (атрибут) alt, аналог title для ссылок. В phpBB3 присутствует такая наработка, но в alt вложенных изображений выводится само имя картинки. А так как в большинстве своем народ, прилепляющий изображения оригинальностью не блещет, то в alt попадают такие имена картинок как 1.png или безымянный.png. Вообщем логику вы поняли, с помощью таких alt-ов повысить позиции в выдаче ( допустим по поиску картинок) не получится. Надо дорабатывать, а я вам предложу способ как это сделать. На мой взгляд лучше в альт выводить имя темы, в которой расположена картинка.
Для примера вот неоптимизированный alt
Вложение :
Комментарий к файлу: неоптимизированный alt в phpBB3


А вот alt после приведенных ниже правок, различия очевидны
Вложение :
Комментарий к файлу: оптимизированный alt в phpBB3


Итак открываем includes/functions_content.php и находим
  if (!sizeof($attachments))
    {
        return;
    }

    global $template, $cache, $user;
    global $extensions, $config, $phpbb_root_path, $phpEx;
 

Вставляем после найденного
  global $topic_data; 
 

Находим
  'COMMENT'            => $comment, 
 

И вставляем после
 'TOPIC_TITLE'        => censor_text($topic_data['topic_title']), 
 

Открываем styles/ваш стиль/template/attachment.html и 2 раза находим код
alt="{_file.DOWNLOAD_NAME}"
 

Заменяем его на
alt="{_file.TOPIC_TITLE}"
 

Вот и все правки и оптимизация alt-ов вложенных изображений

Шаг 4. Семантическая разметка
1.
2.

Шаг 5. Добавляем номер страницы в тайтл
Выше я описывал способ как убрать из тайтла страницы текст Просмотр форума и Просмотр Темы, если так подумать, то теперь у вас получается, к примеру, в подфоруме есть 3 страницы с темами, но они имеют одинаковый тайтл, а так же если в теме более 1 страницы сообщений, то эти страницы так же имеют одинковый тайтл. Надо это исправить, добавим после имени подфорума (или названия темы) текст - Страница N, где N - число, порядковый номер страницы.
Для страницы просмотра подфорумов, открыть viewforum.php и найти строку начинающуюся с page_header и заменить всю строку на
$extra_title = ($start > 0) ? ' - ' . $user->lang['Page'] . ( floor( $start / $config['topics_per_page'] ) + 1 ) : '';
page_header($forum_data['forum_name'] . $extra_title, true, $forum_id);
 

Для страницы просмотра темы, открыть viewtopic.php и найти строку начинающуюся с page_header и заменить всю строку на
$extra_title = ($start > 0) ? ' - ' . $user->lang['Page'] . ( floor ($start / $config['posts_per_page'] ) + 1 ) : '';
page_header($topic_data['topic_title'] . $extra_title, true, $forum_id);
 

Если у вас установлен мод , то нужно еще найти строку
'TOPIC_SEO_TITLE'   => (isset($topic_data['topic_seo_title'])) ? $topic_data['topic_seo_title'] : '',
 

Вставить после найденного
'PAGENUM'   => ($start > 0) ? ' - ' . $user->lang['Page'] . ( floor ($start / $config['posts_per_page'] ) + 1 ) : '',
 

Открыть styles/Ваш стиль/template/overall_header.html и найти
{TOPIC_SEO_TITLE}
 

Вставить после найденного
{PAGENUM}
 

Так же нужно открыть language/ru/common.php и найти
'CHANGING_PROFILE'         => 'Изменение настроек профиля',
 

Вставить после найденного
'Page' => 'Страница ',
 


Шаг 6. Убираем имя форума со страницы просмотра подфорумов (viewforum.php)
На досуге посетила одна мысль - а зачем нам вообще отображение имени форума в тайтле страницы просмотра подфорумов (viewforum.php) ??? Там обычно идет (на неоптимизированном форуме) так - Просмотр форума - Имя подфорума(раздела) - Имя форума, после оптимизации, описанной выше у вас должно получиться так - Имя подфорума(раздела) - Имя форума, а после правок, описанных ниже, у вас должно получиться так - - Имя подфорума(раздела). На мой взгляд так более красиво выглядит, вообщем если заинтересовало, то открываем шаблон overall_header.html вашего стиля и находим
 

Вставляем после найденного
<!-- IF SCRIPT_NAME == "viewforum" -->{PAGE_TITLE}<!-- ELSE -->
 

Находим
</title>
 

Вставляем перед найденным
<!-- ENDIF -->
 

Чистим кеш и вуаля :-0=)


Шаг 7. Открываем для индексации картинки-вложения
Внимание !!! Данный метод конфликтует с !!!

Наверняка, многие из вас думали что разрешив ботам скачивать вложения, эти самые боты будут индексировать картинки-вложения. Не тут то было, фигушки. Давайте решим это недоразумение, пусть в индекс и картинки с форума попадают. Для начала открываем корневой .htaccess и добавляем в него
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^fpit/.*_(\d+)\.(gif|jpg|jpeg|bmp|png|tiff|tif|tga)$ download/file.php?id=$1&t=1 [NC]
RewriteRule ^fpin/.*_(\d+)\.(gif|jpg|jpeg|bmp|png|tiff|tif|tga)$ download/file.php?id=$1&mode=view [NC]
RewriteRule ^fpid/.*_(\d+)\.(gif|jpg|jpeg|bmp|png|tiff|tif|tga)$ download/file.php?id=$1 [NC]
</IfModule>
 

Потом открываем download\file.php и находим
if ($display_cat == ATTACHMENT_CATEGORY_IMAGE && $mode === 'view' && (strpos($attachment['mimetype'], 'image') === 0) && ((strpos(strtolower($user->browser), 'msie') !== false) && (strpos(strtolower($user->browser), 'msie 8.0') === false)))
{
   wrap_img_in_html(append_sid($phpbb_root_path . 'download/file.' . $phpEx, 'id=' . $attachment['attach_id']), $attachment['real_filename']);
   file_gc();
}
 

Заменяем найденное на
if ($display_cat == ATTACHMENT_CATEGORY_IMAGE && $mode === 'view' && (strpos($attachment['mimetype'], 'image') === 0) && ((strpos(strtolower($user->browser), 'msie') !== false) && (strpos(strtolower($user->browser), 'msie 8.0') === false)))
{
   send_file_to_browser($attachment, $config['upload_path'], $display_cat);
   file_gc();
}
 

Находим
if (empty($user->browser) || (!$is_ie8 && (strpos(strtolower($user->browser), 'msie') !== false)))
      {
         header('Content-Disposition: attachment; ' . header_filename(htmlspecialchars_decode($attachment['real_filename'])));
         if (empty($user->browser) || (strpos(strtolower($user->browser), 'msie 6.0') !== false))
         {
            header('expires: -1');
         }
      }
      else
      {
         header('Content-Disposition: ' . ((strpos($attachment['mimetype'], 'image') === 0) ? 'inline' : 'attachment') . '; ' . header_filename(htmlspecialchars_decode($attachment['real_filename'])));
         if ($is_ie8 && (strpos($attachment['mimetype'], 'image') !== 0))
         {
            header('X-Download-Options: noopen');
         }
      }
 

И заменяем найденное на
      if (empty($user->browser) || (!$is_ie8 && (strpos(strtolower($user->browser), 'msie') !== false)))
      {
         if (false === strpos($attachment['mimetype'], 'image'))
         header('Content-Disposition: attachment; ' . header_filename(htmlspecialchars_decode($attachment['real_filename'])));
         if (empty($user->browser) || (strpos(strtolower($user->browser), 'msie 6.0') !== false))
         {
            header('expires: -1');
         }
      }
      else
      {
         if (false === strpos($attachment['mimetype'], 'image'))
         header('Content-Disposition: ' . ((strpos($attachment['mimetype'], 'image') === 0) ? 'inline' : 'attachment') . '; ' . header_filename(htmlspecialchars_decode($attachment['real_filename'])));
         if ($is_ie8 && (strpos($attachment['mimetype'], 'image') !== 0))
         {
            header('X-Download-Options: noopen');
         }
      }
 

Открываем файл includes/functions_content.php и находим
function parse_attachments($forum_id, &$message, &$attachments, &$update_count, $preview = false)
{
   if (!sizeof($attachments))
   {
      return;
   }

   global $template, $cache, $user;
 

Заменяем найденное на
function parse_attachments($forum_id, &$message, &$attachments, &$update_count, $preview = false)
{
   if (!sizeof($attachments))
   {
      return;
   }

   global $template, $cache, $user, $topic_data;
 

Находим
switch ($display_cat)
         {
            // Images
            case ATTACHMENT_CATEGORY_IMAGE:
               $l_downloaded_viewed = 'VIEWED_COUNT';
               $inline_link = append_sid("{$phpbb_root_path}download/file.$phpEx", 'id=' . $attachment['attach_id']);
               $download_link .= '&amp;mode=view';

               $block_array += array(
                  'S_IMAGE'      => true,
                  'U_INLINE_LINK'      => $inline_link,
               );

               $update_count[] = $attachment['attach_id'];
            break;

            // Images, but display Thumbnail
            case ATTACHMENT_CATEGORY_THUMB:
               $l_downloaded_viewed = 'VIEWED_COUNT';
               $thumbnail_link = append_sid("{$phpbb_root_path}download/file.$phpEx", 'id=' . $attachment['attach_id'] . '&amp;t=1');
               $download_link .= '&amp;mode=view';

               $block_array += array(
                  'S_THUMBNAIL'      => true,
                  'THUMB_IMAGE'      => $thumbnail_link,
               );

               $update_count[] = $attachment['attach_id'];
            break;
 

И заменяем найденное на
   switch ($display_cat)
         {
            // Images
            case ATTACHMENT_CATEGORY_IMAGE:
               $l_downloaded_viewed = 'VIEWED_COUNT';
               $inline_link = append_sid("{$phpbb_root_path}download/file.$phpEx", 'id=' . $attachment['attach_id']);
               $download_link .= '&amp;mode=view';

               if (isset($topic_data) && isset($topic_data['topic_title']))
               {
                  $fn = $topic_data['topic_title'] . ' - ' . ('' === $attachment['attach_comment'] ?
                     utf8_str_replace('.' . $attachment['extension'], '', htmlspecialchars_decode($attachment['real_filename'])) : $attachment['attach_comment'] );
                  $block_array['DOWNLOAD_NAME'] = utf8_basename($fn);
                  $fn = rawurlencode($fn);
                  $inline_link    = "/fpid/{$fn} _{$attachment['attach_id']}.{$attachment['extension']}";
                  $download_link    = "/fpin/{$fn} _{$attachment['attach_id']}.{$attachment['extension']}";
               }

               $block_array += array(
                  'S_IMAGE'      => true,
                  'U_INLINE_LINK'      => $inline_link,
               );

               $update_count[] = $attachment['attach_id'];
            break;

            // Images, but display Thumbnail
            case ATTACHMENT_CATEGORY_THUMB:
               $l_downloaded_viewed = 'VIEWED_COUNT';
               $thumbnail_link = append_sid("{$phpbb_root_path}download/file.$phpEx", 'id=' . $attachment['attach_id'] . '&amp;t=1');
               $download_link .= '&amp;mode=view';

               if (isset($topic_data) && isset($topic_data['topic_title']))
               {
                  $fn = $topic_data['topic_title'] . ' - ' . ('' === $attachment['attach_comment'] ?
                     utf8_str_replace('.' . $attachment['extension'], '', htmlspecialchars_decode($attachment['real_filename'])) : $attachment['attach_comment'] );
                  $block_array['DOWNLOAD_NAME'] = utf8_basename($fn);
                  $fn = rawurlencode($fn);
                  
                  $thumbnail_link = "/fpit/{$fn} _{$attachment['attach_id']}.{$attachment['extension']}";
                  $download_link    = "/fpin/{$fn} _{$attachment['attach_id']}.{$attachment['extension']}";
               }


               $block_array += array(
                  'S_THUMBNAIL'      => true,
                  'THUMB_IMAGE'      => $thumbnail_link,
               );

               $update_count[] = $attachment['attach_id'];
            break;
 

Все, теперь картинки будут видеть боты, кстати, после этого проверьте нормально ли отображаются картинки-вложения

Вот впринципе и все, форум более менее оптимизирован. Успехов в администрировании :(


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!

Теги темы
Сео-оптимизация phpbb3, раскрутка phpbb3, метатеги, заголовки, оптимизация альтов вложенных картинок

Последний раз редактировалось DeaDRoMeO 25 окт 2015, 10:32, всего редактировалось 11 раз(а).
Добавлена информация о решении проблем с модом Advanced Meta Tags ( проблема с не выводом русских ключевиков)
          Вернуться наверх  
 


Аватар пользователя

Вы дали не полный код ошибки, а всего лишь проблемный код, присмотритесь внимательно, там должно быть больше - нет причины ошибки (а это в любом случае указывается)


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Случайный аватар. Пользователю рекомендуется загрузить свой аватар в Настройках профиля

вот ошибка при заходе на сайт сейчас
Общая ошибка
SQL ERROR [ mysqli ]

Unknown column 's.session__id' in 'where clause' [1054]

Произошла ошибка SQL при выборке на этой странице. Пожалуйста, сообщите администратору, если ошибка будет повторяться.


а это ошибка при добавлении в базу текс весь
Ошибка

SQL-запрос:

INSERT INTO phpbb_config( config_name, config_value )
VALUES (
'description_word_count', 150
);

Ответ MySQL: Документация
#1062 - Duplicate entry 'description_word_count' for key 'PRIMARY'

вот ошибка при заходе на портал
SQL ERROR [ mysqli ]

Unknown column 's.session__id' in 'where clause' [1054]

SQL

SELECT s.session_user_id, s.session_ip, s.session_viewonline FROM phpbb_sessions s WHERE s.session_time >= 1338880230 AND s.session__id = 0 AND s.session_user_id <> 1

BACKTRACE

FILE: includes/db/mysqli.php
LINE: 163
CALL: dbal->sql_error()

FILE: includes/functions.php
LINE: 3782
CALL: dbal_mysqli->sql_query()

FILE: includes/functions.php
LINE: 4015
CALL: obtain_users_online()

FILE: portal.php
LINE: 247
CALL: page_header()


          Вернуться наверх  
 


Аватар пользователя

serioga81 писал(а):

#1062 - Duplicate entry 'description_word_count' for key 'PRIMARY'

Ошибка значит то, что в Базе Данных есть уже такие данные
serioga81 писал(а):

Unknown column 's.session__id' in 'where clause'

Неверно отредактирован файл includes/functions.php, проверьте правки по инструкции, возможно опечатались. Если там все верно, попробую найти другое решение


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Случайный аватар. Пользователю рекомендуется загрузить свой аватар в Настройках профиля

проверил всё как в инструкции. вставлял копированием так что опечатки быть не может!


          Вернуться наверх  
 


Аватар пользователя

А запрос такого рода проходит ?
INSERT INTO phpbb_config (config_name, config_value) VALUES ('use_dynamic_description', 1);
INSERT INTO phpbb_config (config_name, config_value) VALUES ('append_keywords_first', 0);
INSERT INTO phpbb_config (config_name, config_value) VALUES ('global_keywords', 'replace, these, keywords, with your own, keywords');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('append_global_keywords', 1);
INSERT INTO phpbb_config (config_name, config_value) VALUES ('keyword_word_count', 50);
INSERT INTO phpbb_config (config_name, config_value) VALUES ('use_dynamic_keywords', 1);
 


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

Дайте полный код файла includes/functions.php, стабильно там ошибка


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Случайный аватар. Пользователю рекомендуется загрузить свой аватар в Настройках профиля

Такой запрос не делал

у меня до этого были ручные провки кода(без мода) для seo оптимизации может изза этого конфликт?
полный код уже дать не могу еак как начал удалять мод(


          Вернуться наверх  
 


Аватар пользователя

Дело ваше, описанные правки не влияют на мод, а ошибка Unknown column 's.session__id' in 'where clause' возникает изза того что в s.session__id стоит __, а не _


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Случайный аватар. Пользователю рекомендуется загрузить свой аватар в Настройках профиля

Дело ваше, описанные правки не влияют на мод, а ошибка Unknown column 's.session__id' in 'where clause' возникает изза того что в s.session__id стоит __, а не _



Всё равно ошибка вроде всё удалил
SQL ERROR [ mysqli ]

Unknown column 's.session__id' in 'where clause' [1054]

SQL

SELECT s.session_user_id, s.session_ip, s.session_viewonline FROM phpbb_sessions s WHERE s.session_time >= 1338887010 AND s.session__id = 0 AND s.session_user_id <> 1

BACKTRACE

FILE: includes/db/mysqli.php
LINE: 163
CALL: dbal->sql_error()

FILE: includes/functions.php
LINE: 3782
CALL: dbal_mysqli->sql_query()

FILE: includes/functions.php
LINE: 4015
CALL: obtain_users_online()

FILE: index.php
LINE: 166
CALL: page_header()


          Вернуться наверх  
 


Аватар пользователя

Дайте полный код файла который я просил


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Случайный аватар. Пользователю рекомендуется загрузить свой аватар в Настройках профиля

Дайте полный код файла который я просил

Я бы с радостью на Ваш сервер выдаёт ошибку при добавлении всего кода!
Строки которые с ошибкой я сравнил с оригинальным functions.php ошибки там нет!
Сейчас заметил что ошибку выдают главные страницы партал каталог блог список форумов и везде фигурирует page_header() а страници личный раздел и сами темы работают
Залил на файлообменик
Пожалуйста Зарегистрируйтесь чтобы увидеть ссылку


          Вернуться наверх  
 


Аватар пользователя

В этом файле найти
$reading_sql = '';
   if ($item_id !== 0)
   {
      $reading_sql = ' AND s.session_' . $item . '_id = ' . (int) $item_id;
   }
 

В найденном заменить строку
$reading_sql = ' AND s.session_' . $item . '_id = ' . (int) $item_id;
 

на
  $reading_sql = ' AND s.session_forum_id = ' . (int) $item_id;
 

либо на
 $reading_sql = ' AND s.session_' . $item . 'id = ' . (int) $item_id;
 


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Случайный аватар. Пользователю рекомендуется загрузить свой аватар в Настройках профиля

Добрый день
Форум работает (правка написанная вами помогла) но вот списка пользовотелей кто онлайн нет)
И хотелось бы услышать в чём была причина?


          Вернуться наверх  
 


Аватар пользователя

Возможно все таки ошиблись при установке мода и ошибку до сих пор не устранили из кода, всякое бывает, перед установкой любых модов рекомендуется делать резервные копии устанавливаемых файлов


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Случайный аватар. Пользователю рекомендуется загрузить свой аватар в Настройках профиля

А какая часть кода отвечает "кто онлайн"?


          Вернуться наверх  
 


Аватар пользователя

Как раз таки исправляя возникшую ошибку мы и испортили блок Кто онлайн ибо другого решения нет. Хотя вы ж заменяли код на эту строку
 $reading_sql = ' AND s.session_forum_id = ' . (int) $item_id;
 

???
Попробуйте заменить на
 $reading_sql = ' AND s.session_' . $item . 'id = ' . (int) $item_id;
 


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

Ап теме, добавлена ссылка на мод, создающий карту сайта - :co_ol:


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

Привет Витебск. Вопрос по моду Advanced Meta Tags. Установил мод, сделал запрос и вот такая ерунда
Parse error: syntax error, unexpected $end in C:\AppServ\www\bb3x_pack_expand\bb3x_pack_expand\includes\functions.php on line 4962
Проблема с includes\functions.php ставлю на место чистый functions.php все пашет. Стоит мод индекс сео може его убрать. Ставил все твои моды по сео только идекс пашет с остальными у меня не понятки что делать. Всю неделю ковырялся в этих модах хорошо что на локальном сервере химичил так бы форум убил бы свой напрочь. :wo_ol:


          Вернуться наверх  
 


Аватар пользователя

asus писал(а):

Parse error: syntax error, unexpected $end in C:\AppServ\www\bb3x_pack_expand\bb3x_pack_expand\includes\functions.php on line 4962

Ну так внимательно сделайте правку в этом файле, видать делаете ошибку одну.
Насчет остальных модов - все они работают нормально друг с другом, но не советую ставить тройку модов и Advanced Meta Tags вместе


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

Излил одну мыслю во второй пост данной темы :du_ma_et:


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 
 
Начать новую тему Ответить на тему


Дополнительные возможности

  Похожие темы  Автор  Ответов  Просмотров  Последнее сообщение 
Аватар пользователя Оптимизация: всё по порядку
Что устанавливать и править

Lorem Ipsum

5

781

Аватар пользователя

18 ноя 2012, 21:56

DeaDRoMeO

Аватар пользователя Правильная оптимизация сайта / статьи
В этой статье речь пойдет о том как правильно писать уникальные описания для товаров в интернет магазинах, и просто блогах принцип одинаков и применим ко всем видам сайтов

СТЕПАН

2

1124

Аватар пользователя

13 апр 2014, 17:07

СТЕПАН

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

Evgenij83

1

285

Аватар пользователя

22 июн 2017, 11:34

Atlas

Случайный аватар. Пользователю рекомендуется загрузить свой аватар в Настройках профиля Вопрос по оптимизация работы форума
Оптимизация работы форума

kiev

37

1147

Аватар пользователя

02 мар 2013, 15:42

akella1900

Аватар пользователя Who Views Who phpbb3
Who Views Who - модификация для phpbb3, которая немного расширит информацию предоставляемую на странице Кто Онлайн

DeaDRoMeO

8

2561

Аватар пользователя

30 сен 2013, 20:27

DeaDRoMeO

Оставить свой комментарий

Поделиться темой с помощью

Ссылки на тему

Прямая ссылка:
BB-код для форумов, сайтов, блогов:
HTML ссылка:
 


cron

Самая неформальная поддержка phpBB :P