-
Публикации
61 -
Зарегистрирован
-
Посещение
-
Days Won
7
Изменения репутации
-
mmkulikov получил репутацию от metrpro в Переменные в main.php
Если администрация не против - предлагаю здесь собирать информацию о доступных переменных для шаблона.
Переменные:
Просмотреть содержимое любого массива, например, {$special_items2|@print_r}
$estate_folder - корневая папка сайта
$current_theme_name - имя используемой темы
$smarty.session.user_id - если пусто, значит пользователь не залогинен.
Лучше проверять как {if intval($smarty.session.user_id)!=0}Значит авторизирован{/if}
$main_file_tpl - имя подгружаемого файла шаблона для отображения, например, realty_grid.tpl - шаблон вывода списка категории недвижимости
$main - в отличии от предыдущего - это готовый контент для вывода (готовится в контроллере или приложении)
$special_items2 - массив, содержащий список спецпредложений(VIP)
$grid_items - массив обычных объявлений
$news_list_column - массив списка новостей
$apps_page_view - если переменная определена, значит идет просмотр статической страницы
$meta_keywords - keywords
$meta_description - description
$breadcrumbs - "хлебные крошки"
$map_type - google, yandex
$is_account - указывает на то, что мы сейчас в личном кабинете (1/0)
$_layout - текущий макет, по умолчанию (как правило) layout_basic.tpl (используется, например, в main.tpl для подгрузки основного файла шаблона)
-
mmkulikov получил репутацию от DoobBY в Убираем page=1
Для устранения дублей страниц, т.к. страница пагинации page=1 является дублем страницы без пагинации
Добавляем в main.php шаблона в самом начале функции main следующий код:
$r_uri = $_SERVER['REQUEST_URI']; // Полная строка с GET параметрамиif (preg_match("#([\?\&]+page=1)\D*$#",$r_uri,$matches)) {$new_location=SITEBILL_MAIN_URL.str_replace($matches[1],"",$r_uri);header('HTTP/1.1 301 Moved Permanently');header('Location: '.$new_location);exit();} // Убираем page=1 из урл -
mmkulikov получил репутацию от Chernetskiy в Убираем page=1
Для устранения дублей страниц, т.к. страница пагинации page=1 является дублем страницы без пагинации
Добавляем в main.php шаблона в самом начале функции main следующий код:
$r_uri = $_SERVER['REQUEST_URI']; // Полная строка с GET параметрамиif (preg_match("#([\?\&]+page=1)\D*$#",$r_uri,$matches)) {$new_location=SITEBILL_MAIN_URL.str_replace($matches[1],"",$r_uri);header('HTTP/1.1 301 Moved Permanently');header('Location: '.$new_location);exit();} // Убираем page=1 из урл -
mmkulikov получил репутацию от XTRO в Предложения для будущих версий.
Очень хочется иметь возможность перекрывать у class SiteBill
метод get_breadcrumbs не всем нравятся(подходят и т.п.) "крошки" в том виде как они есть.
А по большому счету хочется из шаблона иметь возможность управлять всеми доступными
методами этого базового класса.
-
mmkulikov получил репутацию от Дмитрий Кондин в Убираем page=1
Для устранения дублей страниц, т.к. страница пагинации page=1 является дублем страницы без пагинации
Добавляем в main.php шаблона в самом начале функции main следующий код:
$r_uri = $_SERVER['REQUEST_URI']; // Полная строка с GET параметрамиif (preg_match("#([\?\&]+page=1)\D*$#",$r_uri,$matches)) {$new_location=SITEBILL_MAIN_URL.str_replace($matches[1],"",$r_uri);header('HTTP/1.1 301 Moved Permanently');header('Location: '.$new_location);exit();} // Убираем page=1 из урл -
mmkulikov получил репутацию от anderson в Переменные в main.php
Если администрация не против - предлагаю здесь собирать информацию о доступных переменных для шаблона.
Переменные:
Просмотреть содержимое любого массива, например, {$special_items2|@print_r}
$estate_folder - корневая папка сайта
$current_theme_name - имя используемой темы
$smarty.session.user_id - если пусто, значит пользователь не залогинен.
Лучше проверять как {if intval($smarty.session.user_id)!=0}Значит авторизирован{/if}
$main_file_tpl - имя подгружаемого файла шаблона для отображения, например, realty_grid.tpl - шаблон вывода списка категории недвижимости
$main - в отличии от предыдущего - это готовый контент для вывода (готовится в контроллере или приложении)
$special_items2 - массив, содержащий список спецпредложений(VIP)
$grid_items - массив обычных объявлений
$news_list_column - массив списка новостей
$apps_page_view - если переменная определена, значит идет просмотр статической страницы
$meta_keywords - keywords
$meta_description - description
$breadcrumbs - "хлебные крошки"
$map_type - google, yandex
$is_account - указывает на то, что мы сейчас в личном кабинете (1/0)
$_layout - текущий макет, по умолчанию (как правило) layout_basic.tpl (используется, например, в main.tpl для подгрузки основного файла шаблона)
-
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
-
mmkulikov получил репутацию от h-i в 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
-
mmkulikov получил репутацию от XTRO в Иерархия
Обращаюсь к разработчикам.
Не могли бы вы "набросать" иерархию объектов(классов) в цмс и глобальных переменных?
Чтобы не гадать как "это" или "то" работает при разработке.
В какой последовательности идет запуск? Не все, но самое важное, что за чем запустится...
-
mmkulikov изменил репутацию abushyk в Переменные в main.php
Препарируем, значит?)))
$special_items2 - практически всегда дублирует $special_items2
$meta_title - мета заголовок. Для многих приложений, в том числе и карточек объектов, на не самых древних шаблонах уходит в хидере в тайтл браузера и, только при его отсутствии, его место занимает $title
$title - любым образом сформированный заголовок страницы
$smarty.session.current_user_name - фамилиё или другой текст из поля fio профиля авторизированного юзера
$smarty.session.current_user_group_name - системное имя группы авторизированного юзера (не Риелтор, а realtor)
$smarty.session.current_user_group_id - ID группы авторизированного юзера
-
mmkulikov получил репутацию от abushyk в Количество объявлений в категории
Нашел решение. Может кому еще сгодится
/*** Получение количества объявлений* @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; } -
mmkulikov изменил репутацию abushyk в Сортировка по новым полям
В этом то и сложность, что по сложности не отличается))
В гридменеджере есть функция определяющая алгоритм сортировки prepareSortOrder
Суть добавления собственных сортировок состоит в том, что бы локализовать в шаблон построитель сеток, сделать его наследником базового и в своем локальном переопределить функционал упомянутой функции.
По пунктам:
1. Берем /apps/system/lib/frontend/grid/grid_constructor.php (файл А)
2. Копируем его в /template/frontend/agency/main/grid/local_grid_constructor.php (файл Б)
3. Внутри него удаляем все и заполняем
class Local_Grid_Constructor extends Grid_Constructor {} Если аналогичный файл уже есть, то пункты 1-3 не нужно делать.
4. Из файла А копируем функцию
protected function prepareSortOrder($params, $random = false, $premium=false){...} полностью как есть внутрь файла Б между class Local_Grid_Constructor extends Grid_Constructor { и }
5. По аналогии вводим свою обработку параметра $params['order']
Обработчик готов. Осталось сообщить нашему движку, что мы работаем с новым гриддером.
Есть два пути:
1. Через файл настроек /settings.ini.php куда следует добавить три строки (троеточие добавлять не нужно)
...[GridConstructor]path='/main/grid/local_grid_constructor.php'name='Local_Grid_Constructor' ПС. Этот метод не будет работать на версиях ниже 3.0.24
2. Через файл шаблона. Для чего в /template/frontend/realia_complex/main/main.php внутри main() после global $__site_title, $folder, $smarty; указывается локальный обработчик require SITEBILL_DOCUMENT_ROOT.'/template/frontend/'.$this->getConfigValue('theme').'/main/grid/local_grid_constructor.php';$this->_setGridConstructor(new Local_Grid_Constructor()); или, можно разместить их в конструкторе контроллера шаблона.
-
mmkulikov получил репутацию от Дмитрий Кондин в Количество объявлений в категории
Нашел решение. Может кому еще сгодится
/*** Получение количества объявлений* @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; } -
mmkulikov получил репутацию от h-i в Количество объявлений в категории
Нашел решение. Может кому еще сгодится
/*** Получение количества объявлений* @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; } -
mmkulikov получил репутацию от Дмитрий Кондин в Переменные в main.php
Если администрация не против - предлагаю здесь собирать информацию о доступных переменных для шаблона.
Переменные:
Просмотреть содержимое любого массива, например, {$special_items2|@print_r}
$estate_folder - корневая папка сайта
$current_theme_name - имя используемой темы
$smarty.session.user_id - если пусто, значит пользователь не залогинен.
Лучше проверять как {if intval($smarty.session.user_id)!=0}Значит авторизирован{/if}
$main_file_tpl - имя подгружаемого файла шаблона для отображения, например, realty_grid.tpl - шаблон вывода списка категории недвижимости
$main - в отличии от предыдущего - это готовый контент для вывода (готовится в контроллере или приложении)
$special_items2 - массив, содержащий список спецпредложений(VIP)
$grid_items - массив обычных объявлений
$news_list_column - массив списка новостей
$apps_page_view - если переменная определена, значит идет просмотр статической страницы
$meta_keywords - keywords
$meta_description - description
$breadcrumbs - "хлебные крошки"
$map_type - google, yandex
$is_account - указывает на то, что мы сейчас в личном кабинете (1/0)
$_layout - текущий макет, по умолчанию (как правило) layout_basic.tpl (используется, например, в main.tpl для подгрузки основного файла шаблона)
-
mmkulikov получил репутацию от h-i в Переменные в main.php
Если администрация не против - предлагаю здесь собирать информацию о доступных переменных для шаблона.
Переменные:
Просмотреть содержимое любого массива, например, {$special_items2|@print_r}
$estate_folder - корневая папка сайта
$current_theme_name - имя используемой темы
$smarty.session.user_id - если пусто, значит пользователь не залогинен.
Лучше проверять как {if intval($smarty.session.user_id)!=0}Значит авторизирован{/if}
$main_file_tpl - имя подгружаемого файла шаблона для отображения, например, realty_grid.tpl - шаблон вывода списка категории недвижимости
$main - в отличии от предыдущего - это готовый контент для вывода (готовится в контроллере или приложении)
$special_items2 - массив, содержащий список спецпредложений(VIP)
$grid_items - массив обычных объявлений
$news_list_column - массив списка новостей
$apps_page_view - если переменная определена, значит идет просмотр статической страницы
$meta_keywords - keywords
$meta_description - description
$breadcrumbs - "хлебные крошки"
$map_type - google, yandex
$is_account - указывает на то, что мы сейчас в личном кабинете (1/0)
$_layout - текущий макет, по умолчанию (как правило) layout_basic.tpl (используется, например, в main.tpl для подгрузки основного файла шаблона)