Оптимизация изображений (Xenforo Attachments) под поисковые системы

Devider

Проверенные
Сообщения
29
Реакции
12
Баллы
5,500
Решил заняться поисковой оптимизацией картинок-вложений. Для этого в robots.txt убрал Disallow:attachments, поставил плагин Metadata by Waindigo для прописывания alt изображениям. Слегка доработал Metadata by Waindigo, добавил туда переменную alt и в таблице xf_attachment_data соответствующее поле, таким образом, когда alt вручную прописан картинке он берется из базы, если не прописан, то генерируется из заголовка темы и имени автора.

Но этих мер недостаточно, чтобы поисковик начал индексировать картинки. Пользователи обычно используют полную вставку изображений, а тогда ссылки на картинки имеют вид /attachments/234/, а это поисковики обрабатывать не захотят. Можно добавить роутинг с заменой attachments/{name:string} на attachments/{name:string}.jpg?, тогда ссылки будут вида attachments/233.jpg?/, что тоже не очень хорошо.

Поменял формат миниатюр сделал их чуть больше, так, чтобы их чаще можно было использовать. Тут осталось решить проблему с именем файлов, сейчас они имеют формат {порядковый номер}-{хеш}.jpg, что тоже не любят поисковики. Единственное решение которое приходит на ум это просто клонировать или переименовать изображения, создав им имена путем транслита нового поля alt, таким образом нормальные имена файлов будут только у изображений, где прописан alt. Соответственно в таблице xf_attachment_data нужно будет поменять filename.

Еще есть мысль сделать превью2, то есть это нечто среднее между большим изображением и маленькой превьюшкой. Это для случаев, когда исходные изображения слишком большие и маленькие превьюшки не очень подходят.

Получается слишком замороченно. Может есть уже плагин вмещающий в себя все эти возможности. Или кто-то занимался доработками такого рода?

Здесь на форуме используется роутинг такого вида https://xenforo.info/attachments/1513f751c66c71-jpg.5325/, с вставкой filename через шаблон. Но такие картинки не будут индексироваться яндексом. Кто нибудь делал нормальные пути к файлам для полных изображений или все ограничиваются миниатюрами?
 
Я закрыл /attachments/ логично что все картинки с разных страниц загруженные в attachments буду неидексированы. А нафига? 95% пользователей копирует поди что...
 
Да, я думаю /attachments/ лучше оставить закрытым, а для картинок с прописанным alt просто брать другой путь, с папки internal_data или data и подставлять его уже в шаблоне.

Что я сейчас собираюсь сделать.
Переименовать скриптом filename в таблице xf_attachment_data, взяв за основу для транслита описание в поле alt (поле добавлено мной).
Переименовать скриптом файлы на сервере в соответствии с xf_attachment_data.
В шаблоне bb_code_tag_attach
поменять
Код:
<a href="{xen:link full:attachments, $attachment}" target="_blank" class="LbTrigger"
        data-href="{xen:link misc/lightbox}"><img
        src="{$attachment.thumbnailUrl}" alt="{$attachment.filename}"
        class="bbCodeImage LbImage" /></a>
на
Код:
<a href="{xen:link full:attachments, $attachment}" target="_blank" class="LbTrigger"
        data-href="{xen:link misc/lightbox}"><img
        src="/data/attachments/0/{$attachment.filename}" alt="{$attachment.alt}"
        class="bbCodeImage LbImage" /></a>
Сделать превью 2 и создать папку /data/attachments/preview2/, туда скриптом сгенерируем средние изображения из исходников в internal_data.

В шаблоне правим.
Код:
<img src="{xen:link full:attachments, $attachment}" alt="{$attachment.filename}" class="bbCodeImage LbImage" />
на
Код:
<img src="/data/attachments/preview2/p_{$attachment.filename}" alt="{$attachment.alt}" class="bbCodeImage LbImage" />

Может кто подскажет более оптимальное решение или оно уже есть.
 
  • Мне нравится
Реакции: oxeo
Devider, Всё что душе угодно, а вайндиго использовать ужас
 
А вы уверены что при условии закрытого каталога /attachments/ картинки на других страницах не индексируются? :)
 
А вы уверены что при условии закрытого каталога /attachments/ картинки на других страницах не индексируются? :-)
Не понял.

Devider, Всё что душе угодно, а вайндиго использовать ужас

Он умеет только альты для картинок проставлять и повторно использовать уже залитые изображения, это я и сам сделал уже. Но изменять имена файлов или размеры существующих изображений там нельзя.

а вайндиго использовать ужас
Он предназначен для редактирования метатегов, для картинок он и правда не нужен, достаточно в шаблонах вставить новую переменную
{$attachment.alt}
Или условие прописать, есль алт пустой то вставляем файлнейм.

Есть ли плагин для генерации нормальных имен изображений.

А для аттачей ссылку вида https://xenforo.info/attachments/1513f751c66c71-jpg.5325/ как создать? Это уже в новой версии форума такая функция, у себя в настройках не нашел. Или это через роутинг+правка шаблонов делается?
 
  • Мне нравится
Реакции: oxeo
Ну сама картинка располагается в закрытым от индексации разделе, но пользователи и гости могут её видеть на всех других страницах где она будет располагаться. От сюда и вопрос, картинка "индексируемая".
 
Ну сама картинка располагается в закрытым от индексации разделе, но пользователи и гости могут её видеть на всех других страницах где она будет располагаться. От сюда и вопрос, картинка "индексируемая".
Я имел ввиду, что она не добавляется в поиск Яндекс и Гугл картинок.
 
она не добавляется в поиск Яндекс и Гугл картинок.
Хм... даже не знал. А как сделать, чтобы добавлялась?..
Убрать Disallow:attachments не поможет, насколько из обсуждения понял. А если вручную в папку на хостинге заливать изображения и вставлять в сообщения через бб-код img?.. Но тогда Alt не будет...
 
Как доделаю, поделюсь с общественностью.

Рассказываю как реализовано у меня.

Решил сделать промежуточные изображения с максимальной шириной 600 и высотой 400, теперь все ATTACH=FULL отображают превью, а при нажатии на превью открывается уже большая картинка. Для просто ATTACH как и было остаются маленькие превью.

Скрипт создает большие превью из исходных изображений, попутно накладывая копирайты на большие изображения. Скрипт их режет по большей стороне, а не обрезает строго 600 на 400, то есть может быть и 600 на 500, и 300 на 400 (вертикальная картинка). Можно включить маштабирование по меньшей стороне, тогда, если картинка большая вертикальная, скажем 600 на 1000, то она обрежется 240 на 400. Если картинка меньше превью, то скрипт просто дублирует ее в соответствующую папку с новым именем.

Имена для новых изображений берутся из поле алт. Всего в таблицу добавлено три поля:
Код:
ALTER TABLE `xf_attachment_data` ADD `trumb_filename` varchar(70) NOT NULL DEFAULT '';
ALTER TABLE `xf_attachment_data` ADD `alt` VARCHAR( 255 ) NOT NULL;
ALTER TABLE `xf_attachment_data` ADD `preview` TINYINT UNSIGNED NOT NULL DEFAULT '0';
trumb_filename это имя маленьких превью, в имеющемся filename имя большого превью, а поле `preview` нужно для шаблона - оно указывает, есть ли у картинки среднее изображение.

Имена изображений создаются из поля alt, с яндекс-транслитерацией, причем для повторяющихся alt добавляется id вложения.
Зачем заморачиваться с именами? Оптимизаторы говорят, это лучше, чем хеш. Я проверил - действительно в топе Яндекс Картинок почти не встречаются изображения с кривыми именами.

Итак, у нас есть имя файла и два превью.
Теперь правим шаблон bb_code_tag_attach.

Правим шаблон маленьких превью.
Код:
<a href="{xen:link full:attachments, $attachment}" target="_blank" class="LbTrigger"
        data-href="{xen:link misc/lightbox}">
       <img
       <xen:if is="{$attachment.trumb_filename}">
        src="/data/attachments/{$attachment.trumb_filename}.jpg"<xen:else />src="{$attachment.thumbnailUrl}"
       </xen:if>
 
       <xen:if is="{$attachment.thumbnail_width}"> width="{$attachment.thumbnail_width}" height="{$attachment.thumbnail_height}"</xen:if>

       <xen:if is="{$attachment.alt}">alt="{$attachment.alt}"</xen:if> title="{$attachment.alt}" class="bbCodeImage LbImage" /></a>
В шаблоне есть проверка, создана ли картинка с нормальным именем, если не создано, то оставляем стандарный хеш. Указанные ширина и высота кажется тоже влияют на ранжирование. если нет alt я его не указываю вообще но можно указывать в alt название файла.

Теперь изменяем шаблон полных вставок, вот он
Код:
<xen:elseif is="{$canView} AND {$full}" />

    <img src="{xen:link full:attachments, $attachment}" <xen:if is="{$attachment.alt}">alt="{$attachment.alt}"</xen:if> class="bbCodeImage LbImage" />
меняем на
Код:
<xen:elseif is="{$canView} AND {$full}" />

   <xen:if is="!{$attachment.preview}">

    <img src="{xen:link full:attachments, $attachment}" <xen:if is="{$attachment.alt}">alt="{$attachment.alt}"</xen:if> class="bbCodeImage LbImage" />

   <xen:else />

       <a href="{xen:link full:attachments, $attachment}" target="_blank" class="LbTrigger"  data-href="{xen:link misc/lightbox}">
       <img

        src="/data/preview/{$attachment.filename}"

       <xen:if is="{$attachment.alt}">alt="{$attachment.alt}"</xen:if> title="{$attachment.alt}" class="bbCodeImage LbImage" /></a>

   </xen:if>

Надо также дописать новые поля в файле library/XenForo/Model/Attachment.php
Исправим только одну строчку.
Код:
public static $dataColumns =   'data.filename, data.file_size, data.file_hash, data.file_path, data.width, data.height, data.thumbnail_width, data.thumbnail_height, data.alt, data.trumb_filename, data.preview';

Что касается простановки ALT, можно конечно установить платный плагин AAS, но мне удобнее использовать отдельный скрипт, чтобы проставлять альты за пользователей.
Вот как это выглядит.
upload_2016-5-13_0-57-51.png
В скрипт выводятся изображения с непроставленными тэгами ALT, по умолчанию в поле прописывается имя файла.

Можно добавить отдельно TITLE, но, насколько я знаю, он может совпадать с ALT и не очень нужен. Есть на форуме оптимизаторы?

Реализация корявая, но можно сделать плагин, думаю, будет востребован.
 
Последнее редактирование:
Devider, все это было в постах выше. Ну конечно давайте писать в таблицы движка не нужное.
 
Devider, все это было в постах выше. Ну конечно давайте писать в таблицы движка не нужное.
Вам не нужно - не пишите.

Я обозначил проблему, подходящего решения не нашлось, пришлось сделать свое.
Посмотрите в Яндекс Картинок какие картинки проиндексировались с форума xenforo.info, запросом site:xenforo.info. Только миниатюры, хорошо ли они ранжируются в поиске? И потом, наличие правильных картинок скорее всего влияет на ранжирование в общем поиске. Я читал мануалы, везде советуют так делать.

А плагины которые вы устанавливаете тоже дописывают в таблицы свои поля, можно сделать отдельную вспомогательную таблицу но тогда сильнее придется править код.
 
Devider, Правда? Почему то в фул сайзе у меня проиндексированы, ну наверное проблема в чьих то руках... А вы знаете какие у меня установлены? Ну окей
 
Captain, если у вас закрыт доступ к /attachments/ логично что картинки никак не могут быть проиндексированы, вернее могут но веса в них не будет и попасть в гугл, яндекс картинки = 0. А если доступ /attachments/ открыт, соответственно всё будет индексироваться.

Тут-же просто нужно написать скрипт, чтоб в теге картинка заливалась не в /attachments/ а в другую директорию и всё. Либо в /attachments/img/ и в роботс открыть ей доступ, но это не много запутанно.

Можно добавить отдельно TITLE, но, насколько я знаю, он может совпадать с ALT и не очень нужен. Есть на форуме оптимизаторы?
Они могут быть одинаковы, это нормально - стандартно для пс.
 
Devider, Правда? Почему то в фул сайзе у меня проиндексированы, ну наверное проблема в чьих то руках... А вы знаете какие у меня установлены? Ну окей
Тот случай, когда аватарка подходит к стилю общения )

Чтобы они были проиндексированы, нужно открыть доступ в robots.txt для аттачей. У вас есть этот файл, вы открывали доступ?
Если доступ открыт, желательно прописать алт к картинке и сделать грамотный роутинг, поскольку яндекс не индексирует картинки, сгенерированные скриптом. Конечно, поисковик может проиндексировать изображения и без альт и с кривыми именами, если есть грамотный обтекающий текст, но ранжировать он такие картинки будет ниже.
Скажите свой сайт и мы посмотрим как там проиндексировано все хорошо и может поучимся у вас. Если вы не готовы делиться своими наработками, зачем критиковать тех, кто делится.

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

А если доступ /attachments/ открыт, соответственно всё будет индексироваться.
Не будут, я же показал, что на этом форуме . Потому что у них путь другой, они грузятся из папки data/attachments/o и у них есть правильное расширение, а крупное изображение генерируется скриптом, поэтому оно индексироваться не будет. И потом, мы говорим не только об индексации, но и о правильном создании картинок с точки зрения ПС, а это нормальное имя файла а не хеш, например так patrioty-petuhi.jpg, алт к изображению свой уникальный, прописанные ширина и высота.

Они могут быть одинаковы, это нормально - стандартно для пс.
Замечательно.
 
Последнее редактирование:
Вижу что проиндексированы, но это медиа-ресурсы а не форумные изображения. Я с медиаресурсами не работал, но в блоге у меня тоже все отлично индексируется.

Нашел, одну форумную attachments/53663-jpg.3240/.
Я не знал, что Яндекс индексирует такие ссылки, поскольку в правилах прописано, что скриптовые он не распознает. Такие attachments/3240/ не индексирует, значит достаточно прописать формат файла в ссылке для индексации. Будем знать.
Но плохие названия файлов влияют на ранжирование - желательно чтобы названия совпадали с ALT.
 
Последнее редактирование:
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу