public function metaTagsHtml($defaults = true, array $arguments = array(), $canonical = true) { $locale = $this->translator->getLocale(); $currentLang = substr($locale, 0, 2); if (!isset($arguments['pre'])) { $arguments['pre'] = sprintf("\n%8s", ' '); } $headers = self::initMetaTagString(); if ($defaults) { $headers .= $arguments['pre'] . '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'; $headers .= $arguments['pre'] . '<meta http-equiv="content-language" content="' . $currentLang . '" />'; $headers .= $arguments['pre'] . '<meta name="DC.language" scheme="RFC3066" content="' . $currentLang . '" />'; } $key = $this->keyGenerator->generateMetaTagKey($this->container->get('request'), $this->container->get('router'), $locale); $obj = $this->manager->findMetaTag($key, $locale); if ($obj) { $headers .= $this->metaTagToHtml($obj, $arguments); } else { $tags = $arguments; unset($tags['pre']); $headers .= MetaTagToHtmlRenderer::createMetaTags($arguments['pre'], $tags, $this); } if ($canonical) { $headers .= $arguments['pre'] . $this->canonicalTagsHtml($this->getRequest()->getPathInfo()); } return $headers; }
/** * (non-PHPdoc). * * @see \Sonata\AdminBundle\Admin\Admin::prePersist() */ public function prePersist($object) { /* @var $object MetaTagContent */ $path = $this->getForm()->get('path')->getData(); if (strpos('/', $path) !== false) { $path = '/' . $path; } try { $key = $this->keyGenerator->generateMetaTagKeyFromRelativePath($path, $this->getRouter(), $this->translator->getLocale()); $object->setKeyword($key); } catch (\Exception $e) { } }
public function updatePathInfo(ContentInterface $content) { if (!$content->isChangedPathInfo()) { return; } $info = $this->getPathInfoFromMetaTagKey($content->getKeyword()); $arr = $this->keyGenerator->splitLocaledKeyword($content->getKeyword()); $contentInfo = $content->getPathInfo(); $contentInfo['_locale'] = $arr[0]; // add locale routing info after controller foreach ($info as $key => $value) { $contentInfo[$key] = $value; } $contentInfo = array_merge($contentInfo, $this->getQueryInfo($content->getKeyword())); $content->setChangedPathInfo($contentInfo); $content->setRouteDefaults($this->getDefaults($contentInfo['_route'])); }
/** * @param $alias * @param $path * @param array $pathParameters * @param null $locale * @param null $title * @param null $keywords * @param null $description * * @return ContentInterface * * @internal param array $metatags */ public function createNewAlias($alias, $path, array $pathParameters = array(), $locale = null, $title = null, $keywords = null, $description = null) { $rc = new \ReflectionClass($this->entityClass); $object = $rc->newInstance(); if (!$object instanceof ContentInterface) { return; } $object->setAlias($alias); $pathParameters[UrlGenerator::GENERATE_NORMAL_ROUTE] = true; $path = $this->router->generate($path, $pathParameters); $path = str_replace('/app_dev.php', '', $path); $key = $this->generator->generateMetaTagKeyFromRelativePath($path, $this->router, $locale); $object->setKeyword($key); $object->setTitle($title); $object->setKeywords($keywords); $object->setDescription($description); return $object; }