PHP: проблема с константой / PageTitle и Facebook как кнопка - PullRequest
0 голосов
/ 31 октября 2010

Я использую константы для отображения заголовков страниц на разных языках:

 // lang.en.php
 define(_PAGE_TITLE, "Pagetitle");

 // lang.de.php
 define(_PAGE_TITLE, "Seitentitel");

Я разместил кнопку «Мне нравится» на этой странице, и все работает, за исключением одного: если я отправлю ссылку, используя кнопку «Мне нравится», заголовок в Facebook будет выглядеть так:

XY нравится _PAGE_TITLE

Константа не заменяется значением в Facebook, но заменяется в HTML-коде. У кого-нибудь есть идея, почему константа не заменяется, если Facebook захватывает заголовок страницы с моего сайта?

Спасибо.

Edit: Только что обнаружил, что у бота facebook заголовок HTTP_ACCEPT_LANGUAGE установлен на английский, и возникла проблема с моим языковым файлом. В любом случае, я бы хотел, чтобы бот по умолчанию брал немецкий перевод. Есть ли способ поймать бота в фейсбуке и переписать для него языковые настройки?

Ответы [ 2 ]

0 голосов
/ 31 октября 2010

Что касается ваших правок, если вы используете новый API Facebook или социальные плагины, вы можете переопределить заголовок страницы, используя теги <meta>, например:

<meta property="og:title" content="<?php echo _GERMAN_PAGE_TITLE; ?>" />

Помните!Чтобы использовать эти мета-теги свойств, необходимо объявить пространства имен Facebook и Open Graph в теге <html>.

<html 
    xmlns:og="http://opengraphprotocol.org/schema/"
    xmlns:fb="http://www.facebook.com/2008/fbml"
>

Для дальнейшего чтения взгляните на это: http://developers.facebook.com/docs/opengraph

0 голосов
/ 31 октября 2010

Сервер Facebook выбирает вашу страницу и извлекает заголовок для получения этой информации. Поэтому разумно предположить, что ваша система (по какой-то причине) отображает страницу с заголовком "_PAGE_TITLE" вместо правильного значения из языкового файла. Это означает, что в автоматизированном запросе Facebook есть что-то особенное, из-за чего языковой файл никогда не включается.

Итак, что вызывает включение правильного lang-файла? Что будет делать ваш код, если он не сможет определить, какой языковой файл включить (например, отсутствует заголовок «Accept-Language» ... или что-то еще).

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

...