Переписать "blog" -> "community" и "personal_blog" -> "blog"

Приветствую. Только изучаю LS. Пытаюсь сделать, казалось бы, тривиальную вещь — пути «blog» переписать на «community» а «personal_blog» на «blog».(те коллективные все становятся «community», а персональные «blog»).
$config['router']['rewrite']

тут не поможет… Как сделать? Куда смотреть?

Поддомены

Приветствую. Ситуация следующая, при адресе тест.домен.рф, в массив $aRouter все адреса идут с домен.рф.

Viewer.class.php

    $aRouter[$sPage]=Router::GetPath($sPage); 


Router.class.php — метод GetPath

    return rtrim(Config::Get('path.root.web'),'/')."/$sPage/";


config.php

    $config['path']['root']['web'] = 'http://'.$_SERVER['HTTP_HOST']; 


WTF? Кто нибудь может разъяснить…

Переименовать blog в community

Господа, у меня такой вопрос — я переименовал «blog» в «community» сделал все по инструкции, перенаправление и новый адрес в роутере, тепрь беда — он мои личные записи выдает как ресурс/community/10.html как с этим бороться, (в процессе написания добавил правило о сокращенном URL)

Вот что я делал в конфиге
/**
 * Настройки роутинга
 */
$config['router']['rewrite'] = array( 'blog' => 'community');
// Правила реврайта для REQUEST_URI
$config['router']['uri'] = array(
	// короткий вызов топиков из личных блогов
	'~^(\d+)\.html~i' => "blog/\\1.html",
	'~^(\d+)\.html~i' => "community/\\1.html",
);
// Распределение action
  . . . . строки пропущены . . . . 
$config['router']['page']['blog']          = 'ActionBlog';
$config['router']['page']['community']     = 'ActionBlog';


Может кто знает, помогите плз,.

АЛЬЗО! — Если убрать $config['router']['page']['blog'] из конфига перестают работать фишки вступить в блог, выйти из блога, рейтинг блога перестает работать — тупо не срабатывает когда тыкаешь,. Тема Social 2.0.4 (вчера купил — поставил)

UPD — Лучше сделать так

ort предложил гениально, как всегда)
public function getUrl() {
    if ($this->getBlog()->getType()=='personal') {
        //return Router::GetPath('blog').$this->getId().'.html';
        return '/'.$this->getId().'.html';

Хак для роутинга

При создании собственного модуля встала задача, чтобы в URLе не присутствовало название экшена, а сразу шел параметр. В сообществе нашел пару постов которые помогли разобраться, но конечного решения так и не было. Хочу поделиться тем, что у меня получилось. Рассмотрим все на примере экшена profile. Переделываем URL страницы пользователя с
site.ru/profile/vasya/
На
site.ru/vasya/

Читать дальше →

Возвращение к теме о роутинге (для профилей)

Данная конструкция преобразует url вида /profile/{USERNAME} в url вида /{USERNAME}

$config['router']['uri'] = array(
    '~^([a-z_\-]+)$~i' => "profile/\1",
);


Но главной проблемой является то, что таким образом переписываются все url сайта, и мы уже не сможем попасть ни на страницу регистрации, ни входа(ни блогов и проч.).

Какой хак в данном случае использовать для класса Router?

Я думаю многим будет интересна эта тема с точки зрения создателей социальных сетей на фреймворке LiveStreet.

Спасибо за внимание!

Как добавить экшн к существующему URL?

Что-то я никак не могу понять как добавить экшн к уже существующему URL? Например добавить функционал — site/blog/rating вот прикрутить к rating свой экшн из плагина? Только просьба как-то по-конкретней, а не комменты типа «кури Router.class.php» :)

Предложение по улучшению роутера

На данный момент, для роутера нет никакой разницы между livestreet.ru/blog/ и livestreet.ru/blog. И это по моему скромному имху не правильно т.к. по двум разным урлам находятся совершенно одинаковые страницы.

Решение я для себя выбрал следующее:
/engine/classes/Router.class.php->GetRequestUri()
после
$sReq=preg_replace("/\/+/",'/',$_SERVER['REQUEST_URI']);

добавить
if(empty($_GET) && !strpos($sReq, '.') && substr($sReq, strlen($sReq) - 1 ,1) != '/'){
            header('Location: ' . $sReq . '/',TRUE,301);
            die;
}

В этом случае, все запросы к «директории», которые не заканчиваются на "/", будут перенаправляться с кодом 301 (Moved Permanently) на урл который заканчивается "/".

Ну и да, это очень любят поисковики.

З.Ы. Совершенно за, если кто-то скажет как это сделать лучше :)

UPD. Po6oT В комментариях, подсказал решение гораздо лучше моего.

Как сделать URLы топиков из коллективных блогов аналогичным URLам персональных топиков

Собственно такой вопрос. Как сделать URL топиков из коллективных блогов одинаковыми с URLами топиков из личных блогов.

1) То есть чтобы http;//site/blog/news/123.html имел вид site/posts/123.html
2) так же как и site/blog/124.html имел вид site/posts/124.html

(со второй частью всё понятно, там нужно лишь поменять несколько значений в конфиге и топик ентри, а вот первую в силу своих недостаточных знаний в программировании осилить не смог. Максимальный результат, которого добился — это 301 зацикленный редирект и соощение браузера (неправильное перенаправление).

Реально ли реализовать мою задумку и если да, то как?

ЗЫ. версия движка 0.4RC (точнее 839 транк).

Не находятся шаблоны при делегировании action-а плугином

Девелоперская версия 0.4
Пытался написать плугин — задействовал механизм делегирования. Делегировал action.
При вызове action-а движок не может найти шаблоны.

Fatal error: Uncaught exception 'Exception' with message 'Can not find the template: ' in E:\Projects\livestreet\engine\modules\viewer\Viewer.class.php:292


Читать дальше →

Убираем константы из шаблонов

После прочтения вот этого поста: Убираем дублирование при добавлении роутинга, понял что эта проблема волнует не только меня. Хочу поделиться своими соображениями на этот счет.

Linch правильно заметил, что при добавлении нового роута приходиться дублировать информацию. Но, на самом деле здесь происходит более «серьезное» дублирование, чем копипаст из config/config.route.php в Viewer.class.php — мы дублируем функционал по составлению пути — один раз это делает программист, разрабатывая модуль, второй раз это делает верстальщик, когда делает шаблон. Большее неудобство не в том, как мы доставим константу во Viewer, а именно в том факте, что верстальщику этими константами нужно пользоваться.

Если нам вдруг понадобиться изменить принцип роутинга, то придется перелапачивать весь шаблон, исправляя ошибки адресов. Имхо, если Router, решает какой Action должен отработать, пусть сам нам скажет, как к этому Action нужно обратиться. Тогда необходимость в константах во Viewer`e вообще отпадет сама собой.

Как этого добиться? Под катом 20 строчек кода.

Читать дальше →