SEO урл - уменьшить вложенность ссылок

#1 12 сентября 2014 в 20:52
Подскажите пожалуйста, как уменьшить вложенность ссылок статей в категориях?

Сейчас получается так: Сайт/категория статей/подкатегория статей/ссылка.html

как сделать чтобы было: Сайт/ссылка-content.html где слово content будет означать, что материал идет из компонента статей
если заголовки совпадать будут, то будет добавляться цифра Сайт/ссылка2-content.html


Это всеже гораздо лучше для СЕО и продвижения.
#2 12 сентября 2014 в 21:16
перенести в корневую директорию саму статью, зайти в нее, сохранить в корневой директории — урл поменяется на Сайт/ссылка-content.html далее берешь и переносишь эту статью, в ту директорию в которой она должна отображаться по вашему мнению.
Только если статьи уже приносят трафик с пс, будет потеря его — нужно будет настроить редиректы
А насчет так лучше — я бы не спешил.
#3 12 сентября 2014 в 21:24

перенести в корневую директорию саму статью, зайти в нее, сохранить в корневой директории — урл поменяется на Сайт/ссылка-content.html далее берешь и переносишь эту статью, в ту директорию в которой она должна отображаться по вашему мнению.

alllffa

так вот как сделать, чтобы у новых материалов были короткие ссылки без вложенности?
#4 12 сентября 2014 в 21:26
yury
сохранить статью в коневой директории, а потом перенести в нужную.
но я бы не торопился делать такие вещи.
#5 12 сентября 2014 в 21:48

сохранить статью в коневой директории, а потом перенести в нужную.
но я бы не торопился делать такие вещи.

alllffa
да не, это геморой — сохранять в одной, потом переносить в другую.

Вот у видеокомпонента все грамотно сделано, но и там есть вложеность video
у статей же лучше сделать сразу ссылки второго уровня вложенности, а не третьего или четвертого
#6 12 сентября 2014 в 22:39
Давно уже писал, но повторю совет. Все разделы ставьте в корень раздела статей. Например Раздел "Автомобили", а в нем разделы "Ремонт авто" и тд. Вот разделы не должны входить друг в друга, но надо же структурировать и сделать удобно?

Лучшим способом будет вывести в меню 1 уровнем "Автомобили" а вторым уровнем вложенным меню уже вывести: Доп разделы статей по теме + Ссылка на категорию обьявлений авто тематики+ Раздел форума по авто+ итд. Таким образом человек наводя на меню авто получает полный набор всего, что его может интересовать.

yury, Лучше конечно. Спокойно переноси, как написал выше, прокидай в твиттер сайта новые ссылки, траффик вернется достаточно быстро.

перенести в корневую директорию саму статью, зайти в нее, сохранить в корневой директории — урл поменяется на Сайт/ссылка-content.html далее берешь и переносишь эту статью, в ту директорию в которой она должна отображаться по вашему мнению.

alllffa

Так делать не стоит. Если она в категории, категория будет лучше если указана.
#7 12 сентября 2014 в 23:22
letsgo, спасибо за совет!

ну а всеже редактирвоанием фронтенда и роутера не обойтись разве?
#8 12 сентября 2014 в 23:43

ну а всеже редактирвоанием фронтенда и роутера не обойтись разве?

yury

зачем приучать себя к лишнему труду?)
#9 26 сентября 2014 в 00:03
я так понимаю за генерацию сеолинка отвечают эти функции — они и добавляют в урл те категории, куда вложена статья. Подскажите гуру, как убрать добавление в урл статьи урл категорий?
  1.  
  2.  
  3. /* ==================================================================================================== */
  4. /**
  5.   * генерирует сеолинк для статьи
  6.   * @param array $article Полный массив данных, включая id
  7.   * @return str
  8.   */
  9. public function getSeoLink($article){
  10.  
  11. $seolink = '';
  12.  
  13. $cat = $this->inDB->getNsCategory('cms_category', $article['category_id']);
  14.  
  15. $path_list = $this->inDB->getNsCategoryPath('cms_category', $cat['NSLeft'], $cat['NSRight'], 'id, title, NSLevel, seolink, url');
  16.  
  17. if ($path_list){
  18. foreach($path_list as $pcat){
  19. $seolink .= cmsCore::strToURL(($pcat['url'] ? $pcat['url'] : $pcat['title']), $this->config['is_url_cyrillic']) . '/';
  20. }
  21. }
  22.  
  23. $seolink .= cmsCore::strToURL(($article['url'] ? $article['url'] : $article['title']), $this->config['is_url_cyrillic']);
  24.  
  25. if (!empty($article['id'])){
  26. $where = ' AND id<>'.$article['id'];
  27. } else {
  28. $where = '';
  29. }
  30.  
  31. $is_exists = $this->inDB->get_field('cms_content', "seolink='{$seolink}'".$where, 'id');
  32.  
  33. if ($is_exists) { $seolink .= '-'.(!empty($article['id']) ? $article['id'] : uniqid()); }
  34.  
  35. return $seolink;
  36.  
  37. }
  38.  
  39. /* ==================================================================================================== */
  40. /* ==================================================================================================== */
  41. /**
  42.   * Возвращает урл статьи
  43.   * параметр $menuid устаревший, оставлен для совместимости
  44.   * @return str
  45.   */
  46. public static function getArticleURL($menuid, $seolink, $page=1){
  47.  
  48. if((is_numeric($page) && $page>1) || is_string($page)){
  49. $page_section = '/page-'.$page;
  50. } else {
  51. $page_section = '';
  52. }
  53.  
  54. $url = '/'.$seolink.$page_section.'.html';
  55.  
  56. return $url;
  57.  
  58. }
  59.  
  60. /**
  61.   * Добавляет статью
  62.   * @param array $article
  63.   * @return int
  64.   */
  65. public function addArticle($article){
  66.  
  67. $article = cmsCore::callEvent('ADD_ARTICLE', $article);
  68.  
  69. if ($article['url']) { $article['url'] = cmsCore::strToURL($article['url'], $this->config['is_url_cyrillic']); }
  70.  
  71. // получаем значение порядка последней статьи
  72. $last_ordering = (int)$this->inDB->get_field('cms_content', "category_id = '{$article['category_id']}' ORDER BY ordering DESC", 'ordering');
  73. $article['ordering'] = $last_ordering+1;
  74.  
  75. $article['id'] = $this->inDB->insert('cms_content', $article);
  76.  
  77. if ($article['id']){
  78.  
  79. $article['seolink'] = $this->getSeoLink($article);
  80. $this->inDB->query("UPDATE cms_content SET seolink='{$article['seolink']}' WHERE id = '{$article['id']}'");
  81.  
  82. cmsInsertTags($article['tags'], 'content', $article['id']);
  83.  
  84. if ($article['published']) { cmsCore::callEvent('ADD_ARTICLE_DONE', $article); }
  85.  
  86. }
  87.  
  88. return $article['id'] ? $article['id'] : false;
  89. }
  90.  
  91.  
  92. * Обновляет статью
  93. * @return bool
  94. */
  95. public function updateArticle($id, $article, $not_upd_seo = false){
  96.  
  97. $article['id']= $id;
  98.  
  99. if(!$not_upd_seo){
  100.  
  101. if (@$article['url']){
  102. $article['url'] = cmsCore::strToURL($article['url'], $this->config['is_url_cyrillic']);
  103. }
  104.  
  105. $article['seolink'] = $this->getSeoLink($article);
  106.  
  107. } else { unset($article['seolink']); unset($article['url']); }
  108.  
  109. if (!$article['user_id']) { $article['user_id'] = cmsUser::getInstance()->id; }
  110.  
  111. $article = cmsCore::callEvent('UPDATE_ARTICLE', $article);
  112.  
  113. $this->inDB->update('cms_content', $article, $id);
  114.  
  115. if(!$not_upd_seo){
  116. $this->updateContentCommentsLink($id);
  117. }
  118.  
  119. cmsInsertTags($article['tags'], 'content', $id);
  120.  
  121. return true;
  122.  
  123. }
  124.  
  125.  
  126.  
#10 26 сентября 2014 в 10:52
ребят, очень надо, помогите поджалуйста
#11 26 сентября 2014 в 11:27
#12 26 сентября 2014 в 12:00
я про версию 1.10.4
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.