61 (edited by PunBB 2019.05.23 21:23)

Re: Pan SEO - расширение для оптимизации форума PunBB

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

---------------------------------

Посмотрите на оффоруме pun_tags, но оно для 1.4.2, не уверен пойдет ли на 1.4.4

Если вам долго не отвечают, пишите автору темы в личку или на Email.

62

Re: Pan SEO - расширение для оптимизации форума PunBB

PunBB wrote:

Поисковики и сами неплохо находят ключевые слова на страницах форума

Яшенька просит description и даже ругается когда их нет

63 (edited by PunBB 2019.05.24 09:10)

Re: Pan SEO - расширение для оптимизации форума PunBB

@kirpich, я подразумевал вставку для метатегов KEYWORDS, это уже давно не актуально. Для DESCRIPTION есть расширение Topic Description, ищите на гитхабе, может еще осталось. Но опять же, я не уверен, что то расширение вставляет описание темы в сам метатег DESCRIPTION.

---------------------------------

Вот, нашел на гитхабе версию для 1.4.2, но смотря на код в манифесте, так и не обнаружил реализацию метатегов.
Нужно будет добавлять в manifest.xml хук с запросом в бд описания темы находя ее по ID топика.

Если вам долго не отвечают, пишите автору темы в личку или на Email.

64

Re: Pan SEO - расширение для оптимизации форума PunBB

@PunBB, да вроде тут кто-то на форуме выкладывал готовое решение, я проверял-работает.  Генерит из первых строк темы

---------------------------------

Вот нашел у себя в будуаре PunBB_INFO_ICQ/smile
Манифест

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE extension SYSTEM "ext-1.0.dtd">

<!--
/**
 *
 * @copyright Copyright (C) 2009 PunBB
 * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
 * @package vb_description
 */
-->

<extension engine="1.0">
   <id>vb_description</id>
   <title>Description Generator</title>
   <version>1.0.1</version>
   <description>Auto create description tag from the content in the topic.</description>
   <author>Vb</author>
   <minversion>1.4.2</minversion>
   <maxtestedon>1.4.2</maxtestedon>
   <install>
   </install>
   <uninstall>
   </uninstall>
   <hooks>
   <hook id="hd_head"><![CDATA[
      //include functions file
      require_once $ext_info['path'].'/functions.php';
      if (FORUM_PAGE === 'viewtopic') {
      if (defined('FORUM_ALLOW_INDEX')){
      $string = preparing(get_first_post($cur_topic['first_post_id'],325));
      if (mb_strlen($string) > 75){
         $forum_head['descriptions'] = '<meta name="description" content="'.$string.'" />';
         }
      }}
   ]]></hook>   
   </hooks>
</extension>

functions.php


<?php
/**
 *
 * @copyright Copyright (C) 2009 PunBB
 * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
 * @package vb_description
*/
/**
 * Получение текста первого поста по номеру топика.
 * @param Intager $topicId - номер топика.
*/
function get_first_post($topicId) {
   global $forum_db;
   $que = array(
      'SELECT'   => 'p.message',
      'FROM'      => 'posts AS p',
      'WHERE'      => 'p.id='.$topicId,
      'LIMIT'      =>0, 1
      );
   $sult = $forum_db->query_build($que) or error(__FILE__, __LINE__);
   $re = $forum_db->fetch_assoc($sult);
   return ($re['message']);
}
/**
 *Приведение к человекочитаемому виду переданного текста.
 * @param String $str - передаваемый текст.
*/
function FormatDescription ($str) {
   $str = trim(strip_tags(str_replace(array('[',']'), array('<','>'),  $str)));

$rules = array(
      '/(«|»|„|“|”|&quot;|&ldquo;|&rdquo;)/iu' => '"', //Не наши кавычки убираем
      '/(&ndash;|&minus;|–|−|—|—|—)/iu' => '-', //Не наши тире убираем
      '/([,.;:?!]*)\s*[\r\n]+/' => '.$1',//если в конце строки знака нет, считаем ее концом предложения, ставим точку.
      '/(.)$/' => '$1.',// Точка в конце
      '/([,.;:?!-])+/iu' => '$1', //знаки не должны повторяться
      '/\s*[-]\s+|\s+[-]\s*/iu' => ' — ', //дефис обрамленный пробелами - длинное тире
      '/\s+([,.;:?!\-\)\}\]])/iu' => '$1', //перед знаком не должно быть пробела
      '/([-\(\{\[])\s+/iu' => '$1', //после знака не должно быть пробела
      '/([,.;:?!\)\}\]])/iu' => '$1 ', //после знака должен быть пробел
      '/\"\s*([^"]+)\s*\"/iu'=> ' «$1» ',  //Расставляем Ёлки
      '/»\s([,.;:?!-])/iu'=> '»$1',  //после кавычки нет пробела, только если там знак
      '/(\s|\t)+|\"/iu' => ' ',//Два и более пробелов = один пробел.
      '/^\s+|\s+$/iu' => '',// Убираем пробел с хвоста и с головы и оставшиеся кавычки
      '/\s+([0-9]{2})[\s:.,!?-]+([0-9]{2})(\s+|[.?!,:]|$)/iu' => ' $1:$2$3', // время две группы по две цифры
      '/([a-z0-9а-я])\.\s(ru|com|рф|net|org|info[^a-zа-я])/iu' => '$1.$2', // адреса
      '/\s*([,.;:?!\-\)\}\]])/iu' => '$1', //еще раз перед знаком не должно быть пробела
   );
   return (preg_replace (array_keys($rules), $rules, $str));
}
/**
 *Подготовка текста для метатега Description.
 * @param String $str - обрабатываемый текст.
 * @param Intager $limit - Номинальая длина тега.
*/
function preparing($str, $limit = 300) {
   $str = trim(mb_substr($str, 0, intval($limit*1.5))); 
   $str = FormatDescription($str);
   $pos = mb_strrpos($str, '. '); // определяем позиция последнего пробела
   $str = trim(mb_substr($str, 0, $pos +1)); // обрезаем переменную по определенно выше позиции, плюс точка.
   return ($str);
}
?>