как автоматически добавить микроразметку при помощи php

D2
На сайте с 27.05.2014
Offline
5
999

Здравствуйте. Многие из вас внедряют на сайт микроразметку schema.org или другую. Я перелопатил кучу информации на эту тему. Если у людей готовый движок, то они могут использовать плагин. У меня же просто самописный. Возникла проблема. Например, чтобы добавить тег микроразметки к списку, который находится в таблице (или к картинкам), нужно сделать замену при помощи str_replace. Я написал такой код: str_replace ("<li", "<li itemprop="ingredients"", "$text"); Но ничего не получается. Помогите пожалуйста! Где его прописать и правильный ли он? Заранее спасибо. Вот код страницы:

<?php include ("blocks/bd.php");

if(isset($_GET['id'])) {$id = $_GET['id']; }

if (!isset($id)) {$id = 1;}

/* Проверяем, является ли переменная числом */

if (!preg_match("|^[\d]+$|", $id)) {

exit ("<p>Неверный формат запроса! Проверьте URL!");

}

$result = mysql_query("SELECT * FROM data WHERE id = '$id'",$db);

if (! $result)

{

echo "<p>no</p>";

exit (mysql_error());

}

$myrow = mysql_fetch_array($result);

<div id="text">

<?php

printf ("<h2>%s</h2>",

$myrow ["title2"]);?>

<div id="adsens2"><?php include ("adsens_center.php"); ?></div>

<div id="cl_rvrez">

<p class="sovet">Знаете ли вы, что:</p>

<?php $result9 = mysql_query('SELECT * FROM `vrezka` ORDER BY rand() LIMIT 1');

while ($row = mysql_fetch_array($result9))

{

echo $row['sovet'];

}?></div>

<?php

printf ("<p class='post_add'>Автор: %s</p><p class='post_add'>Дата: %s</p>%s<p class='post_view'>Просмотры: %s</p>",

$myrow["author"],

$myrow["date"],

$myrow["text"],

$myrow["view"]);?>

domen4you
На сайте с 08.03.2013
Offline
53
#1
denis21:
str_replace ("<li", "<li itemprop="ingredients"", "$text");

не читал дальше, но так вроде нельзя кавычки делать

str_replace ("<li", "<li itemprop=\"ingredients\"", "$text");

или

str_replace ("<li", "<li itemprop='ingredients'", "$text");

попробуй

IW
На сайте с 16.12.2014
Offline
73
#2

Да с кавычками косяк, и, из любопытства, в чем смысл этого str_replace и printf в коде приведенном? нельзя просто строку поменять и вставлять переменные опять же в строку?

по-моему, только лишняя нагрузка на php, а преимуществ никаких не вижу в таких конструкциях.

SSD VPS скидка 25% по купону iwork https://cp.inferno.name/cart.php?gid=23 | надежный хостинг http://bit.ly/2Yiq93h
D2
На сайте с 27.05.2014
Offline
5
#3

Вот попробовал такой код, но ничего не вышло опять

$text2 = str_replace ("<li>", "<li itemprop="ingredients" >", "$text");

echo $text2;

А смысл всего сводится к тому, чтобы в списки, которые находятся в $text вставить кусочек микроразметки

---------- Добавлено 16.01.2015 в 09:08 ----------

domen4you:
не читал дальше, но так вроде нельзя кавычки делать

str_replace ("<li", "<li itemprop=\"ingredients\"", "$text");
или
str_replace ("<li", "<li itemprop='ingredients'", "$text");
попробуй

Не помогло

totamon
На сайте с 12.05.2007
Offline
437
#4
denis21:
Вот попробовал такой код, но ничего не вышло опять
$text2 = str_replace ("<li>", "<li itemprop="ingredients" >", "$text");
echo $text2;
А смысл всего сводится к тому, чтобы в списки, которые находятся в $text вставить кусочек микроразметки
Не помогло

а кавычки? "смотрю в книгу, а вижу фигу" 🍿

$text2 = str_replace ("<li>", "<li itemprop=\"ingredients\" >", "$text");
Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
domen4you
На сайте с 08.03.2013
Offline
53
#5

а что собственно в переменную $text попадает? не видно где она объявляется...

D2
На сайте с 27.05.2014
Offline
5
#6
domen4you:
а что собственно в переменную $text попадает? не видно где она объявляется...

Я думал что где-то в этой функции.

printf ("<p class='post_add'>Автор: %s</p><p class='post_add'>Дата: %s</p>%s<p class='post_view'>Просмотры: %s</p>",

$myrow["author"],

$myrow["date"],

$myrow["text"],

$myrow["view"]);

Почитал справочник, написано что переменная, объявленная в функции относится только к ней. Как объявить переменную вне функции? Просто прописать $GLOBALS["text"];? Подскажите пожалуйста

domen4you
На сайте с 08.03.2013
Offline
53
#7

смотреть откуда список (li) берется, так из кода не видно

D2
На сайте с 27.05.2014
Offline
5
#8
domen4you:
смотреть откуда список (li) берется, так из кода не видно

Список находится в тексте, который находится в таблице data. В верхней части кода происходит выборка:

$result = mysql_query("SELECT * FROM data WHERE id = '$id'",$db);

if (! $result)

{

echo "<p>no</p>";

exit (mysql_error());

}

$myrow = mysql_fetch_array($result);

В поле текст находится и список и картинки, в которых так же нужно проставить теги микроразметки. Как туда добраться, ума не преложу 😕. Не руками же все делать!

Polkan
На сайте с 28.09.2005
Offline
102
#9

$myrow["text"] = str_replace ('<li', '<li itemprop="ingredients"', $myrow["text"]);

printf ("<p class='post_add'>...

WordPress-плагин для Apishops (http://p-api-shop.ru/) P-API-Shop WooCommerce-плагин для Apishops (http://woo-apishops.ru/) Woo-Apishops
D2
На сайте с 27.05.2014
Offline
5
#10
Polkan:
$myrow["text"] = str_replace ('<li', '<li itemprop="ingredients"', $myrow["text"]);
printf ("<p class='post_add'>...

:) Ура! Заработало. Спасибо вам большое.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий