Сейчас получается так: Сайт/категория статей/подкатегория статей/ссылка.html
как сделать чтобы было: Сайт/ссылка-content.html где слово content будет означать, что материал идет из компонента статей
если заголовки совпадать будут, то будет добавляться цифра Сайт/ссылка2-content.html
Это всеже гораздо лучше для СЕО и продвижения.
Только если статьи уже приносят трафик с пс, будет потеря его — нужно будет настроить редиректы
А насчет так лучше — я бы не спешил.
перенести в корневую директорию саму статью, зайти в нее, сохранить в корневой директории — урл поменяется на Сайт/ссылка-content.html далее берешь и переносишь эту статью, в ту директорию в которой она должна отображаться по вашему мнению.
так вот как сделать, чтобы у новых материалов были короткие ссылки без вложенности?
сохранить статью в коневой директории, а потом перенести в нужную.
но я бы не торопился делать такие вещи.
да не, это геморой — сохранять в одной, потом переносить в другую.сохранить статью в коневой директории, а потом перенести в нужную.
но я бы не торопился делать такие вещи.
Вот у видеокомпонента все грамотно сделано, но и там есть вложеность video
у статей же лучше сделать сразу ссылки второго уровня вложенности, а не третьего или четвертого
Лучшим способом будет вывести в меню 1 уровнем "Автомобили" а вторым уровнем вложенным меню уже вывести: Доп разделы статей по теме + Ссылка на категорию обьявлений авто тематики+ Раздел форума по авто+ итд. Таким образом человек наводя на меню авто получает полный набор всего, что его может интересовать.
yury, Лучше конечно. Спокойно переноси, как написал выше, прокидай в твиттер сайта новые ссылки, траффик вернется достаточно быстро.
перенести в корневую директорию саму статью, зайти в нее, сохранить в корневой директории — урл поменяется на Сайт/ссылка-content.html далее берешь и переносишь эту статью, в ту директорию в которой она должна отображаться по вашему мнению.
Так делать не стоит. Если она в категории, категория будет лучше если указана.
ну а всеже редактирвоанием фронтенда и роутера не обойтись разве?
ну а всеже редактирвоанием фронтенда и роутера не обойтись разве?
зачем приучать себя к лишнему труду?)
/* ==================================================================================================== */ /** * генерирует сеолинк для статьи * @param array $article Полный массив данных, включая id * @return str */ public function getSeoLink($article){ $seolink = ''; $cat = $this->inDB->getNsCategory('cms_category', $article['category_id']); $path_list = $this->inDB->getNsCategoryPath('cms_category', $cat['NSLeft'], $cat['NSRight'], 'id, title, NSLevel, seolink, url'); if ($path_list){ foreach($path_list as $pcat){ $seolink .= cmsCore::strToURL(($pcat['url'] ? $pcat['url'] : $pcat['title']), $this->config['is_url_cyrillic']) . '/'; } } $seolink .= cmsCore::strToURL(($article['url'] ? $article['url'] : $article['title']), $this->config['is_url_cyrillic']); $where = ' AND id<>'.$article['id']; } else { $where = ''; } $is_exists = $this->inDB->get_field('cms_content', "seolink='{$seolink}'".$where, 'id'); return $seolink; } /* ==================================================================================================== */ /* ==================================================================================================== */ /** * Возвращает урл статьи * параметр $menuid устаревший, оставлен для совместимости * @return str */ public static function getArticleURL($menuid, $seolink, $page=1){ $page_section = '/page-'.$page; } else { $page_section = ''; } $url = '/'.$seolink.$page_section.'.html'; return $url; } /** * Добавляет статью * @param array $article * @return int */ public function addArticle($article){ $article = cmsCore::callEvent('ADD_ARTICLE', $article); if ($article['url']) { $article['url'] = cmsCore::strToURL($article['url'], $this->config['is_url_cyrillic']); } // получаем значение порядка последней статьи $last_ordering = (int)$this->inDB->get_field('cms_content', "category_id = '{$article['category_id']}' ORDER BY ordering DESC", 'ordering'); $article['ordering'] = $last_ordering+1; $article['id'] = $this->inDB->insert('cms_content', $article); if ($article['id']){ $article['seolink'] = $this->getSeoLink($article); $this->inDB->query("UPDATE cms_content SET seolink='{$article['seolink']}' WHERE id = '{$article['id']}'"); cmsInsertTags($article['tags'], 'content', $article['id']); if ($article['published']) { cmsCore::callEvent('ADD_ARTICLE_DONE', $article); } } return $article['id'] ? $article['id'] : false; } * Обновляет статью * @return bool */ public function updateArticle($id, $article, $not_upd_seo = false){ $article['id']= $id; if(!$not_upd_seo){ if (@$article['url']){ $article['url'] = cmsCore::strToURL($article['url'], $this->config['is_url_cyrillic']); } $article['seolink'] = $this->getSeoLink($article); if (!$article['user_id']) { $article['user_id'] = cmsUser::getInstance()->id; } $article = cmsCore::callEvent('UPDATE_ARTICLE', $article); $this->inDB->update('cms_content', $article, $id); if(!$not_upd_seo){ $this->updateContentCommentsLink($id); } cmsInsertTags($article['tags'], 'content', $id); return true; }