Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[3.2]SEO Sitemap

У вас есть идея для расширения функциональности phpBB? Расскажите о ней здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Perfecthus
phpBB 2.0.11
Сообщения: 803
Стаж: 13 лет 5 месяцев
Откуда: Оттуда
Благодарил (а): 51 раз
Поблагодарили: 86 раз

Re: [3.2]SEO Sitemap

Сообщение Perfecthus »

vit_pro писал(а): 03.02.2020 22:36 sitemap.xml не нужен?
Он виртуальный, физически на сервере не создаётся, роботы его видят, по-ссылке карта открывается, что ещё нужно?
Аватара пользователя
vit_pro
phpBB 1.4.4
Сообщения: 116
Стаж: 4 года 2 месяца
Благодарил (а): 51 раз
Поблагодарили: 9 раз

Re: [3.2]SEO Sitemap

Сообщение vit_pro »

Perfecthus писал(а): 03.02.2020 23:04 Он виртуальный, физически на сервере не создаётся, роботы его видят, по-ссылке карта открывается, что ещё нужно?
Собственно больше ничего, именно такое разъяснение, благодарю Perfecthus! :)
ciiz1
phpBB 2.0.4
Сообщения: 440
Стаж: 6 лет 8 месяцев
Благодарил (а): 100 раз
Поблагодарили: 30 раз

Re: [3.2]SEO Sitemap

Сообщение ciiz1 »

Re: [3.1][3.2][release] SEO Meta Description
Продолжение темы, а как собственно добавить главную страницу форума в эту карты, поковырял, не получилось.
Аватара пользователя
Kuskow
phpBB 1.4.4
Сообщения: 160
Стаж: 7 лет 10 месяцев
Откуда: Караганда
Благодарил (а): 25 раз
Поблагодарили: 15 раз

Re: [3.2]SEO Sitemap

Сообщение Kuskow »

ciiz1, Главную страницу любого сайта включать в Sitemap не нужно, потому что о её сущестсвовании робот знает и так, раз уж он добрался до карты. То есть, и без всякой карты само собой понятно, что пользователь (или бот), зайдя на сайт, попадает на главную его страницу или будет туда перенаправлен редиректом. Для этого не нужно никаких карт.
ciiz1
phpBB 2.0.4
Сообщения: 440
Стаж: 6 лет 8 месяцев
Благодарил (а): 100 раз
Поблагодарили: 30 раз

Re: [3.2]SEO Sitemap

Сообщение ciiz1 »

Это ясно, но протекционист во мне не дремлет, в теории никто не запрещает делать сайты без главной страницы, да и поддоменены бывают.
Да и дословно Ваши слова
Тут же запрещается индексировать всю страницу, которая:
а) отсутствует в списке Sitemap;
Аватара пользователя
Kuskow
phpBB 1.4.4
Сообщения: 160
Стаж: 7 лет 10 месяцев
Откуда: Караганда
Благодарил (а): 25 раз
Поблагодарили: 15 раз

Re: [3.2]SEO Sitemap

Сообщение Kuskow »

Там суть была в обратном направлении: что если страница отсутствует в Sitemap, то Google не будет ругаться, если я запрещу ему индексировать её.
А невключение страницы в Sitemap никак не вредит этой странице. Главное, чтобы не было разногласий.
Ну и главная страница - особенное. Не нужно её в Sitemap совершенно точно.
Аватара пользователя
Kuskow
phpBB 1.4.4
Сообщения: 160
Стаж: 7 лет 10 месяцев
Откуда: Караганда
Благодарил (а): 25 раз
Поблагодарили: 15 раз

Re: [3.2]SEO Sitemap

Сообщение Kuskow »

Долго использовал расширение от Shredder, и всё было хорошо, но когда перевалило за 40 тыс страниц, на создание карты стало уходить больше двух минут. Яндекс столько ждать отказывается. Пришлось поверх расширения нарисовать PHP-скрипт, который запускался из cron и уже в нём запрашивалась страница app.php/sitemap.xml, сохранялась в корневую папку форума как файл, и туда же копировались файлы sitemap-X.xml. И это, конечно, выход, но и его изящным не назовёшь.

Перечитав и перепробовав всякого про Sitemap я понял, что все эти приоритеты, периоды обновления и время создания страниц не учитываются ни Гуглом, ни Яндексом, а с других поисковиков новых пользователей ждать не приходится. А значит XML тут вот совершенно лишний. Потырклся, поискал другие расширения, но они ещё сложнее, и везде XML.

В итоге написал свой PHP, который выбирает данные напрямую из базы, работает 0.1 секунд, создаёт текстовые файлы .TXT со списком страниц разделов и тем. Ну и добавил туда сразу главную страницу форума, хоть она совсем и не обязательна.

Как ни странно, писалось легко несложно, подглядывал в index.php и viewtopic.php - как там чего сделано. К версиям не привязано, если имена столбцов в базе не поменяются. Тут такое, наверное, нельзя публиковать, да? Ну в общем, у кого форум вырос, проще написать новую PHP, чем замудряться всякими расширениями. Для маленьких и начинающих, конечно, расширение установить проще.
Аватара пользователя
RedNaxi
Former team member
Сообщения: 933
Стаж: 17 лет 1 месяц
Откуда: BeBoss.ru
Благодарил (а): 2 раза
Поблагодарили: 10 раз

Re: [3.2]SEO Sitemap

Сообщение RedNaxi »

А яндекс и гугл поддерживают sitemap в формате текста?
Аватара пользователя
Kuskow
phpBB 1.4.4
Сообщения: 160
Стаж: 7 лет 10 месяцев
Откуда: Караганда
Благодарил (а): 25 раз
Поблагодарили: 15 раз

Re: [3.2]SEO Sitemap

Сообщение Kuskow »

Да, поддерживают, проверено и в инструменте проверки Sitemap Яндекса, и потом когда смотришь отчёт об индексировании конкретной страницы в Гугле, он пишет, что нашёл в sitemap.txt и т.д. Ну и в документации у них тоже написано:
Google писал(а):Если в файле Sitemap есть только адреса страниц, вы можете отправить Google обычный текстовый файл с этими URL (по одному в каждой строке). Пример:

http://www.example.com/file1.html
http://www.example.com/file2.html


Рекомендации по текстовым файлам Sitemap
Необходимо использовать кодировку UTF-8.
Файл не должен содержать ничего, кроме списка URL.
Этому текстовому файлу можно дать любое имя, но необходимо использовать расширение .txt (например, sitemap.txt).
https://support.google.com/webmasters/a ... 3668?hl=ru
Яндекс писал(а):TXT
Используйте этот формат, чтобы сообщить только об адресах страниц.
Пример:

https://www.example.com/page1.html
https://www.example.com/page2.html


https://yandex.ru/support/webmaster/con ... temap.html
Пробовал и многофайловый Sitemap, когда в головном указывается только список других мапов - тоже работает правильно, никто не ругается.
Аватара пользователя
RedNaxi
Former team member
Сообщения: 933
Стаж: 17 лет 1 месяц
Откуда: BeBoss.ru
Благодарил (а): 2 раза
Поблагодарили: 10 раз

Re: [3.2]SEO Sitemap

Сообщение RedNaxi »

Понял, спасибо.

Я у себя использую многофайловый в формате xml, тоже в поисковиках работает без проблем.
Буду иметь в виду возможность использования txt
Аватара пользователя
romaamor
phpBB 3.0.3
Сообщения: 2144
Стаж: 12 лет
Откуда: Одесса
Благодарил (а): 619 раз
Поблагодарили: 144 раза

Re: [3.2]SEO Sitemap

Сообщение romaamor »

Kuskow писал(а): 18.06.2020 14:13 В итоге написал свой PHP, который выбирает данные напрямую из базы, работает 0.1 секунд, создаёт текстовые файлы .TXT со списком страниц разделов и тем. Ну и добавил туда сразу главную страницу форума, хоть она совсем и не обязательна.
Так поделитесь.
Аватара пользователя
Kuskow
phpBB 1.4.4
Сообщения: 160
Стаж: 7 лет 10 месяцев
Откуда: Караганда
Благодарил (а): 25 раз
Поблагодарили: 15 раз

Re: [3.2]SEO Sitemap

Сообщение Kuskow »

Я не знаю, можно ли тут такое размещать. А правила читать лень, как всегда. А так как давно тут не участвовал, всех веяний не уследил.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16359
Стаж: 17 лет 11 месяцев
Откуда: Красноярск
Благодарил (а): 521 раз
Поблагодарили: 1742 раза

Re: [3.2]SEO Sitemap

Сообщение rxu »

Можно.
Изображение
Аватара пользователя
Kuskow
phpBB 1.4.4
Сообщения: 160
Стаж: 7 лет 10 месяцев
Откуда: Караганда
Благодарил (а): 25 раз
Поблагодарили: 15 раз

Re: [3.2]SEO Sitemap

Сообщение Kuskow »

Публикую текст, а не файл, чтобы имя_файла.php придумали сами. Искренне не рекомендую называть его одинаково (например, sitemap.php) и запускать из браузера. Если запускаете из браузера, а затем решите им пользоваться, то переименуйте этот PHP, и добавьте задание в CRON. Это для того, чтобы боты никогда сами не обращались к этому скрипту, а брали только созданными им файлы *.txt

Скрипт создаёт один файл sitemap.txt, если ссылок в нём не более заданного максимума. А если больше, то все ссылки размещаются в файлах sitemap-1.txt, sitemap-2.txt, ... Тогда в головном sitemap.txt только их оглавление. Все эти файлы записываются туда же, где будет находиться этот скрипт.

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

Код: Выделить всё

<?php
// Создание текстовых файлов Sitemap для форума phpBB
// Этот PHP-скрипт должен находиться там же, где и config.php, результирующие файлы записываются в ту же директорию
// Перед запуском установить Настроечные константы (см. ниже)

error_reporting(E_ALL);
set_time_limit(30) or die('set_time_limit');

function getconfig ($config_name)  // Получение параметра из конфигцрации базы данных
	{
	global $db, $table_prefix;
	$query = "SELECT config_value FROM {$table_prefix}config WHERE config_name='$config_name'";
	$result = mysqli_query($db,$query) or die("ERROR: $query");
	list($config_value) = mysqli_fetch_row($result) or die("mysqli_fetch_row config");
	mysqli_free_result($result);
	return $config_value;
	};

function puturl ($url)  // Добавление одного URL в стек
	{
	global $urls_per_file, $maps, $xmap, $ymap, $host;  // глобальные переменные будут изменены
	if ($xmap == $urls_per_file)  // Очередной файл заполнен, начинаем следующий
		{
		file_put_contents(__DIR__.'/sitemap-'.++$ymap.'.txt',$maps);  // Записываем очередной файл
		$xmap = 0;
		$maps = '';
		};
	$xmap++;
	$maps .= "$host$url\n";
	};

// Открываем базу данных;
include(__DIR__.'/config.php');
$db = mysqli_connect($dbhost,$dbuser,$dbpasswd,$dbname) or die('Ошибка открытия базы данных');

// Настроечные константы
$forums_disallow = '24,25';  // Список закрытых форумов через запятую, которые не попадут в Sitemap или пустая строка
$urls_per_file = 50000;  // Максимальное количество адресов в одном файле Sitemap, не более 50000
$topics_per_page = getconfig('topics_per_page');  // Сколько тем на странице форума
$posts_per_page = getconfig('posts_per_page');  // Сколько сообщений на странице темы
$host = getconfig('server_protocol').getconfig('server_name').getconfig('script_path');  // Адрес форума

// Начальные значения счётчиков и накопительных переменных
$maps = "$host\n";  // Первый элемент в Sitemap - стартовая страница
$xmap = 1;  // счётчик URL в файле (один там уже есть)
$ymap = 0;  // Счётчик файлов

// Формируем список страниц для форумов
$query = "SELECT forum_id,forum_topics_approved FROM {$table_prefix}forums ".($forums_disallow ? "WHERE forum_id NOT IN ($forums_disallow)" : "")." ORDER BY forum_id";
$result = mysqli_query($db,$query) or die("Error: $query");
while (list($fid,$fta) = mysqli_fetch_row($result))  // По всем найденным форумам
	{
	puturl($url = "viewforum.php?f=$fid");  // URL начальной страницы форума
	for ($start=$topics_per_page; $start < $fta; $start+=$topics_per_page)  // Перечень тем в форуме на несколько страниц
		puturl("$url&start=$start");
	};
mysqli_free_result($result);  // Освобождаем память, занятую результатами запроса

// Формируем список страниц для тем
$query = "SELECT forum_id,topic_id,topic_posts_approved FROM {$table_prefix}topics WHERE topic_posts_approved AND NOT topic_moved_id ".($forums_disallow ? "AND forum_id NOT IN ($forums_disallow)" : "")." ORDER BY topic_id";
$result = mysqli_query($db,$query) or die("Error: $query");
while (list($fid,$tid,$tpa) = mysqli_fetch_row($result))  // По всем темам
	{
	puturl($url = "viewtopic.php?t=$tid");  // URL начальной страницы темы
	for ($start=$posts_per_page; $start<$tpa; $start+=$posts_per_page)  // В теме несколько страниц
		puturl("$url&start=$start");
	};
mysqli_free_result($result);  // Освобождаем память, занятую результатами запроса

// Записываем остатки стека в файл
if ($ymap)  // Как минимум один файл уже записан, значит их будет несколько
	{
	$xmap = $urls_per_file;
	puturl('');  // Записываем остатки в очередной файл
	$i = 0;
	$maps = '';
	while (++$i <= $ymap) $maps.="{$host}sitemap-$i.txt\n"; // Накапливаем оглавдение в стеке
	};
file_put_contents(__DIR__."/sitemap.txt",$maps);

mysqli_close($db);  // Закрываем базу данных

P.S. Любая критика будет полезной.
Аватара пользователя
southklad
phpBB 3.1.0 RC2
Сообщения: 3232
Стаж: 12 лет 3 месяца
Благодарил (а): 704 раза
Поблагодарили: 152 раза

Re: [3.2]SEO Sitemap

Сообщение southklad »

Kuskow, Не совсем понимаю, там можно разбить карту по странично, у меня 43000 страниц, они разбиты на три карты по 20000, все через расширение
Изображение

Вернуться в «Запросы расширений для phpBB»