1

Тема: Карта сайта для гугла

Карта сайта для Strawberry 1.1.1 была построена на базе rss.php и некоторых доработок...
1 что нужно - это создать шаблон для ссылок, который бы понимал гугл.
/data/tpl/google/active.tpl

<url>
<loc><?=htmlspecialchars($tpl['post']['link']['post']); ?></loc>
  <priority>0.5</priority>
  <changefreq>daily</changefreq>
</url>

2 - это скрипт выводящий карту сайта, к примеру, google.php:

<?php
/**
 * @package Show
 * @access private
 */

include_once 'news/head.php';

add_filter('allow-comment-form', 'comment_form');

function comment_form(){return false;}

add_filter('unset-template', 'unset_template');

function unset_template($files){

    $files[] = basename($_SERVER['PHP_SELF']);

return $files;
}

header('Content-type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" ?>';
?>

<urlset
  xmlns="http://www.google.com/schemas/sitemap/0.84"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84
                      http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">

<?
/**
 * $row=$sql->select(array('table' => 'news', 'select' => array('id')));
 * $result = count($row);
 * $skip=rand(0, $result); // если новостей слишком много, можно поставить случайный вывод
 */

$template = 'google';
$number = ($number ? $number : 1500); // где 1500 - количество новостей.
$config['cnumber'] = 0;
include root_directory.'/show_news.php';
?>

</urlset>

3 - А теперь делаем удобным формирование карты для гугла, создаем php файл, который будет запускаться через cron раз в день:

<?
$rss = file_get_contents("http://www.moy-sayt.ru/google.php");
$file = fopen ("/path-to-host/sitemap.xml","w");
fwrite($file,$rss);
fclose($file);
?>

И теперь наша карта сайта для гугла будет сохраняться ежедневно в файл sitemap.xml ! smile

P.S. Огромное спасибо всем форумчанам, чьими советами воспользовался для реализации этой идеи!
Лёха zloy и красивый, SHiSH, ANT-Soft, респект! wink

Отредактировано UltraPixel (27 Apr 2007 13:17:47)

Strawberry 1.1.1

Re: Карта сайта для гугла

Error постоянно.
Не могу понять в чем причина.
Все делал по порядку..
права на файл sitemap.xml - 777

<url><loc>http://www.sait.ru/</loc><priority>0.5</priority><changefreq>weekly</changefreq></url>
вот таких 9 строк... совершенно одинаковых и не понятных.
хелп.

Спасибо!
Strawberry 1.1.1

3

Re: Карта сайта для гугла

Marss, ты точно шаблон создал правильный?!
Я про: /data/tpl/google/active.tpl
Шаблон создается на основе "remote_headlines", т.е. в темплейте главный только один файл active.tpl c кодом, который идет выше (все остальные файла шаблона пустые)...
Также может еррор возникает из-за того, что у тебя новостей менее 1500! smile
Поставь в этой строке нужное число!

$number = ($number ? $number : 150); // где 150 - количество новостей.

И еще, что конкретно у тебя в "ерроре" идет?

На счет непонятных строк...
Это просто ты говоришь гуглу какие странички у тебя на сайте есть и о том, что их надо проиндексировать...
smile


---


Также для небольших сайтов возможен такой вариант google.php:

<?php
/**
 * @package Show
 * @access private
 */

include_once 'news/head.php';

add_filter('allow-comment-form', 'comment_form');

function comment_form(){return false;}

add_filter('unset-template', 'unset_template');

function unset_template($files){

    $files[] = basename($_SERVER['PHP_SELF']);

return $files;
}

function count_all_entry(){
global $sql;
$row=$sql->select(array('table' => 'news', 'select' => array('id')));
$result = count($row);
return ($result ? $result : '0');
}

header('Content-type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" ?>';
?>

<urlset
  xmlns="http://www.google.com/schemas/sitemap/0.84"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84
                      http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">

<?
$row=$sql->select(array('table' => 'news', 'select' => array('id')));
$result = count($row);
$template = 'google';
$number = count_all_entry(); 
$config['cnumber'] = 0;
include root_directory.'/show_news.php';
?>

</urlset>

Отредактировано UltraPixel (27 Apr 2007 13:17:06)

Strawberry 1.1.1

4

Re: Карта сайта для гугла

to UltraPixel
google.php работает на ура, но sitemap.xml пустой и в броузере выдает:

Ошибка синтаксического анализа XML: элемент не найден
Адрес: sitemap.xml
Строка 1, символ 1:

10 раз перепроверил правильно ли сделал с вышеописанного.
Заранее спб.

-------------------------------
Strawberry 1.1.1

Отредактировано dmitrikys (04 Mar 2007 21:09:16)

5

Re: Карта сайта для гугла

dmitrikys, см код xml. там всё нормально.
Или скачай его любым закатчиком и посмотри в блокноте.
Или google site analis`тиком проверь. Он скажет есть ли ошибки в карте, или нету.

Strawberry 1.1.1

Re: Карта сайта для гугла

UltraPixel! может я чо путаю.. Например, где должны лежать все эти файлы? в корне сайта, в папке с Strawberry ?
не догоню. у меня в xml пишится эрор от провайдера(!) ))
гон какой-то не могу победить

вот ссылка на xml
и вот такая фигня постоянно... Помоги, плизз.

Спасибо!

Strawberry 1.1.1

7

Re: Карта сайта для гугла

Marss, темплейт -> в папке data со скриптом, ну там где обычно шаблоны лежат)
Скрипты - в корне...

Да, а php у тебя xml код выводит?
Может быть просто, что хост у тебя не позволяет xml через "fwrite($file,$rss);" создавать...
Если php код карты выводит, то можно просто на гугле прописать путь к php карте, он такое тоже должен понимать! wink

Strawberry 1.1.1

Re: Карта сайта для гугла

Да, нормально вроде заработал.
Теперь поперли ошибки, ругается на символы &nbsp; и пр.
можно как-то этого избежать? У меня их тыщи, боюсь что править неделю.
Тем более в тексте нет явного &nbsp;, есть просто пробел. От пробелов не могу отказаться )

тут ошибки
и тут ошибки вообще фиг пойми ((

Спасибо!
Strawberry 1.1.1

9

Re: Карта сайта для гугла

smile Слушай... какие пробелы "nbsp"?! Зачем они? В ссылках же без них идет...
Ты свой шаблон создал?

<url>
<loc><?=htmlspecialchars($tpl['post']['link']['post']); ?></loc>
  <priority>0.5</priority>
  <changefreq>daily</changefreq>
</url>

У тебя там только линка выводиться должна!
Карта сайта для гугла без текста идет) Только ссылка, приоритет и статус изменения... smile

UPD У тебя новости выводятся в разных шаблонах и переменная "$tpl['post']['link']['post']" ведет себя некорректно... sad Где-то на форуме об этом было...

Отредактировано UltraPixel (27 Apr 2007 13:37:11)

Strawberry 1.1.1

Re: Карта сайта для гугла

Привет !!! ребята подскажите пожалуйста  что может быть за причина мне выдает

Не удается отобразить страницу XML
Не удается просмотреть ввод XML с использованием списка стилей . Исправьте ошибку и затем нажмите кнопку "Обновить"или повторите попытку позднее.

Для документа XML должен существовать документ более высокого уровня. Ошибка при обработке ресурса ''http://rgishchev.kiev.ua/sitemap.xml''.

И у меня еще вопрос а тот файл который просто php его куда нада сохранять и называть можна как угодно или как !!!

11

Re: Карта сайта для гугла

IDAL, у тебя всё нормально в xml...

 <?xml version="1.0" encoding="UTF-8" ?> 
- <urlset xmlns="http://www.google.com/schemas/sitemap/0.84" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84 http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">
- <url>
  <loc>http://rgishchev.kiev.ua/new/example?id=2</loc> 
  <priority>0.5</priority> 
  <changefreq>daily</changefreq> 
  </url>
- <url>
  <loc>http://rgishchev.kiev.ua/new/example?id=1</loc> 
  <priority>0.5</priority> 
  <changefreq>daily</changefreq> 
  </url>
- <!--  Powered by Strawberry | http://Strawberry.GoodGirl.ru 
  --> 
  </urlset>

А тот файл, как угодно можешь назвать! smile Твоё право...

Strawberry 1.1.1

Re: Карта сайта для гугла

UltraPixel, да победил карту.
Проблема была в префиксе www в самом гугле )
Я там указал sait.ru а из crone.php шел www.sait.ru

IDAL - посмотри через файр фокс. ие чото подглючивает с xml

Спасибо!

Re: Карта сайта для гугла

Да  все работает вроде премного благодарен  smile парни !!! wink
Marss у тя сайтик приколный !!! wink

Re: Карта сайта для гугла

Извините, не подскажите в чем проблема? не работает описанный выше метод.
Выдается ошибка:

"Не удается отобразить страницу XML
Не удается просмотреть ввод XML с использованием списка стилей . Исправьте ошибку и затем нажмите кнопку "Обновить"или повторите попытку позднее.


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

Ошибка в элементе верхнего уровня документа. Ошибка при обработке ресурса ''http://freshcss.org/sitemap_.xml''. Строка 23,...

echo '<?xml version="1.0" encoding="UTF-8" ?>';
"
Заранее благодарен всем откликнувшимся. Спасибо;)

15

Re: Карта сайта для гугла

Prof!, смотри внимательнее эту тему... уже было... глюки в IE, google поймет! wink
или тупо скачай свой xml файл, к примеру, регетом и открой в блокноте! wink

Strawberry 1.1.1

Re: Карта сайта для гугла

Сделал все что указано в первом посте. Ничего не получилось. Поставил отчет о выполнении на мыло (файл для crona - domap.php). Пришли вот такие каракули:

Warning: fopen(): Unable to access /sata1/home/users/politzone/www/www.site.khakov.ua/sitemap.xml in /sata1/home/users/politzone/www/www.site.kharkov.ua/domap.php on line 3

Warning: fopen(/sata1/home/users/politzone/www/www.site.khakov.ua/sitemap.xml): failed to open stream: Invalid argument in /sata1/home/users/politzone/www/www.site.kharkov.ua/domap.php on line 3

Warning: fwrite(): supplied argument is not a valid stream resource in /sata1/home/users/politzone/www/www.site.kharkov.ua/domap.php on line 4

Warning: fclose(): supplied argument is not a valid stream resource in /sata1/home/users/politzone/www/www.site.kharkov.ua/domap.php on line 5

Strawberry 1.1.1

Третья строчка: $file = fopen ("/path-to-host/sitemap.xml","w");
Я полностью прописал путь: /sata1/home/users/politzone/www/www.назв.khakov.ua/sitemap.xml
Нужна помощь. Что ещё надо сделать?

Отредактировано cmd (22 Aug 2008 11:17:26)

Есть такая штука как IceStrawberry 1.04 b. Можете юзать на свой страх и риск... или слямзить что-то. Мне фиолетово.

Re: Карта сайта для гугла

для работы крона, посмотри что хостеры пишут, у меня напимер в самом начеле файла надо указать это

#!/usr/bin/php -q

Без этого работать небудет
Еще выставь права на фаил 755

Век живи, день учись. А можно и наоборот.

Re: Карта сайта для гугла

Уберите из <br />  и т.п. этот символ - / . Чтобы было - <br>. И всё проходит на отлично.

Re: Карта сайта для гугла

На txtSQL карта вообще работает? Вначале было очень много проблем с тем, чтобы она сгенерировалась наконец. А теперь когда я смотрю на то что сгенерировалось, то понимаю что не этого хотел. В карте новости упорно идет в дефолтном шаблоне... вот так.
А на другом сайте с MySQL вообще никаких проблем не возникло... Все отлично стало. Спасибо всем создателям скрипта.

__________


Проблему решил анальным способом.


__________

Через месяц: случайно обнаружил, что проблема была в регистре букафф. Все работает.

Отредактировано cmd (02 Oct 2008 13:24:19)

Есть такая штука как IceStrawberry 1.04 b. Можете юзать на свой страх и риск... или слямзить что-то. Мне фиолетово.

Re: Карта сайта для гугла

Проблему решил анальным способом.

Вот поэтому я люблю РОССИЮ.

Вообщем натолкнулся на такую проблему:
Когда сайт начал развиваться все было оки, в файле google.php стоял вывод 1500 ссылок, но современем все постепенно и постепенно эти 1500 ссылок превратились в 130. Если ставить больше вылетает ошибка 500.
Ну и тут я не долго думая (как всегда, хорошо или плохо во сновном 2-е , решать вам)Вот прям как молния в голову ударила и все, решил подключить $sort
Подключил со всем чем можно было:
Т.е. сорировка по дате, по просмотрам, по коментам, по ......
Напомню что гугл разрешает добавлять много файлов Sitemap. (в нашем случае google.php)
Теперь все оки!!!
Далее мои опасения:
1) неделю назад задал роботу гуглика самую что ненаесть высокую скорость сканирования, может я не прав, но у некоторых слабая машина стоит, от наплыва файлов google.php и тех ссылок которые в нем находятся, может сервак загнуться на время (может это и чушь я сказал) мне это не гразит smile
2) страници на 100% какие то будут повторяться, может ли гугл перестать сканировать сайт или нет?
Ну и може мой изврашенный метод заменить каким то более легким и естественным методом?

Все же мне нравится такой метод smile

Век живи, день учись. А можно и наоборот.

21

Re: Карта сайта для гугла

Вопрос на засыпку - можно ли каким-нибудь образом не выводить некоторые категории?

Я не крутой ...
... я только учусь!

Re: Карта сайта для гугла

Если в файле google.php указать какие категории выводить, то работать будет
Поставь это и не вписывай те категории которые ненужно обрабатывать

$category = '1,2,3,4,....';
Век живи, день учись. А можно и наоборот.

23

Re: Карта сайта для гугла

т.Е. яВНО зАПРЕТИТЬ нЕ пОЛУЧИТСЯ?

Я не крутой ...
... я только учусь!

Re: Карта сайта для гугла

Неа, если он захочет проиндексить то проиндексит, но это в файле ситимап
А если тогда в robots.txt поставить запрет на категории
Что то типа этого

Disallow: /0.php  ========   страница где выводится категория (все новости категории)
Disallow: /?category=0   =======     линка на категорию
и т.д. .......

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

http://robotstxt.org.ru/rurobots/
http://www.xml-sitemaps.com/

Отредактировано Ms.Dred (27 Dec 2008 16:57:42)

Век живи, день учись. А можно и наоборот.

25

Re: Карта сайта для гугла

Собственно вопрос стоял более узко - именно про генерацию sitemap. Через robots.txt у меня и так закрыто то что не нужно для индексации.
ЗЫ : а ссылочки прикольные, кое-что нового узнал.

Я не крутой ...
... я только учусь!