Возможность изменения ЧПУ

  • 10 Ответов
  • 2424 Просмотров

SergusNET

  • Сообщений: 57
    • Просмотр профиля
    • Заработок в интернете
Возможность изменения ЧПУ
« : 29 Апреля 2018, 08:23:30 »
Как мне видится, одним из недостатков Danneo (при множестве достоинств), является роутинг. Все знают, каким он был в прошлых версиям, каким он стал.
Убраны метки read и view, что можно только приветствовать. Но что получили в результате. Полной вложенности категории нет, сколько бы ни было родительских категорий, путь будет один: домен/мод/последняя категория/ страница. А при смене категории страницы она теряет УРЛ.
Мне кажется, одним из важных факторов развития любой CMS является возможность перейти на нее с другой системы без потери адресов страниц. Я недавно обновлял сайт со старой на новую версию Danneo, потерял около 10000 урлов. Благо он не коммерческий и было все равно. Обновил второй сайт — каталог организаций торгового комплекса. Магазины часто меняются, меняется направленность, название и т.д. И снова страницы теряют УРЛы, тоже некоммерческий вариант был... Сейчас хочу обновить еще один с версии 0.53 , но уже коммерческий, и я, не видя решения, вплотную рассматриваю вопрос о сваливании с Danneo, ибо часто страницы устаревают и переносятся в другую категорию с потерей УРЛ. Ну не будешь же каждый раз в htaccess лезть...

Предложение: должна быть любым способом (хоть бы правкой кода) возможность задания УРЛ как минимум двумя способами:

1. Адреса, где в УРЛ страницы показываются ВСЕ ВЛОЖЕННЫЕ категории: домен/мод/категория-1/категория-2/категория-3/страница
2. Адреса, где в УРЛ страницы все вложенные категории НЕ ПОКАЗЫВАЮТСЯ (при смене категории страница не теряет УРЛ): домен/мод/страница

Второй пункт мне представляется неизмеримо важнее первого.
« Последнее редактирование: 29 Апреля 2018, 15:04:01 от SergusNET »

jek

  • Сообщений: 50
    • Просмотр профиля
Re: Возможность изменения ЧПУ
« Ответ #1 : 15 Октября 2019, 22:11:23 »
Очень толково описано. Поддерживаю.
Именно тем, что урлы постоянны, меня устраивала предыдущая разработка.
Кстати, в нюкевиет, урлы тоже меняются от категории, считаю это минусом.
Точнее минус в том, что нет возможности выбора вариантов.

Neon

  • Сообщений: 806
    • Просмотр профиля
    • Danneo CMS
Re: Возможность изменения ЧПУ
« Ответ #2 : 16 Октября 2019, 14:40:50 »
В новой ветке Danneo CMS длина URL с точки зрения СЕО наиболее оптимальна.

Предпочтительный размер адреса страницы должен составлять 75-120 символов.
URL-адрес страницы не должен содержать бесконечное множество вложенностей, это скажется не только на читабельности, но и при ранжировании страницы.
URL-адрес (с ЧПУ) должен содержать только слова относящиеся к содержанию страницы.
Ключевые слова в ЧПУ учитываются поисковыми роботами и влияют на релевантность страниц.
Бесконечные разные, названия вложенных категорий могут ставить поисковик в тупик при определении ранжирования страницы.

Конечно, поисковики индексируют URL длиной до 2000 символов, и браузеры с этим справляются.
Но, базовое требование того же Google - все должно быть удобно для пользователя!
Это автоматически означает, что если URL длинный => значит плохо читаемый => значит плохо для пользователя => значит ранг будет ниже.

Цитировать
URL-адрес должен включать 3-5 слов.
Максимальная длина URL (SEO) хоть и не ограничивается современными браузерами, но, по заявлению Мэтт Каттса, чем она будет меньшей, тем лучше.
Если адрес будет включать больше 5 слов, то вес ключей в глазах поисковика будет снижен.
Более того, длинные ссылки всегда обрезаются при показе в поисковой выдаче, что снизит кликабельность сниппета.

Цитировать
Никогда не используйте большую вложенность в URL.
Чем дальше будет находиться страница от Главной, тем меньший вес она получает.
Огромное количество подкатегорий может рассматриваться как спам.
Короткие URL позволяют получить такие преимущества, как максимальная концентрация веса на ключе.

Мне вообще странно объяснять такие простые и давно разжёванные вещи, людям с опытом.

to, SergusNET

По поводу пункта 2.
Ваши размышления противоречат логике.
Если страница изменила категорию, значит она принадлежит другой категории, значит и URL должен быть другим.

Приведу простой пример:
Категория "Брянский кирпич" => страница "Брянский кирпич светлый"
URL - /catalog/bryanskiy-kirpich/bryanskiy-kirpich-svetly

Вы переносите страницу в другую категорию, к примеру "Липецкий кирпич".
URL - /catalog/lipeckiy-kirpich/bryanskiy-kirpich-svetly
Где логика?

С точки зрения поисковика "брянский" - "брянский", это логично.
Страница вложена в папку с бряским кирпичем. Дважды упоминается ключ "брянский", дважды упоминается ключ "кирпич".
Все логично связано, значит концентрация ключа будет высокой.

При переносе в другую категорию, будет чехарда.

Что касается пункта 1.
Добавить возможность, при желании использовать полную вложенность, вероятно можно, но это будет связано с большими усложнениями функционала.
Да и на скорости обработки формирования ссылки с ЧПУ, тоже безусловно скажется.
Надо подумать, я давно не занимался ядром, быстро, навскидку, даже не могу сказать.
« Последнее редактирование: 16 Октября 2019, 15:04:43 от Neon »
DANNEO ™

Neon

  • Сообщений: 806
    • Просмотр профиля
    • Danneo CMS
Re: Возможность изменения ЧПУ
« Ответ #3 : 16 Октября 2019, 16:19:57 »
Я недавно обновлял сайт со старой на новую версию Danneo, потерял около 10000 урлов.
Что значит потерял?

Я тоже переносил свои сайты и сайты клиентов, в том числе и коммерческие, со старой версии на новую.
Ни одной страницы не утеряно. Более того, как раз на коммерческих позиции выросли.
Не сразу конечно. Но нужно просто плотно работать с поисковиками. В том же Яндекс.мастере есть возможность массовой работы с ссылками.
Пачками (если не ошибаюсь по 500 шт. за 1 раз) сначала добавляешь старые страницы на удаление, потом, так же, пачками добавляешь новые на переиндексацию.
И, через неделю все старые удалены, новые в индексе.

Другое дело, что позиции поначалу могут просесть. И Яндекс и Google борются со спамом, и всегда подозрительно смотрят на любые изменения на сайте.
Но, если больше ничего не трогать, то через пару апдейтов выдачи все восстанавливается.
Более того, если правильно поработать с заголовками, плюс новый (правильный) ЧПУ, то позиции будут расти.

Если ничего не делать, то конечно часть может потеряться.
Дело в том,  что часть старых страниц поисковик мог бы и так уже давно выбросить, из-за низкой ревалентности или малой важности для пользователя.
Но, он делает это не быстро, ждет, что может на эти страницы еще кто-то будет заходить, и какое-то время оставаться там. Значит она еще представляет какую-то важность.
Но, рано или поздно, если движений нет, он их все равно выкинет.
А тут они просто разом исчезают, и появляются новые. Он их сразу же начинает рассматривать в лупу, и если по каким-то критериям не подходят, удаляет.

Но, если ты ему говоришь, что старые нужно срочно удалить, а новые срочно проиндексировать, то и поисковик смотрит на это по другому.
По крайней мере, я убедился на своем опыте. Можно загнать новые страницы в индекс, даже если поисковик сомневается в их важности.
Нужно просто настойчиво их предлагать переиндексировать. Этим ты ему напоминаешь, что они для тебя очень важные, а он может ошибаться.

Конечно, на это уходит какое-то время. Но, другого варианта нет.
Конвертировать старые ссылки в новые автоматом не получится, структура совершенно не совпадает, это я про Danneo.
Конвертировать Вордовские ссылки с их вложенностями дат вместо каталогов, номеров категорий вместо каталогов и пр., так же, не имеет ни какого смысла.

Как делал я.
Писал простенький скрипт.
1. Делал выгрузку всех старых ссылок, списком.
2. Делал выгрузку всех новых ссылок, списком.
И потом работал с этими списками в Вебмастере, сначала на удаление, чтобы быстро очистить индекс.
Затем со вторым списком, на добавление (переиндексацию).

Если Яндекс что-то пропускал из нового списка, а страница для меня важная, я его заморю до смерти пока он не добавит её в индекс )
Я больше работаю с Яндексом т.к. коммерческие сайты региональные, а у Яши региональный таргетинг лучше.
Но, в Google вебмастере можно делать тоже самое.
« Последнее редактирование: 16 Октября 2019, 16:22:48 от Neon »
DANNEO ™

jek

  • Сообщений: 50
    • Просмотр профиля
Re: Возможность изменения ЧПУ
« Ответ #4 : 16 Октября 2019, 18:39:19 »
Спасибо, очень толково и грамотно описано. Вопросов на эту тему больше нет.

студент

  • Сообщений: 198
    • Просмотр профиля
    • Мировые новости
Re: Возможность изменения ЧПУ
« Ответ #5 : 20 Августа 2020, 21:26:29 »
Возникла проблема, которую не понятно как решить. У меня есть категории с одинаковым названием и ЧПУ. Мне нужно чтобы на сайте названия категорий не менялось, а ЧПУ неважно каким будет.
К примеру у меня есть такие категории:

Сторонники (категория)                            Противники (категория)
  Дональда Трампа (подкатегория)              Дональда Трампа (подкатегория)
  Джо Байдена (подкатегория)                      Джо Байдена (подкатегория)

Я понимаю, что у разных категорий не может быть одинаковое ЧПУ. Но названия то можно не сравнивать. Вот у меня возникла ситуация, где должны быть категории с одним названием. Как быть в такой ситуации?

И еще, где, в каком файле можно добавить свои (одну нац. букву "Ə") буквы, символы для замены в ЧПУ? В прошлой версии это решалось в файле apanel/javascript/jquery.apanel.js , а сейчас в системе такого уже нет.
« Последнее редактирование: 21 Августа 2020, 23:29:35 от студент »

Neon

  • Сообщений: 806
    • Просмотр профиля
    • Danneo CMS
Re: Возможность изменения ЧПУ
« Ответ #6 : 22 Августа 2020, 02:35:31 »
Цитировать
Я понимаю, что у разных категорий не может быть одинаковое ЧПУ. Но названия то можно не сравнивать.
Названия тоже должны быть разными. Не важно, страница это или категория.
Дублей не должно быть, это требования поисковых систем, а не прихоть.

Вы пытаетесь сэкономить, и название подкатегории пишите как продолжение названия родительской категории.
Более логично: "Сторонники Дональда Трампа" и "Противники Дональда Трампа".
И проблемы исчезнут.

Что касается ЧПУ.
Банк данных, с таблицами замен символов, всех языков поддерживаемых UTF-8 находится в папке:
core/includes/data/

Каких-то уникальных символов может не хватать.
После развала СССР, в бывших союзных республиках национальные алфавиты стали переводить на латиницу.
Притом, в некоторых странах, символы обновлялись по нескольку раз, за последние пару десятков лет.
Базы для транслита не успевают пополняться )

В общем, это нормально, просто нужно добавить нужные символы в банк данных.
Процедура добавления описана на странице: https://github.com/AmazeeLabs/transliteration
Но, чтобы не заморачиваться с поиском кодов и составления таблиц замен, проще добавить свой массив замен, в системе.
Откройте файл: admin/includes/ajax.php
Раздел:
		/**
* Транслит ЧПУ
------------------*/
if ($_REQUEST['dn'] == 'translit')
{
global $conf, $title;

$translit = new Translit();
$str_cpu = $translit->process($title);
$str_cpu = str_replace(array('& ', '& '), '', $str_cpu);
$out_cpu = mb_substr(trim($str_cpu), 0, 90, $conf['langcharset']);

echo $translit->title($out_cpu);
}
Замените на этот
		/**
* Транслит ЧПУ
------------------*/
if ($_REQUEST['dn'] == 'translit')
{
global $conf, $title;

$title = str_replace(
array("Ç", "ç", "Ə", "ə", "Ö", "ö", "Ü", "ü", "Ç", "ç", "Ş", "ş"), // AZ
array("GH", "gh", "Ă", "ă", "Ȯ", "ȯ", "U", "u", "CH", "ch", "SH", "sh"), // Translit
$title
);

$translit = new Translit();
$str_cpu = $translit->process($title);
$str_cpu = str_replace(array('& ', '& '), '', $str_cpu);
$out_cpu = mb_substr(trim($str_cpu), 0, 90, $conf['langcharset']);

echo $translit->title($out_cpu);
}
Массив замены можете подкорректировать сами, при необходимости.
Шаблоны перевода азербайджанских умляутов на транслит взяты из официальных источников.
DANNEO ™

студент

  • Сообщений: 198
    • Просмотр профиля
    • Мировые новости
Re: Возможность изменения ЧПУ
« Ответ #7 : 22 Августа 2020, 04:51:56 »
		/**
* Транслит ЧПУ
------------------*/
if ($_REQUEST['dn'] == 'translit')
{
global $conf, $title;

$title = str_replace(
array("Ç", "ç", "Ə", "ə", "Ö", "ö", "Ü", "ü", "Ç", "ç", "Ş", "ş"), // AZ
array("GH", "gh", "Ă", "ă", "Ȯ", "ȯ", "U", "u", "CH", "ch", "SH", "sh"), // Translit
$title
);

$translit = new Translit();
$str_cpu = $translit->process($title);
$str_cpu = str_replace(array('& ', '& '), '', $str_cpu);
$out_cpu = mb_substr(trim($str_cpu), 0, 90, $conf['langcharset']);

echo $translit->title($out_cpu);
}
Массив замены можете подкорректировать сами, при необходимости.
Шаблоны перевода азербайджанских умляутов на транслит взяты из официальных источников.
Спасибо! Теперь все замечательно! Я оставил там одну букву "Ə", все остальные выводились, хотя и не совсем правильно. Но меня устраивает.
И в упомянутых Вами официальных источниках тоже ошибка. Первая буква в строке //AZ должна быть "Ğ", "ğ" (это я так, чтобы знали, если кому понадобиться).

студент

  • Сообщений: 198
    • Просмотр профиля
    • Мировые новости
Re: Возможность изменения ЧПУ
« Ответ #8 : 25 Августа 2020, 12:56:49 »
		/**
* Транслит ЧПУ
------------------*/
if ($_REQUEST['dn'] == 'translit')
{
global $conf, $title;

$title = str_replace(
array("Ç", "ç", "Ə", "ə", "Ö", "ö", "Ü", "ü", "Ç", "ç", "Ş", "ş"), // AZ
array("GH", "gh", "Ă", "ă", "Ȯ", "ȯ", "U", "u", "CH", "ch", "SH", "sh"), // Translit
$title
);

$translit = new Translit();
$str_cpu = $translit->process($title);
$str_cpu = str_replace(array('& ', '& '), '', $str_cpu);
$out_cpu = mb_substr(trim($str_cpu), 0, 90, $conf['langcharset']);

echo $translit->title($out_cpu);
}
Выявил ошибку. Если при публикации (или редактировании) не заполнять поле ЧПУ, то транслит не публикует добавленную букву!!!
А если при публикации нажимать на кнопку "транслит", то все буквы ЧПУ правильно отображаются и сохраняются.

вот как я добавил код:
		 * Транслит ЧПУ
------------------*/
if ($_REQUEST['dn'] == 'translit')
{
global $conf, $title;

$title = str_replace(
array("Ə", "ə"), // AZ
array("E", "e"), // Translit
$title
);

$translit = new Translit();
$str_cpu = $translit->process($title);
$str_cpu = str_replace(array('& ', '& '), '', $str_cpu);
$out_cpu = mb_substr(trim($str_cpu), 0, 90, $conf['langcharset']);

echo $translit->title($out_cpu);
}
Название: Adəm
так выглядит ЧПУ прописываемое автоматически: adm
так выглядит ЧПУ после клика на кнопку транслит: adem

Neon

  • Сообщений: 806
    • Просмотр профиля
    • Danneo CMS
Re: Возможность изменения ЧПУ
« Ответ #9 : 25 Августа 2020, 18:22:14 »
Файл: admin/core/function.php
Функция cpu_translit(), отвечает за авто-транслит, если забыли нажать кнопку.
В эту функцию нужно добавить такой же массив, по аналогии.
Только название массива другое - $string.
$string = str_replace(
array("Ə", "ə"), // AZ
array("E", "e"), // Translit
$string
);

Подумаем над функционалом добавления своих символов замен ЧПУ, через веб интерфейс, с сохранением в конфиг.
Такие ситуации могут возникать и в других языках.
Править через файлы, не совсем корректно.
« Последнее редактирование: 25 Августа 2020, 18:24:34 от Neon »
DANNEO ™

студент

  • Сообщений: 198
    • Просмотр профиля
    • Мировые новости
Re: Возможность изменения ЧПУ
« Ответ #10 : 25 Августа 2020, 20:02:12 »
Файл: admin/core/function.php
Функция cpu_translit(), отвечает за авто-транслит, если забыли нажать кнопку.
В эту функцию нужно добавить такой же массив, по аналогии.
Только название массива другое - $string.
$string = str_replace(
array("Ə", "ə"), // AZ
array("E", "e"), // Translit
$string
);
Отлично! Спасибо.
Цитировать
Подумаем над функционалом добавления своих символов замен ЧПУ, через веб интерфейс, с сохранением в конфиг.
Такие ситуации могут возникать и в других языках.
Править через файлы, не совсем корректно.
Было бы неплохо.
« Последнее редактирование: 26 Августа 2020, 02:30:54 от студент »