2015-12-15 6 views
1

Я создаю веб-сайт, на котором есть доля Facebook и подобные кнопки. Я хочу знать, могу ли я изменить og:description, og:title, og:author и т. Д. Динамически используя PHP?Могу ли я изменить og: description, og: title, og: author и т. Д. Динамически?

Например:

<meta property="og:url" content="<?php echo my_url(); ?>"/> 
<meta property="og:type" content="website" /> 
<meta property="og:title" content="<?php echo $random_title; ?>"/> 
<meta property="og:author" content="<?php echo $random_author; ?>"/> 
<meta property="og:description" content="<?php echo $random_desc; ?>"/> 

Это описание, название, автор различны для разных должностей. Так я могу сделать это таким образом? Или есть другой способ?

я получил ошибку, когда я отладки URL с https://developers.facebook.com/tools/debug/

Extraneous Property Objects of this type do not allow properties named 'og:author'. 
Parser Mismatched Metadata The parser's result for this metadata did not match the input metadata. Likely, this was caused by the data being ordered in an unexpected way, multiple values being given for a property only expecting a single value, or property values for a given property being mismatched. Here are the input properties that were not seen in the parsed result: 'og:author' 
+0

Вы действительно пытались протестировать его, прежде чем задавали вопрос? – Eda190

+0

Я пробовал сегодня. Но описание, название и т. Д. Остается старым статическим, которое я дал несколько дней назад! Вот почему у меня есть это сомнение. –

+0

Когда инструмент отладки предоставляет вам это сообщение об ошибке, первое, что вам нужно сделать, это проверить ваш HTML. http://validator.w3.org/ – CBroe

ответ

1

Да, что вы можете. Facebook заботится только о HTML-коде (или, точнее, тегах OpenGraph), который доставляется через HTTP через веб-сервер, а не , как вы создаете его на стороне сервера.

Однако, вы должны бежать данные, которые вы оказываете внутри тегов OpenGraph, чтобы предотвратить Cross-Site Scripting атаки, например, с помощью htmlspecialchars функции РНР:

<meta property="og:url" content="<?php echo htmlspecialchars(my_url()); ?>"/> 
<meta property="og:type" content="website" /> 
<meta property="og:title" content="<?php echo htmlspecialchars($random_title); ?>"/> 
<meta property="og:author" content="<?php echo htmlspecialchars($random_author); ?>"/> 
<meta property="og:description" content="<?php echo htmlspecialchars($random_desc); ?>"/> 
+0

Спасибо за функцию 'htmlspecialchars'. Но я попытался изменить данные динамически. Но когда я пытаюсь поделиться. Данные не изменяются. У меня есть и opengraph мета-теги и обычные мета-теги, как 'мета имя =«описание»' ' мета имя =«ключевые слова»' ' мета имя =«автор»' Будет ли перезаписать мой ог мета? –

+0

@AbhishekDeveloper, как уже упоминалось в другом ответе, Facebook кэширует данные OpenGraph. Это означает, что после того, как Facebook сканирует ваш сайт, их данные не будут обновляться сразу, даже если исходный контент изменится. – helmbert

+0

Мое описание, название, автор будут разными с каждым URL-адресом. Каждый url будет «example.php/first», «example.php/second» Я показываю содержимое в example.php, но имею разные URL-адреса для каждого data.So его не проблема? –

1

Да, конечно, вы можете использовать динамические теги, до тех пор, как они генерируются на сервере. Facebook не анализирует JavaScript. Если данные все еще старые, возможно, вам придется обновить их в отладчике: https://developers.facebook.com/tools/debug/

Facebook-кэширует открытые данные Графа, убедитесь, что вы не изменяете теги на регулярной основе для определенного URL-адреса. Иначе вам придется обновлять теги все время. Поэтому забывайте о выборе случайного текста, когда другой пользователь делится вашей страницей. Кроме того, если один URL-адрес понравится много раз, данные будут заблокированы, и вы больше не сможете его изменить.

Подумайте об этом так: пользователю нравится определенный URL-адрес, ему нужен конкретный текст и специальные теги Open Graph. Теперь, если бы вы все время изменяли данные для этого конкретного URL-адреса, разве это было бы странно для Пользователя, который раньше любил его с другими данными? Только боковое примечание;)

+0

У меня есть сайт, похожий на новостной канал. У него есть php-страница, в которой данные изменяются для каждого сообщения. Как 'example.php/first'' example.php/second'. В каждом URL-адресе данные разные. –

+0

ну, это 2 разных URL-адреса, поэтому проблем нет. вы просто не должны менять теги для одного конкретного URL-адреса все время, это очень плохая идея. – luschn

+0

Я получил некоторые ошибки при отладке. Я отредактировал вопрос. Взгляните на luschn & helmbert –

Смежные вопросы