Hi All. Sorry for my English , I use Google Translate . How do phalcon routing in Wordpress, type %category%/%postname%. Is this possible?
|
Nov '14 |
9 |
797 |
0 |
Hi. Yes it is possible. for example (you can see this in https://docs.phalcon.io/en/latest/reference/routing.html)
$router->add(
"/([a-zA-Z]+)/([a-zA-Z0-9_]+)",
array(
"controller" => "posts",
"action" => "show",
"category" => 1, //([a-zA-Z]+)
"postname" => 2, //([a-zA-Z0-9_]+)
)
);
Думаю. да ) Виталий, спасибо за быстрый ответ. Вы привели пример который, как я понял, работает для ссылок вида категория/пост. А если будут подкатегории типа категория/подкатегоря/пост, то роут нужно менять или делать еще один?
Вообще все сложно. Вот в Wordpress есть страницы и есть записи. Записи могут быть в категориях. И url можно легко настроить, чтоб для страниц он был site.com/page, а для записей типа site.com/category1/post или site.com/category/subcategory/post. Как подобное сделать в phalcon ума не приложу. Неужели никто не пытался подобное сделать.
О да, как ты думаеш, подойдет ли тибе такой вариант,
$router->add(
"/([a-zA-Z]+//)/([a-zA-Z0-9_]+)",
array(
"controller" => "posts",
"action" => "show",
"category" => 1, //([a-zA-Z]+)
"postname" => 2, //([a-zA-Z0-9_]+)
)
);
Тоесть , что изминилось, вот здесь ([a-zA-Z]+//) есть єкранированый /
Тогда
$category = $this->dispatcher->getParam("category");
переменную (оно же будет строкой) можна будет разбить по елементу / Таким образом у тебе будет для примера масив даных
array(
'category' => "value",
'sub_category' => "value",
'sub_sub_category' => "value"
)
Вроде как вариант, надо пробовать. А как быть с такой ситуацией, что в ссылке типа site.com/link link может быть и страницей и категорией. В принципе можно в контроллере этот link брать и смотреть в базе slug'и, чтоб определить что это - пост или категория.
вот сдесь провтык
([a-zA-Z]+//)
должно быть
([a-zA-Z//]+)
На счет последнего
можна попробовать сделать так
$blog->add('/category', array(
'action' => 'catgory'
));
$blog->add('/{post}', array(
'action' => 'category'
));
И в этом экшене
public function categoryAction($post = null)
{
if($post == null){
тогда запрос на категорию в другом случае, это post
}
}