Я сеошник и другим сеошникам думаю тоже пригодится)
в файле .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