Общий форум для общения и обмена опытом

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Авторизация
 
Страницы: 1
RSS
Мета-теги keywords и description для SMF, Обсуждение вопросов связанных с добавлением мета-данных для форумов на SMF
 
Подходящей темы не нашел, так что создал эту, с довольно общим названием, чтобы она не ограничилась впоследствии одним лишь моим вопросом.

Итак. Вопрос этот хотя и касается SEO, но больше к разбирающимся в PHP. Речь идет о том, чтобы слепить из двух модификаций (либо доработать одну из них) предназначенных для гибкого управления мета-тегами на форумах с движком (CMS) SMF.

У меня есть два кода. Они из разных модификаций (модов), но первый из них является родоначальником второго. То есть последний является просто доработкой (изменением) первого.

Первый мод (vBulletin Style Meta Tags 1.1) Позволяет добавлять автоматически такие мета-данные как title, keywords и description для форумов на SMF, подобно тому, как это сделано на vBulletin. В keywords идут три элемента: слова из которых состоит название темы или раздела, через запятую; цельно (все название); и в конце блок ключевых слов общих для всего форума. Причем мод убирает из текста все знаки препинания и дает возможность исключить слова, которые не хотелось бы видеть в мета-данных, например предлоги, союзы и т.д. (они прописываются вручную). В description можно направлять часть текста из заданного участка статьи (по умолчанию это первые 150 знаков). В title – название темы и через тире название форума. Но эта модификация у меня на SMF 2.0 RC2 работает лишь частично, даже если удается ее корректно установить (с ручной правкой шаблонов форума).

Второй мод (Vbulletin New Meta Tags 1.0, делался он для SMF 2.0 RC3) Делает примерно тоже самое, и он у меня на форуме работает довольно давно (установка тоже с ручными правками, но с меньшими). Но проблема в том, что в keywords попадают и знаки препинания (точки, многоточия, восклицательные и вопросительные знаки), а это не есть хорошо...

Вот как выглядит результат работы мода на одной из страниц форума:

Код
   <meta name="description" content="Чувство сожаления – необходимо ли оно человеку?    Думаю всем знакомо чувство сожаления. Не просто знакомо, но и близко. Наверное, нет ни одного человека, которыйВ  не сожалел бы о своих каких-то поступках, о своих словах, хотя бы несколько раз в" />
   <meta name="keywords" content="Чувство, сожаления., Необходимо, человеку?, форум, человеке, люди, развитие, жизни" />
   <title>Чувство сожаления. Необходимо ли оно человеку? - В человеке есть все</title>


С формированием description все в порядке в обоих модах (и эта часть кодов у них полностью идентичная). А вот с keywords все не так просто...

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

Участок кода из vBulletin Style Meta Tags 1.1:

Код
function MetaTagsSpecialChars ($text)
{
   return str_replace('"', '"', strip_tags(html_entity_decode($text, ENT_QUOTES)));
}

function MetaTagsGenerateKeywords ($text)
{
   $common_words = array('a', 'and', '&', 'at', 'as', 'for', 'it', 'in', 'of', 'on', 'or', 'quot', 'the', 'to');

   $text = MetaTagsSpecialChars(str_replace(',', '', $text));

   // Build array of the keywords without punctuation.
   preg_match_all('/\w+/', $text, $keywords);

   // Only one keyword, just return.
   if(count($keywords[0]) == 1)
      return $text;

   // Remove any common words.
   $i=0;
   foreach($keywords[0] as $word)
   {
      if(in_array($word, $common_words))
         unset($keywords[0][$i]);
      $i++;
   }


Аналогичный участок кода из Vbulletin New Meta Tags 1.0:

Код
function MetaTagsSpecialChars ($text)
{
   return str_replace('"', '"', strip_tags(html_entity_decode($text, ENT_QUOTES, 'UTF-8')));
}

function MetaTagsGenerateKeywords ($text)
{
   $common_words = array('pour', 'dans', 'fois');

   $text = MetaTagsSpecialChars(str_replace(',', '', $text));

   // Build array of the keywords without punctuation.
   $keywords = explode(' ', $text);

   // Only one keyword, just return.
   if(count($keywords) == 1)
      return $text;

   // Remove any common words.
   $i=0;
   foreach($keywords as $word)
   {
      if(in_array($word, $common_words) || strlen($word)<=3 )
         unset($keywords[$i]);
      $i++;
   }

   // Return the individual keywords along with the keyword string.
   return implode(', ', $keywords) . ', ' . $text;
}


Вопрос в том, как сделать, чтобы второй код убирал знаки пунктуации так же здорово, как это делает первый?

На данный момент мне удалось добиться нужного результата простой заменой одного кода другим (вместо второго первый). Но!!! Вот всегда оно это "но" есть... :) Дело в том, что при тестирование на Денвере – все функционирует отлично – несколько дней, посвященных экспериментам и проведенных в попытках разобраться, не прошли даром. Но на живом форуме ключевые слова после такой замены не выводятся вовсе (кроме общих, тех, что на главной странице). Что-то где-то не работает! Так что пока оставил ключевики со знаками пунктуации и пришел сюда, может кто поможет? Или хотя бы общее направление для самостоятельных поисков.

Прошу изучение программирования не предлагать, ибо это очевидный ответ, но он слишком общий. ;)

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

Ах да, если есть кому-нибудь известны варианты по добавлению мета-данных на SMF вручную для каждой страницы-темы, подобно как это реализовано в плагине All in One SEO на ВордПрессе, это было бы даже предпочтительнее, но пока ничего подобного не нашел (у спецов уже спрашивал...).
Изменено: jek_recluse - 26.02.2012 14:12:43
В человеке есть все...
 
Евгений, я тоже не программист, но как администратор заметил вот такую фразу:
Цитата
jek_recluse пишет:
при тестирование на Денвере – все функционирует отлично
Если тестировали на денвере используя новую установку, то вероятно есть конфликт с другим установленными на "боевом" сайте модификациями.
Ну а если же использовали копию своего сайта, то вероятно на хостинге не подключены какие-то нужные расширения для полноценной работы модификации.

Евгений, если желаете, то могу предоставить (безвозмездно) на 10 дней площадку на нашем сервере, где установлены все необходимые расширения php.
Есть еще порох в пороховицах!
 
Да, думаю прежде всего сказалась разница между Денвером и "боевым" сайтом в установленных модификациях, да и мое тестирование на Денвере – довольно жестокая штука, там сайт много раз просто переставал грузиться, и лишнего "хлама" в коде должно было накопиться уже порядком из-за некорректных сносов модификаций. :)

Большое спасибо, Валерий, за отличное предложение. Но, пожалуй, откажусь. Дело в том, что у меня уже наметились кое-какие успехи. Видимо дело было все-таки не в отсутствии расширений php на сервере, а в моих кривых руках. Сегодня опять угробил день на анализ применяемых элементов PHP, и, судя по всему удалось понять главное.

В общем, если у кото-то возникнет подобная проблема, вот решение – измененная функция генерации keywords для модификации Vbulletin New Meta Tags 1.0 (файл MetaTags.php):

Код
function MetaTagsGenerateKeywords ($text)
{
   $common_words = array('или', 'чтоб', 'что', 'как', 'так', 'под', 'вон', 'вот', 'для', 'это', 'чём', 'чем', 'еще', 'ещё');

   $common_marks = array('?', '!', '.', ',', ';', '=', '+', '-');

   $text = MetaTagsSpecialChars(str_replace($common_marks, '', $text));

   // Build array of the keywords without punctuation.
   $keywords = explode(' ', $text);

   // Only one keyword, just return.
   if(count($keywords) == 1)
      return $text;

   // Remove any common words.
   $i=0;
   foreach($keywords as $word)
   {
      if(in_array($word, $common_words) || strlen($word)<=2 )
         unset($keywords[$i]);
      $i++;
   }

   // Return the individual keywords along with the keyword string.
   return implode(', ', $keywords);
}


- Основное изменение заключается в добавлении новой переменной ($common_marks) и массива (со знаками пунктуации и некоторыми другими знаками, которые не нужны в ключевых словах.
- Плюс изменил массив с лишними словами (со временем еще пополню их список), уменьшил минимальную длину исключаемых слов до 2. и убрал вывод в ключевые слова полного названия темы – но это все было решено еще раньше.

Результат в исходном коде, для той же страницы, что писал вначале теперь такой:

Код
   <meta name="keywords" content="Чувство, сожаления, Необходимо, оно, человеку, форум, человеке, развитие, жизни" />


Результат мне нравится. Все довольно красиво и аккуратно без лишних знаков. Разве что сделать бы еще, чтоб регистр слов был одинаковый (без заглавных), но пока сойдет и так.
Единственно не знаю точно, насколько корректны мои вмешательства в код. Хотя впрочем, онлайн проверка синтаксиса, ошибок в измененном мной коде не выявила.

---

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

Недавно вот показалось привлекательным сделать почту Яндекса для домена, но как почитал сколько там всяких непонятных операций нужно делать, да еще судя по всему в админке на хостинге... в общем, отложил это занятие, до появления времени и желания. Тем более что пока толком даже и не знаю, зачем мне эта доменная почта – просто хотел попробовать. :)
Изменено: jek_recluse - 26.02.2012 20:13:27
В человеке есть все...
 
Цитата
jek_recluse пишет:
Просто сейчас все уже настроено (и тьфу-тьфу работает), а для меня вопросы, связанные с хостингами и их настройкой довольно сложны...
Во-первых, я просто предложил проверить на другом хостинге.
Во-вторых, для этого не нужно останавливать действующий сайт - он будет работать как и работал
В-третьих, если переносить правильно, то ваш сайт на другом хостинге будет работать точно так же, как и на прежнем, никаких настроек и переделок.
Обычно это делает тот, кто предоставляет новое место размещения и как правило, бесплатно. Т.е. Вам беспокоиться не о чем.
Есть еще порох в пороховицах!
 
Спасибо за пояснения. Я даже не ожидал, что все так просто на самом деле оказывается. Запомню информацию... Про себя пока не думаю сильно, у нас и оплата на год вперед проплачивается, да и настроено все уже, плюс все-таки в одной стране с хостерами живем... в общем есть мелочи из-за которых это сейчас удобнее.

Но если кто-то из знакомых или друзей захочет сайт – обязательно направлю вам клиента. :) Тем более что в отличие от нашего хостера (там начинается с 1000 Мб) у вас есть я бы сказал уникальные тарифные планы, подходящие не только для крупных проектов, но и для начинающих сайтостроителей. Мне например, сложно представить зачем бы людям желающим простой сайт-визитку покупать 1000 Мб. Странно, что крупные хостинги этого не учитывают. А у вас этот вопрос решен, в пользу разных клиентов. Это серьезный плюс!

Кстати, а сколько у вас выйдет в рублях тариф "Макро" на 12 месяцев вместе с оплатой домена, но не .ru, а .com?
В человеке есть все...
 
Совсем заофтопили, и виноват я сам, ну да ладно, потом перенесу, чтобы вашу тему не портить.

Цитата
jek_recluse пишет:
а сколько у вас выйдет в рублях тариф "Макро" на 12 месяцев вместе с оплатой домена, но не .ru, а .com?
Домены зоны COM сейчас 350 рублей. На пробу взял себе один домен, скоро покажу.
Но параллельно ищу возможность сделать эту зону дешевле, если кому надо будет. Кстати, зона RU для постоянных партнеров - 200 руб/150 руб (чтобы продвинуться в Рунете, зона КОМ - плохая зона, Яндекс ее переваривает с трудом).

А стоимость за год ТП "Макро"? Да все просто 140 руб * 12 = 1680 руб. Но после полугода начинается скидка 5%, а после 12 мес 10%, в итоге получается меньше. Считает все автоматика, поэтому точно не скажу. Но вижу, что все работает без ошибок - все-таки взял дорогущую лицензию на систему биллинга.
Но понимаете, Евгений, у нас другая система ценностей, мы рекомендуем оплачивать небольшими суммами, минимально по 10 руб. Т.к. у нас идет ежедневное списания, т.е. есть если 140 руб/мес, то в день списывается с баланса 140/30 (или 31 - сколько дней в месяце)= 4.66 руб. А скидка 5 и 10% все равно действует одинаково, хоть сразу за год, хоть по 10 рублей пополнять баланс.

Т.е. мы даем скидку за длительность пользования, а не величину одновременно внесенной суммы. Проще говоря, мы не стремимся хапнуть как можно больше. Вот и все.
Многим удобно вносить по 10-50 рублей за раз, чтобы баланс счета держать положительным. Трата на площадку для сайта при этом, на семейном бюджете мало ощущается.
Есть еще порох в пороховицах!
Страницы: 1
Читают тему (гостей: 1)