mmkulikov

Участники
  • Публикации

    61
  • Зарегистрирован

  • Посещение

  • Days Won

    7

Все публикации пользователя mmkulikov

  1. <?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. function _detectUrlParams($server_request_uri){$server_request_uri=urldecode($server_request_uri);$server_request_uri=parse_url($server_request_uri, PHP_URL_PATH);$topic_id=FALSE;$city_id=FALSE;$gorod_name=FALSE;$server_request_uri=SiteBill::getClearRequestURI();В приведенном выше коде начала метода видно, что переданный параметр $server_request_uri вместо использования замещается на $server_request_uri=SiteBill::getClearRequestURI(); P.S. Пол часа не мог "въехать" почему не обрабатывается переданный параметр, пока не проанализировал код
  3. Конечно в своем шаблоне. Систему править - это последнее дело
  4. Собственно вопрос о том, как можно "вмешаться" в процесс формирования Breadcrumbs Получилось, например, сделать свой Local_Grid_Constructor и перекрыв метод prepareBreadcrumbs исправить все по своему. Но для этого надо вклиниваться в шаблон. А возможен ли такой-же вариант прямо из своего приложения apps ? Или приложения отрабатывают раньше и еще нечего перекрывать? По крайней мере переопределить переменную в шаблоне не удалось
  5. Обращаюсь к разработчикам. Не могли бы вы "набросать" иерархию объектов(классов) в цмс и глобальных переменных? Чтобы не гадать как "это" или "то" работает при разработке. В какой последовательности идет запуск? Не все, но самое важное, что за чем запустится...
  6. Видит он (пользователь) не "место" с которого ушел, а только в тайтле путающую надпись, например, "Страница 2" Хотя реально отображается первая страница. А если так еще и ПС отдается, то яндексу точно "крышку сорвет"
  7. Угу $url - содержит строчку запроса (не ЧПУ)
  8. Может и написание внятной документации к цмс тоже во фриланс отправить?
  9. Данную задачу ставит заказчик (скажем, "ему так хочется..." ) Потому интересуюсь, как а не почему ... P.S. Вызывать header() в main.php походу уже "поздно", что-то в выдачу уже попало...
  10. передал вот такое var loc_objects={lat:"57.958500",lng:"31.353600"};Получил что-то странное )) http://dev.kupit-uchastok-s-domom.com/kontakty
  11. Надо на страницах объявлений(точнее категорий) при количестве объявлений 0 отдавать 404-ю ошибку... Есть какие-то идеи, где "прицепиться" аккуратно в цмс (не трогая системные файлы) для этой "процедуры"?
  12. Если перейти на вторую страницу (или любую другую) страницу пагинации то к переменной $title добавляется [Страница №] Так вот, если после этого не вернуться на первую страницу, просто убрать из урл page=2 и не обязательно руками (просто ткнуть в меню данного раздела), то добавление [Страница №] намертво прилепает к $title P.S. Похоже, что $this->getRequestValue('page');продолжает "помнить" последнюю
  13. RM.initJSON('grid_realty_map', loc_objects, map_type);Кто-то может подсказать как вручную заполнить параметр loc_objects ? Своими координатами и т.п.
  14. А в чем сложность? Ни чем не отличается от "кастомного" поиска...
  15. В таблицу data добавлены новые поля, заполняются без проблем, но не хочет сортировать по этим новым полям? Как заставить работать сортировку по пользовательским полям? Вот пример запроса /zemelnye-uchastki?order=u_lesa&asc=desc
  16. А как задать вручную этот параметр geoobjects_collection_clustered ?
  17. В main.php определите переменную $title как захотите.
  18. А "унести" к себе в шаблон разметку админки предусмотрено? Для приложений вроде это делается в папке template/frontend/имя_шаблона/apps/имя_приложения
  19. Нашел решение. Может кому еще сгодится /*** Получение количества объявлений* @param int $catID - ID категории (необ.)* @param date $start - Дата начала публикаций (необ.)* @param date $end - Дата конца публикаций (необ.)** @return array $ret****/ private static function getAdvtCount($catID=false,$start=false,$end=false) { $ret = array(); $where = ""; $table = "`".DB_PREFIX."_data`";$DBC=DBC::getInstance(); if (false !== $catID) $where = " AND $table.`topic_id` = $catID"; if (false !== $start && false === $end ) $where .= " AND $table.`date_added` <= '$start'"; if (false === $start && false !== $end ) $where .= " AND $table.`date_added` >= '$end'"; if (false !== $start && false !== $end ) $where .= " AND ($table.`date_added` <= '$start' AND $table.`date_added` >= '$end')"; $query = "SELECT count(*) AS total FROM $table WHERE $table.`active`=1".$where; $result = $DBC->query($query); if ($result) {while($r = $DBC->fetch($result)){$ret[] = $r; } } return $ret; }
  20. Нет, точно не было. Только через какое-то время интенсивного дальнейшего "перепиливания" файлов шаблона появилась закладка ((
  21. function check_local_config () {require_once (SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/admin/object_manager.php');require_once (SITEBILL_DOCUMENT_ROOT.'/apps/config/admin/admin.php');$config_admin = new config_admin();if ( !$config_admin->check_config_item('grid_type') ) {$config_admin->addParamToConfig('grid_type','list','Тип списка объявлений (list - обычная таблица, thumbs - div-блоки');}if ( !$config_admin->check_config_item('template.allrealty.logo') ) {$config_admin->addParamToConfig('template.allrealty.logo','logo.png','Логотип');}if ( !$config_admin->check_config_item('template.allrealty.buy') ) {$config_admin->addParamToConfig('template.allrealty.buy','','ID раздела "Купить"');}if ( !$config_admin->check_config_item('template.allrealty.rent') ) {$config_admin->addParamToConfig('template.allrealty.rent','','ID раздела "Снять"');}if ( !$config_admin->check_config_item('vip_cost') ) {$config_admin->addParamToConfig('vip_cost','100','Цена VIP-объявления за 1 день');$query = "alter table ".DB_PREFIX."_data add column vip_status_end int(11) not null default 0";Вот кусок кода. За основу взял main.php из agency
  22. Народ, не ленитесь, сбрасывайте сюда кто что нашел, или нашел, но не знает что это. Будем вместе разбираться.