Возможно?
Ну, например, мойсайт.ru/category1/subcategory1/subcategory2/post1.html — не есть хорошо.
Гораздо лучше мойсайт.ru/post1.html
Но при этом в навигации сайта должны остаться все эти категории и подкатегории, чтобы например вывести список статей в оределенной категории.
Встает вопрос. А можно ли так сделать??? Вырезание части url ???
public function getSeoLink($article){ $seolink = ''; $category = $this->inDB->get_fields('cms_category', "id={$article['category_id']}", 'NSLeft, NSRight'); $left_key = $category['NSLeft']; $right_key = $category['NSRight']; $path_list = $this->getCategoryPath($left_key, $right_key); if ($path_list){ foreach($path_list as $pcat){ if ($pcat['id']!=1){ $seolink .= cmsCore::strToURL(($pcat['url'] ? $pcat['url'] : $pcat['title'])) . '/'; } } } $seolink .= cmsCore::strToURL(($article['url'] ? $article['url'] : $article['title'])); if ($article['id']){ $where = ' AND id<>'.$article['id']; } else { $where = ''; } $is_exists = $this->inDB->rows_count('cms_content', "seolink='{$seolink}'".$where, 1); if ($is_exists) { $seolink .= '-' . $article['id']; } return $seolink; }
public function getSeoLink($article){ $seolink = ''; $seolink .= cmsCore::strToURL(($article['url'] ? $article['url'] : $article['title'])); if ($article['id']){ $where = ' AND id<>'.$article['id']; } else { $where = ''; } $is_exists = $this->inDB->rows_count('cms_content', "seolink='{$seolink}'".$where, 1); if ($is_exists) { $seolink .= '-' . $article['id']; } return $seolink; }
Но тогда наверное можно наткнуться на какие-то подводные камни. Вдруг еще где-то эта функция работает и там нужен полный путь??
Камень первый
Сделал по примеру как у вас, доюавлял новости как положено, URL были вида site.ru/moyanovost.html
Затем в разделе новостей заметил что выводятся новости в обратном порядке не как на главной и решил сменить вывод по убыванию, и все ссылки слетели, стали вида site.ru/novosti/razdel/moyanovost.html ну и естественно с ПС все вылетело, теперь каждую новость редактирую что бы ссылки вернуть как были.
Как можно обойти эту проблему??
Камень второй, в новостях типа site.ru/novost.html не отображаются sidebar maintop и т.д. Т.е хочу баннер впихнуть в sidebar а он не появляется. Что делать не понятно, работает только если поставить галочку отоброжать на всех.
Ну, если уж так вам хочется, то можете подредактировать файл /core/cms.php строки где-то 1565 в методе detectComponent() со следующим кодом
//если компонент не существует, считаем это content $this->uri = 'content/'.$this->uri; $this->is_content = true; return 'content';
У меня та же потребность и по той же причине. Есть, правда, мнение, что урлы давно уже не влияют на индексацию сайта. Утверждать и спорить не буду, но на основании консультации с профи, которому [у меня] есть основания доверять, вижу это целесообразным. К тому же так просто эстетичнее — ничего лишнего)).Как известно не рекомендуется для улучшения продвижения сайта делать слишком большую вложенность статей.
Ну, например, мойсайт.ru/category1/subcategory1/subcategory2/post1.html — не есть хорошо.
Гораздо лучше мойсайт.ru/post1.html
Но при этом в навигации сайта должны остаться все эти категории и подкатегории, чтобы например вывести список статей в оределенной категории.
Здесь Till даёт решение для урлов статей. Всё вроде замечательно работает. Но кроме статей есть ещё урлы блогов, профилей пользователей, групп… Пользователь nedoriko предлагает скинуться и заплатить тому, кто возьмётся за доработку…
Это было бы замечательно. Я видел подобный сервис в Дискуз (китайская CMS). Там можно урлы формировать по своему усмотрению. И не приходится даже спорить о целесообразности того или иного варианта))).В таком случае навязывается вопрос. Как сделать чтоб URL формировались не из пути по сайту-модулям а в виде свободной реализации URL