- Изменено
на сколько я знаю...большая вложенность это плохо для seo
я бы оставил /:category и /:category/:article
а если в идеале то для seo нужно /:category и /:article
на сколько я знаю...большая вложенность это плохо для seo
я бы оставил /:category и /:category/:article
а если в идеале то для seo нужно /:category и /:article
lutchin на сколько я знаю...большая вложенность это плохо для seo
С чего это вдруг?
Правильно организованная структура контента на сайте превыше вложенности. В гугле ж это понимают, и на вложенность им вообще насрать. Поэтому всё наоборот - 4-ая вложенность лучше чем 2 и 3 для поисковой выдачи.
Я на личном примере в этом убедился.
А все прочие сказки, то для бирж ссылок (если они ещё работают) и ушей с толстыми кошельками. Пусть платят.
Вообще то я сео не признаю. Есть с десяток правил которые нужно выполнять. А сеошники со своей наукой - это только для составления симантического ядра.
Логично же:
музыка/автор/песня
каталог/категория/компания
животные/обезьяны/барак_обамкин
lutchin Но у меня 4-ая вложенность, а не 20-ая. Полюбому у гуглойдов есть какая то цифра с ограничением на вложенность. Разумности есть же какой то предел.
Вот если такой урл разбирать:
Континент/Страна/Область/Город/Адрес
то уже 6-ая вложенность - всё логично и можно даже продолжать цепочку.
Гуглу всё равно на вложенность, а времена альтависты давно прошли.
И есть sitemap, что делает 100-процентную индексацию страниц.
Вот честно говорю, когда гугл начал быструю индексацию/переиндексацию (по моему 14 год или 16), я у себя на сайте забил на вложенность и опустил большую часть страниц на 1-2 вложенности вниз с 301-ым редиректом.
У меня мгновенно траф из выдачи гугла выровнялся с яндексом (примерно в три раза гугл отставал от яндекса). Это было заметно - прям крутой взлёт на графике статистики. Потом яшка начал расчихляться с переиндексацией - ещё взлёт.
На данный момент у меня по месячной статистике трафика с Гугла 57,1%, Яндекс - 40%, МайлРу - 1,69%, Rambler - 0.21%, Остальные - 0,23%.
Наверное майлру и прочие как раз работают с приоритетом на вложенность ))
reazzon оставляй /:category* и /:category*/:article
Катастрофа...
Оставил 2 страницы и поставил им урлы /:category* и /:category*/:article
В registerComponents()
убрал третий компонент.
Теперь у меня выводит только категории с урлами 2 вложенности сайт/urlCategory
. Макет для категории у которой есть подкатегории выводится правильный, для тех категорий у которых нет подкатегорий - тоже правильно..
Если урл 3 вложенности: сайт/urlCategory/urlSubCategory
, то ошибка:
Сайт пока не может обработать этот запрос.
HTTP ERROR 500
Статьи вообще не выводит, ни при 3-вложенности, ни при 4-ой. Та же ошибка 500.
Категории которые должны выводится сайт/urlCategory/urlSubCategory
(у которых есть родительская категория) выводит только во второй вложенности вот так: сайт/urlSubCategory
Koresh мы с тобой в недавней дискуссии уже обсуждали обработку WildCard ссылок. Я пояснил тебе, что выходов в данном случае не много. То что сейчас делает OctoberCMS - он делает ПРАВИЛЬНО.
У тебя две точки входа:
/:category*
/:category*/:article
Ссылка /category/subcategory/article
, попадает как и в первую точку входа, так и во вторую. Потому-что символ *
обозначает содержимое любой длины.
Чтобы исправить эту ситуацию, у тебя есть несколько вариантов:
Одна точка входа: /:articles*
, которая будет разбивать ссылки и делать поиск по базе, после, исходя из результата отображать категорию или запись.
Одна точка входа: /:articles*
. В базе категорий и статьей в столбце slug
хранится ВЕСЬ путь до данной записи, то-есть у категории с parent категорией в столбце slug
установлено - kategoriya/pod-kategoriya
, у статьи - kategoriya/pod-kategoriya/statya
, таким образом в компоненте ты сначала делаешь поиск записи по урлу в базе категорий, если не найдено делаешь поиск в базе статьей. (Таким образом работают кстати многие CMS, только у них есть одна база со всеми ссылками, и они тупо делают поиск по ней, и вытаскивают уже контент по связи), В default.htm
делаешь уже подгрузку фрагмента в зависимости типа записи (категория или запись).
Две точки входа, /:category*
и /:category*/:article*
, только в точке входа для записей, нам нужно сделать так, чтобы в URL на конце был специальный ключ, из-за которого OctoberCMS бросит обработку ссылки на страницу для записи а не для категории, то-есть надо делать фильтр по регулярному выражению
(немного вниз промотай, будет инструкция как применять regex выражение в ссылке https://octobercms.com/docs/cms/pages#url-syntax).
Например:
/kategoriya/podkategoriya
- не имеет ключа, кидаем на обработку категории.
/kategoriya/podkategoriya/12-statya
- имеем ключ (id статьи перед slug), кидаем на обработку статьи.
Каких либо других решений я пока не знаю, возможно тебе поможет Google с запросом Laravel Wildcard URL Matching
.
reazzon Чтобы исправить эту ситуацию, у тебя есть несколько вариантов:
Варианты 2 и 3 (полный урл в статье и айдишник в урле) для меня категорически не подходят.
Поэтому методом исключения остался 1 вариант.
Я несколько раз перечитал пост и уже начал подумывать что мне не подходит October CMS, но...
Погрустив с часик, закомментировал код файла внутри класса class Category extends ComponentBase
и начал писать.
У меня получилось!!! Все страницы плагина выводятся.
Весь код всего php-файла компонента = 150 строк, с пробелами строк и комментариями.
Выкладываю свою логику:
public function defineProperties()
{
return [
'slug' => [
'title' => 'Ссылка',
'default' => '{{ :articles }}'
]
];
}
public function onRun()
{
$urls = explode('/', $this->property('slug'));
if (count($urls) == 1) {
// Это категория
$category = \OctoClub\Articles\Models\Category::where('slug', $this->property('slug'))->first();
if (empty($category)) {
return $this->controller->run('404');
}
}
elseif (count($urls) == 3) {
// Это статья 3 вложенности
}
elseif (count($urls) == 2) {
// или статья или подкатегория
$article = \OctoClub\Articles\Models\Article::where('slug', $urls[1])->first();
if (empty($article)) {
// Это подкатегория
}
else {
// Это статья
}
}
else {
// это вообще непонятно что
return $this->controller->run('404');
}
}
Внутри логики почти старый код, который пришлось малость исправить.
Так же добавил проверку на статью в default.htm и создал файл article.htm
Осталось после изменений урлы в хлебных крошках, в названиях статей и категорий поправить в вёрстке, но то уже легко решаемо.
И ещё у меня вёрстка родительской категории не сделана, есть вопрос по запросам к БД, но то уже в новой теме буду задавать вопрос.
Ну а потом уже причесать сам код.
Спасибо что на пальцах разъяснили как урлы обрабатываются. Сегодня я совсем немножечко понял как работает October CMS.
Да, с url-ами в октябре капец как сложно разобраться после wp, joomla, Modx и т.п.