Страница 1 из 1

Html карта сайта - готовое решение [Бесплатно]

Добавлено: 16.06.2019, 14:25
trainracing
Плагин для создания на сайте html карты сайта

Я сеошник и другим сеошникам думаю тоже пригодится)

в файле .htaccess в корне сайта сразу на следующей строке после Google sitemap добавим:

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

RewriteRule ^sitemap/?$    index.php?module=SitemapView  [L,QSA]


Далее создадим файл SitemapView.php с таким содержимым:

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

<?PHP

require_once('View.php');

class SitemapView extends View
{
    function fetch()
    {
        $url = $this->request->get('page_url', 'string');
        $page = $this->pages->get_page($url);
       
        // Отображать скрытые страницы только админу
        if((empty($page) || (!$page->visible && empty($_SESSION['admin']))) && $url != '404') {
            return false;
        }
       
        $this->design->assign('page', $page);
        $this->design->assign('meta_title', $page->meta_title);
        $this->design->assign('meta_keywords', $page->meta_keywords);
        $this->design->assign('meta_description', $page->meta_description);
       
        $pages = $this->pages->get_pages(array('visible'=>1));
        $this->design->assign('pages', $pages);
       
        $posts = $this->blog->get_posts(array('visible'=>1));
        $this->design->assign('posts', $posts);
       
        $categories = $this->categories->get_categories_tree();
        $categories = $this->cat_tree($categories);
        $this->design->assign('cats', $categories);
       
     $brands = $this->brands->get_brands();
     $this->design->assign('brands', $brands);
       
        return $this->design->fetch('sitemap.tpl');
    }
   
    private function cat_tree($categories) {

        foreach($categories AS $k=>$v) {
            if(isset($v->subcategories)) $this->cat_tree($v->subcategories);
            $categories[$k]->products = $this->products->get_products(array('category_id' => $v->id)); 
        }
       
        return $categories;
    }
}

и закинем его в папку /view/

Далее создадим файл sitemap.tpl с таким содержимым:

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

{* The canonical address of the page *}
{$canonical="/sitemap" scope=parent}



    {* The page heading *}
    <h1 class="h1">
        <span>Карта сайта</span>
    </h1>

 <div class="menu_group menu_group_1">
   

    {if $pages}
     <div class="h2">
           Страницы
        </div>
    <div class="pages">
         <ul class="fn_menu_list menu_list menu_list_1">
    {foreach $pages as $p}
          {if $p->id !=5}
            <li class="menu_item menu_item_1 menu_eventer"><a class="menu_link" href="{$p->url}">{$p->name|escape}</a></li>   
          {/if}
    {/foreach}
        </ul>
    </div>
    {/if}

    {if $posts}
     <div class="h2">
           Статьи
        </div>
    <div class="posts">
        <ul>
    {foreach $posts as $p}
            <li><a href="{$p->url}">{$p->name|escape}</a></li>   
    {/foreach}
        </ul>
    </div>
    {/if}

    {if $cats}
    <div class="cats">
   
    {function name=cat_prod}
    {if $prod}
        <ul class="product">
        {foreach $prod as $p}
            <li><a href="products/{$p->url}">{$p->name}</a></li>
        {/foreach}
        </ul>
    {/if}
    {/function}   
   
    {function name=cat_tree}
    {if $cats}
        <ul>
        {foreach $cats as $c}
            {* Показываем только видимые категории *}
            {if $c->visible}
                <li><a href="catalog/{$c->url}">{$c->name}</a>
                    {cat_tree cats=$c->subcategories}
                    {cat_prod prod=$c->products}
                </li>
            {/if}
        {/foreach}
        </ul>
    {/if}
    {/function}
   
    {cat_tree cats=$cats}
    </div>
    {/if}
   
  {if $brands}
        <div class="h2">
           Бренды
        </div>

        <div>
            {foreach $brands as $b}
                <div >
                    <a class="" href="{$lang_link}brands/{$b->url}" data-brand="{$b->id}">
                       <div class="">
                                <span>{$b->name|escape}</span>
                            </div>
                       
                    </a>
                </div>
            {/foreach}
        </div>
    {/if}
 
 
</div>


(стили и верстка по вашему вкусу) и закинем этот файл в шаблон дизайна.

Дальше идем в шаблон breadcrumb.tpl, ищем

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

 {* Cart page *}


И выше вставим:

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

{* Sitemap *}
        {elseif $smarty.get.module == "SitemapView"}
            <li>Карта сайта</li>


В идеале еще в админке добавить в меню футера страницу /sitemap и назвать "карта сайта"

Готово. Вроде ничего не забыл.

пример - https://lidmaker.ru/sitemap

Добавлено: 19.06.2019, 13:46
softmobidev
и какой смысл сего действа?

Добавлено: 20.06.2019, 08:01
OkayCMS
softmobidev писал(а):и какой смысл сего действа?

Староверы ещё верят что карта сайта HTML помогает в продвижении сайта.

Добавлено: 23.06.2019, 08:49
trainracing
OkayCMS писал(а):
softmobidev писал(а):и какой смысл сего действа?

Староверы ещё верят что карта сайта HTML помогает в продвижении сайта.
Это дает то, что у вас есть одна страница со всеми ссылками. Если у вас новая страница появилась, но нигде нет ссылок на нее - яндекс увидит ее через эта карту. В версии 1.2.4 например в sitemap.php не добавляются новые страницы (не блога)

Добавлено: 23.06.2019, 10:06
korshunov
trainracing писал(а):Это дает то, что у вас есть одна страница со всеми ссылками. Если у вас новая страница появилась, но нигде нет ссылок на нее - яндекс увидит ее через эта карту.

1. Если, например, создается новая категория, то ссылка на нее появится в блоке категорий и поисковик ее увидит. И предлагаемая карта тут ничем не лучше и не хуже - на ней будет та же ссылка, что и на прочих страницах.
2. Аналогично и для нового поста блога и для новой страницы.
3. Или имеется в виду случай, когда создаются на сайте совсем уж специфичные очень засекреченные страницы, на которые на сайте совем ни одной ссылки не планируется? Тогда ссылки не будет и на предлагаемой карте - на ней только то, что создается в админке в категориях, блоге, страницах.
4. "со всеми ссылками" - это совсем не так. Ссылок на страницы товаров там нет. Если появится новый товар, то ссылки на него на предлагаемой карте не будет, тут она совсем бесполезна.

Так что цель сего действа, похоже, автор внятно пока объяснить не может...

Добавлено: 24.06.2019, 06:12
OkayCMS
korshunov писал(а):
trainracing писал(а):Это дает то, что у вас есть одна страница со всеми ссылками. Если у вас новая страница появилась, но нигде нет ссылок на нее - яндекс увидит ее через эта карту.

1. Если, например, создается новая категория, то ссылка на нее появится в блоке категорий и поисковик ее увидит. И предлагаемая карта тут ничем не лучше и не хуже - на ней будет та же ссылка, что и на прочих страницах.
2. Аналогично и для нового поста блога и для новой страницы.
3. Или имеется в виду случай, когда создаются на сайте совсем уж специфичные очень засекреченные страницы, на которые на сайте совем ни одной ссылки не планируется? Тогда ссылки не будет и на предлагаемой карте - на ней только то, что создается в админке в категориях, блоге, страницах.
4. "со всеми ссылками" - это совсем не так. Ссылок на страницы товаров там нет. Если появится новый товар, то ссылки на него на предлагаемой карте не будет, тут она совсем бесполезна.

Так что цель сего действа, похоже, автор внятно пока объяснить не может...
Не нужно быть таким агрессивным. Смысл от карты сайта HTML есть. Да, в последнее время все меньше, но всё-же иногда она может быть полезной. Вреда она точно не принесет, пользу - возможно, так что если бесплатно - то почему бы и не сделать :)

Добавлено: 24.06.2019, 06:53
korshunov
OkayCMS писал(а):Не нужно быть таким агрессивным.

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

OkayCMS писал(а):Смысл от карты сайта HTML есть. Да, в последнее время все меньше, но всё-же иногда она может быть полезной.

Я всего лишь добиваюсь хоть чего-то содержательного, кроме общих фраз. Какой-нибудь пример хоть маленькой, но КОНКРЕТНОЙ возможной пользы, если кто знает...

Добавлено: 07.06.2020, 22:27
poromon
softmobidev писал(а):и какой смысл сего действа?
думаю смысл сего действа вот такой Изображение

Добавлено спустя 4 минуты:
https://monosnap.com/file/DwL01HlqvmlWylz2k4Td3d8ZVRe1fm

Добавлено: 08.06.2020, 06:42
OkayCMS
poromon писал(а):
softmobidev писал(а):и какой смысл сего действа?
думаю смысл сего действа вот такой Изображение


https://monosnap.com/file/DwL01HlqvmlWylz2k4Td3d8ZVRe1fm
Так для этого нужна xml карта сайта. Она есть а системе

Добавлено: 08.06.2020, 09:19
poromon
ткните носом, я не нашел.

Добавлено спустя 3 минуты 15 секунд:
А все, нашел. вот я удот, а я купил в маркетплейсе))))

Добавлено: 09.11.2021, 13:44
irekunenko
Если кто прикручивал подобное на 4.1.1/4.2 - отпишитесь в ветке, пожалуйста

Добавлено: 09.11.2021, 15:29
korshunov
Создавать подобное для версии 4 можно, например, по образцу модуля FAQ, схема очень похожа.

Добавлено: 09.11.2021, 16:38
dimitriy
хм...а что разве сейчас нет sitemap по умолчанию? или тут сугубо речь идет про html карту сайта?

Добавлено: 09.11.2021, 20:03
OkayCMS
dimitriy писал(а):хм...а что разве сейчас нет sitemap по умолчанию? или тут сугубо речь идет про html карту сайта?
Сугубо про html карту. XML карта есть по умолчанию