Что бы при использовании плагина googleplusone совместно с BlogTNG при попытке “поделиться” постом в Google+ вставлялся не абы какой текст, а то, что вам нужно, следует внести некоторые модификации в используемый вами шаблон.
Обычно, главный файл шаблона, отвечающий за формирование страницы имеет имя main.php
, но это может и не совсем соответствовать вашим реалиям. Тогда его вам придётся поискать самим.
Для начала, согласно рекомендациям самого гугла к открывающий `` следует модифицировать таким образом, что бы указывалась схема на http://schema.org:
<html ... itemscope itemtype="http://schema.org/Blog">
У меня он принял такой вид:
<html xmlns="http://www.w3.org/1999/xhtml" itemscope itemtype="http://schema.org/Blog">
Далее нужно добавить meta-заголовки:
<!-- Google Plus Ready -->
<meta itemprop="name" content="<?php tpl_pagetitle()?>" />
<meta itemprop="description" content="<?php echo pageDescription()?>" />
<meta itemprop="image" content="/img/logo.png" />
<!-- Google Plus Ready -->
Все заголовки, которые могут быть можно посмотреть в описании схемы Blog: http://schema.org/Blog, основные, на которые можно обратить внимание:
- name - заголовок поста
- description - собственно короткое описание поста, которые и используется при попытке поделиться постом в Google+
- image - картинка поста, пока не придумал как использовать кроме как жестко задать лого блога, но теоретически, можно парсить вывод странички поста и брать первую картинку.
Далее, непонятная функция pageDescription()
, пишем её сами, помещаем в начало файла шаблона или в отдельный php-файл и подключаем директивой include. Сама функция выглядит так:
function pageDescription()
{
global $ID;
global $REV;
$title = "";
$ret = p_wiki_xhtml_summary($ID, $title, $REV, false);
// Заменаяем в результирующем html все " на '
$ret = str_replace("<br/>"", "'", $ret);
// Удаляем первый заголовок - незачем его повторять
$ret = preg_replace('/<[hH]1>.*<<br/>/[hH]1>/U', '', $ret);
// Теперь удаляем все html-теги, иначе текст не будет использоваться
$ret = strip_tags($ret);
// Убираем дублирующиеся переводы строк (теоретически можно заменить одним регулярным выражением, но на данный момент не заморачивался)
while (true)
{
$old = $ret;
$ret = preg_replace('/<br/>n<br/>n/mU', "<br/>n", $ret);
if ($ret == $old)
{
break;
}
}
return $ret;
}
По сути, создаёт короткое описание поста. Используется функция p_wiki_xhtml_summary()
, объявленная устаревшей (deprecated), поэтому, если в будущем её удалят, придётся использовать p_wiki_xhtml()
и трюки вида:
$length = 256;
$ret = preg_replace('/<br/>s+?(<br/>S+)?$/', '', substr($ret, 0, $length));
перед return
На этом всё пока.