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.