Leaderboard


Popular Content

Showing content with the highest reputation on 09/06/15 in Сообщения

  1. 1 point
    mmkulikov

    Breadcrumbs

    <?php/*** Created by PhpStorm.* User: Mikhail* Date: 04.09.2015* Time: 12:19*/class Local_Grid_Constructor extends Grid_Constructor {/*** Формируем "хлебные крошки", оборачиваем стандартные* по формату RDF* Дополняем если нашли доп.парметры, например ?u_lesa=1** @param $params* @param string $url* @return array|string*/protected function prepareBreadcrumbs($params, $url = ''){$breadcrumbs = parent::prepareBreadcrumbs($params,$url);if (empty($breadcrumbs)) return $breadcrumbs;$columns = $this->_getColumnsNameIds();$REQUESTURIPATH=Sitebill::getClearRequestURI(); // Строка без GET параметров с '?u_lesa=1'/* echo "<pre>";global $smarty;var_dump($this->getRequestValue("seo-router"));echo "</pre>";die('');*/$breadcrumbs = explode(" / ",$breadcrumbs); // Строку назад в массивfor($i=0; $i < sizeof($breadcrumbs)-1; $i++){$breadcrumbs[$i] = $this->_makeRDF($breadcrumbs[$i]);}$r_uri = $_SERVER['REQUEST_URI']; // Полная строка с GET параметрамиif($REQUESTURIPATH != "index.php" && preg_match("#\?(\w+)=#",$r_uri,$matches)){if(isset($columns[$matches[1]])) {$breadcrumbs[sizeof($breadcrumbs)-1] = $this->_makeRDF($breadcrumbs[sizeof($breadcrumbs)-1]);$breadcrumbs[] = "".$columns[$matches[1]]["title"]."";}} else {};$breadcrumbs = implode(" / ", $breadcrumbs); // Обработанный массив назад в строку "крошек"//$this->template->assert('meta_title', $_SERVER['REQUEST_URI']);return $breadcrumbs;}/*** Возвращает массив со всеми колонками модели data** @return array**/private function _getColumnsNameIds(){$DBC=DBC::getInstance();$columns_ids=array();$query='SELECT columns_id, name, title FROM '.DB_PREFIX.'_columns WHERE table_id=(SELECT table_id FROM '.DB_PREFIX.'_table WHERE `name`=\'data\' LIMIT 1)';$stmt=$DBC->query($query);if($stmt){while($ar=$DBC->fetch($stmt)){$columns_ids[$ar['name']]["id"]=$ar['columns_id'];$columns_ids[$ar['name']]["title"]=$ar['title'];}}return $columns_ids;}private function _makeRDF($breadcrumb) {$breadcrumb = "<span typeof=\"v:Breadcrumb\">".str_replace("<a ","<a property=\"v:title\" rel=\"v:url\"",$breadcrumb)."</span>";return $breadcrumb;}}Вот еще "сырой" код. Фишка в том, что добавляются seo теги в "крошки". Урл обрабатываются приложением (уже написал). Т.е. под любой параметр фильтра, например, checkbox u_lesa, можно описать для пары категория+параметр фильтра - свой ЧПУ - свои мета сео плюшки Хотелось-бы ограничиться приложением, но сейчас та часть, которая обрабатывает ЧПУ в приложении, а прописание всяких meta_xxxx в гриде Вот скрины приложения https://yadi.sk/i/w6p67-eiiu7Eb https://yadi.sk/i/Fd5HlI-piu7Gc
  2. 1 point
    http://www.etown.ru/s/topic/104-статическая-страница-изначально/ принцип с блоком тот же самый
  3. 1 point
    По остальным индивидуальным доработкам и переделкам сюда http://www.etown.ru/s/forum/21-фриланс/