1. Добавить конвертацию из clean URL в target + page arguments (например - /Book.html -> ?target=product&id=10)
1.1. Перекрываем \XLite\Core\Converter::getCleanURLBook так, чтобы он возвращал новую пару - target => modelClass. Например:
protected static function getCleanURLBook($url, $last = '', $rest = '', $ext = '')
{
$list = parent::getCleanURLBook($url, $last, $rest, $ext);
$list['message'] = '\XLite\Model\Message';
return $list;
}
1.2. Перекрываем репозиторий нужной модели и добавляем метод findOneByCleanUrl, примерно так:
public function findOneByCleanURL($url)
{
return $this->createQueryBuilder('p')
->andWhere('p.cleanURL = :url')
->setParameter('url', $url)
->setMaxResults(1)
->getSingleResult();
}
2. Добавить билдер, строящий из target и его аргументов clean URL
2.1. Перекрываем \XLite\Core\Converter::buildCleanURLHook и пишем там примерно следующий код:
protected static function buildCleanURLHook($target, $action, array $params, array &$urlParams)
{
parent::buildCleanURLHook($target, $action, $params, $urlParams);
if ('message' == $target && !empty($params['id'])) {
$model = \XLite\Core\Database::getRepo('\XLite\Model\Message')->find($params['id']);
}
}
Комментариев нет:
Отправить комментарий