МногоСайтовый MaxSite: sitemap

Пятница, 1 мая 2009 г.
Рубрика: Сайтостроительство
Метки: |
Подписаться на комментарии по RSS

Приветствую! Вчера под конец дня у меня родилась идея. Всё по теме MaxSite МногоСайт. А именно о вынесении в папку шаблона файла sitemap.xml. Как это было реализовано я сейчас и напишу.

Я решил воспользоваться уже известной мне схемой: через наш любимый Mod Rewrite ;-) - прописываем в .htaccess такую строчку:

  • RewriteRule ^sitemap.xml$ http://%{HTTP_HOST}/sitemap.php 
  • RewriteRule ^sitemap.xml$ /sitemap.php
И ещё изменить
  • RewriteCond $1 !^(index\.php|uploads|robots\.txt|favicon\.ico)
На
  • RewriteCond $1 !^(index\.php|uploads|robots\.txt|sitemap\.xml|favicon\.ico)
Это перенаправление с sitemap.xml на sitemap.php. Как и с robots.txt идея та же. Нужно перенаправить поисковик со статического файла на файл скрипта, который успешно и динамически сформирует нам нужную структуру.

Сам файл выглядит похитрее, чем robots.php:

  • <?php
  • $hostway=str_replace('.','_',$_SERVER['HTTP_HOST']);
  • $hostway='./application/maxsite/templates/'.$hostway.'/sitemap.xml';
  • header("Content-type: application/xml");
  • echo file_get_contents($hostway);
  • ?>
Сначала мы берём строчку с хостом сайта и заменяем точку на символ подчёркивания. Затем формируем путь к шаблону. Заметьте: папку шаблона придётся переименовать примерно в такую - askname_ru. Можно конечно сделать хитрый скрипт, дабы избежать этого... Но мне лень да и смысла не вижу... При смене шаблона просто переименовываем папку и все дела. После формирования пути отправим заголовок, что тип страницы - xml. Мы ведь карту сайта формируем да? :-) Ну и наконец выводим то, что лежит у нас по адресу тырыпыры/шаблон/sitemap.xml.

Итак, основная часть готова и нам нужно лишь слегка подправить плагин формирования карты сайта, чтобы файл сливался куда нам нужно. Собственно я сделал так:

  • $hostway=str_replace('.','_',$_SERVER['HTTP_HOST']);
  • $hostway='/application/maxsite/templates/'.$hostway.'/sitemap.xml';
  • $fn = realpath(dirname(FCPATH)).$hostway;
Это нужно вписать вместо оператора присваивания переменной $fn. По умолчанию она сливает файл в корень. После этих преобразований, можно отказаться от идеи отдельной папки для каждого сайта и делать по принципу: один сайт - один шаблон.

Ну вот пожалуй и всё. Хочу так же обрадовать: скоро выпущу дополнение для преобразования в многосайтовую систему. Думаю это нужно сделать, по структуре будет примерно так: ставите MaxSite, поверх льёте мои труды и на выходе у вас многосайтовая система. Наверное за выходные сделаю пробную бету ;-)

Комментариев: 8

  1. 2009-08-21 в 16:35:06 | Комментатор 3
    ]]>]]>

    Было бы супер если этот движок можно будет использовать под мультиблоговую систему. Я построил сервис блогов на Life Type, но она всё же жрёт больше ресурсов сервера чем Max Site, хотя и меньше чем WordPress.

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

  2. 2009-08-23 в 01:41:15 | Иван Александрович ( UmFal )
    ]]>]]>

    По многоблоговости именно для пользователей вряд ли дело далеко зайдёт. Тут думаю необходима правка системных файлов и будет проблема с совместимостью с MaxSite разных версий. Хотя уже сейчас можно делать сателлиты на этой системе, пользуясь только одной базой и одними файлами.

    Дело здесь в другом. Есть специализированные системы, вроде движка хабрахабры. Достаточно лёгкие и развивающиеся. А Макс уже на форуме отвечал, что не планирует развивать MaxSite в многоблог. Кстати мой небольшой хак и появился после его ответа.

  3. 2009-08-31 в 05:51:38 | Комментатор 4
    ]]>]]>

    для чего файл sitemap.xml выносить в папку шаблона? может, лучше завести отдельную папку sitemap в корне, поставить на нее права 777, а к имени файла добавлять префикс как для таблиц в БД. и не придется каждый раз при добавлении сайта лезть в дебри файловой системы, создавать папку, выставлять права на файл... или планируете хранить в той папке еще какую-то инфу?

    > RewriteRule ^sitemap.xml$ http://%{HTTP_HOST}/sitemap.php

    http://%{HTTP_HOST}

    лучше сократить до RewriteRule ^robots.txt$ /robots.php

    иначе выдается 302 редирект. а с учетом редиректа с www.domen.ru на domen.ru, получается целых 2 редиректа.

    и карту сайта хотелось бы получить без лишних редиректов.

    не знаю, почему вы отказались от решения

    header("Content-type: application/xml");

    echo file_get_contents($hostway);

    из-за лишней нагрузки на сервер? наверное, можно как-то обойтись rewrite'ми...

    и спасибо за превращение maxsite в multi maxsite. как раз искал решение))) буду тестить

  4. 2009-08-31 в 05:54:31 | Комментатор 4
    ]]>]]>

    ошибся.

    > RewriteRule ^sitemap.xml$ http://%{HTTP_HOST}/sitemap.php

    http://%{HTTP_HOST}

    лучше сократить до RewriteRule ^robots.txt$ /robots.php

    в предыдущем комменте следует читать как:

    > RewriteRule ^robots.txt$ http://%{HTTP_HOST}/robots.php

    лучше сократить до RewriteRule ^robots.txt$ /robots.php

  5. 2009-08-31 в 19:19:09 | Иван Александрович ( UmFal )
    ]]>]]>

    Согласен. Спасибо:) Внёс изменения в статью.

  6. 2009-08-31 в 19:28:30 | Иван Александрович ( UmFal )
    ]]>]]>

    По вынесению в отдельную папку думал, но решил, что незачем. итак используется папка шаблона для одного сайта, так зачем огород городить? Хотя не уверен, может стоит и в отдельную вынести.

  7. 2009-09-13 в 05:58:30 | Комментатор 4
    ]]>]]>

    > итак используется папка шаблона для одного сайта

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

    и еще.

    недавно глянул - яндексу отдается много 404 страниц. оказалось, ты выложил старую версию xml sitemap генератора. она не учитывает отложенную публикацию. то есть в карту сайта отдавались посты с датой больше текущей. и яшка, есстественно, их получить не мог)

  8. 2009-09-15 в 16:29:54 | Иван Александрович ( UmFal )
    ]]>]]>

    Да была такая проблема. Странно что версия sitemap генератора от версии к версии вроде не менялась. Исправим.

Оставьте комментарий!

Используйте нормальные имена.

(обязательно)

Поиск

Статистика

Rambler's Top100