/** * Maps HTTP request to a Request object. * * @param Nette\Http\IRequest $httpRequest * @return Request|NULL */ public function match(Nette\Http\IRequest $httpRequest) { $relativeUrl = trim($httpRequest->getUrl()->relativeUrl, "/"); $path = trim($httpRequest->getUrl()->path, "/"); if ($relativeUrl == "") { $target = $this->defaultRoute; $this->currentTarget->setCurrentTarget($this->targetDao->findTarget($target->presenter, $target->action, $target->id)); } elseif ($relativeUrl == "sitemap.xml") { $target = new Target("Seo:Meta", "sitemap"); } elseif ($relativeUrl == "robots.txt") { $target = new Target("Seo:Meta", "robots"); } elseif (substr($relativeUrl, 0, 6) == "google" && $this->settingsDao->getWebmasterToolsName() == $relativeUrl) { $target = new Target("Seo:Meta", "googleWebmasterTools"); } else { $route = $this->routeDao->findRouteBySlug($relativeUrl, TRUE); if (!$route) { $route = $this->routeDao->findRouteBySlug($path, TRUE); if (!$route) { return NULL; } } $this->currentTarget->setCurrentTarget($route->getTarget()); $target = new Target($route->target->targetPresenter, $route->target->targetAction, $route->target->targetId); } $params = array(); $params["action"] = $target->action; if ($target->id) { $params["id"] = $target->id; } $params += $httpRequest->getQuery(); return new Request($target->presenter, $httpRequest->getMethod(), $params, $httpRequest->getPost(), $httpRequest->getFiles(), array(Request::SECURED => $httpRequest->isSecured())); }
public function render() { $target = $this->currentTarget->getCurrentTarget(); $meta = $target && $target->getMeta() ? $target->meta : NULL; $this->template->setFile(__DIR__ . "/MetaTags.latte"); $targetTitle = $meta ? $meta->seoTitle : NULL; $baseTitle = $this->settingsDao->getBaseTitle(); if ($baseTitle and $targetTitle) { $title = $targetTitle . " - " . $baseTitle; } else { $title = $targetTitle . $baseTitle; } $this->template->title = $title; $this->template->keywords = $meta ? $meta->seoKeywords : NULL; $this->template->description = $meta ? $meta->seoDescription : NULL; $this->template->robots = $meta ? $meta->seoRobots : NULL; $this->template->render(); }