TopRaN

Модераторы
  • Публикации

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

  • Посещение

  • Days Won

    90

Изменения репутации

  1. Like
    TopRaN получил репутацию от Vampir155 в Как убрать блок?   
    1. Найти через "редактор шаблонов" файл main.tpl. В нем - найти содержимое {include file="special_offers.tpl"} и заменить его на следующее 
    {*include file="special_offers.tpl"*} 2. Ниже приведенный код поставить в условие <!-- тут код в рамке -->
    код в рамке 
    <div class="container"> <div class="block-heading"> <h4><span class="heading-icon"><i class="fa fa-users"></i></span>Партнеры</h4> </div> <div class="row"> <ul class="owl-carousel" id="clients-slider" data-columns="6" data-autoplay="yes" data-pagination="no" data-arrows="no" data-single-item="no" data-items-desktop="6" data-items-desktop-small="4" data-items-mobile="2" data-items-tablet="4"> <li class="item"> <a href="#"><img src="{$estate_folder}/template/frontend/{$current_theme_name}/img/partner/LogoRGR1.jpg" alt=Риэлтор""></a> </li> <li class="item"> <a href="#"><img src="{$estate_folder}/template/frontend/{$current_theme_name}/img/partner/GRMO.jpg" alt="Гильдия риэлторов Московской области"></a> </li> </ul> </div> </div> 3. Данное условие не реализовано в движке
    4. да, это возможно путем добавления фйла перевода переменных в соответствующую папку шаблона.
    5. в файле rigth_sidebar.tpl, в самом его конце, удаляем код (либо меняем на свой)
    <div class="widget sidebar-widget featured-properties-widget"> <h3 class="widgettitle">{$LT_SOCIALNETS}</h3> <script type="text/javascript" src="http://userapi.com/js/api/openapi.js?22"></script> <!-- VK Widget --> <div id="vk_groups"></div> <script type="text/javascript"> {literal} VK.Widgets.Group("vk_groups", {mode: 0, width: "240", height: "400"}, 25347835); {/literal} </script> </div>  
  2. Like
    TopRaN изменил репутацию Дмитрий Кондин в Работа с клиентами (элемент CRM) тип данных client_id   
    Для того чтобы упорядочить работу с клиентами мы добавили новый тип данных client_id. Данный тип данных позволяет связать базу клиентов с существующими объектами недвижимости. При этом база клиентов храниться отдельно от объектов недвижимости. Таким образом мы можем к одному клиенту привязывать несколько разных объектов недвижимости, а также добавлять и разные другие формуляры, например, заявки на ипотеку, заявки на аренду и много другое, что можно сделать с помощью редактора форм и собственных справочников.
    1.       Установка
    В редакторе форм в таблицу data добавляем поле client_id, тип данных client_id, ставим галочку Хранить в базе данных поле, указываем название Клиент. Сохраняем. Все тоже самое можно делать для любых других ваших таблиц.
    Соответственно старые поля ФИО, телефон, email можно выключить из таблицы data, чтобы не создавать путаницу. Только предварительно нужно вам перенести все записи эти в таблицу client. Можно с помощью модуля Excel это организовать.
    2.       Примеры использования
    Открываем существующую запись или создаем новую запись объявления и в поле клиента вводим цифры телефона клиента. Будет выведен список совпадающих записей. Выбираем одну из них и сохраняем объявление. Если в базе клиентов еще нет записи для искомого, то можно нажать Создать нового и заполняем ФИО и телефон.
    3.       Управление записями клиентов
    Управлять записями (редактировать и удалять) можно в Приложения – Клиенты. В новой версии админки клиенты доступны в левом меню.


     
  3. Like
    TopRaN получил репутацию от Александр Лубянский в Приложение выгрузки объявлений в AFY.ru   
    Попробуйте просто   {if intval($similar_data[x].region_id.value)==90}, т.к. вам нужно получить не надпись его имени а только id
  4. Like
    TopRaN получил репутацию от Chernetskiy в Ноль по умолчанию в стоимости   
    Не совсем понимаю что вы имели ввиду.
    по пунктам.
    если $data.price.value не равно 0 то вывести Рыночная стоимость $data.price.value
    А если поле пустое? и по умолчанию не стоит 0 ?
    вот если бы у вас было бы 
    {if $data.price.value eq '0' } <h3>Рыночная стоимость: <span class="pricevalue">{$data.price.value|number_format:0:",":" "} &#8381;</span></h3> {elseif $data.price.value ne ''} ... тут выводим что-нибудь другоt например price_discount {/if} Пояснение: если $data.price.value не равно 0 то выводим Рыночная стоимость $data.price.value, если $data.price.value пустое ( по умолчанию 0 не стоит) то выводим что-нибудь другое или не выводим
  5. Like
    TopRaN получил репутацию от Realtor в Отключение мобильной версии   
    Все просто для нужного класса указать display:none;. Указывать для того разрешения (media) на котором вы хотите скрыть содержимое.
    Если использовать именнометод бутсрапа то начиная с версии 3.2 можно в разметке добавлять класс hidden-(MD/sm/xs)-up(down)
  6. Like
    TopRaN получил репутацию от Chernetskiy в Настройки CKeditor   
  7. Like
    TopRaN получил репутацию от Chernetskiy в Настройки CKeditor   
    Я либо сегодня, либо завтра с утра загружу свою версию сборки. Сборка фулл-расширенная.
  8. Like
    TopRaN изменил репутацию abushyk в [HOWTO] Локальный grid_manager   
    Центральным местом, которое в 90% случаев обрабатывает запросы на извлечение нескольких записей-объявлений (всякого рода сетки-списки, в том числе и спецпредложениях в боковых колонках и забор данных для нанесения на карту), является файл /apps/system/lib/frontend/grid/grid_constructor.php - или Конструктор списка (КС).
    В нем много разного функционала, но самый часто востребованный лежит в двух функциях transformGridData - подготовка данных к выводу и prepareRequestParams - обработка параметров поиска.
    prepareRequestParams выполняет все операции связанные с тем, что бы превратить фильровочные переменные запроса, переданные в Конструктор списка, в части запроса к БД. Она имеет встроенную обработку некоторого числа параметров, но для расширения функционала иногда необходимо добавить свои. prepareRequestParams  НЕ обрабатывает параметры запроса прямо из строки браузера. Все параметры с веб-интерфейса перехватываются отдельной функцией, нормализуются и только тогда передаются в prepareRequestParams.
    transformGridData адаптирует результат выборки из БД к удобоваримому виду. Поскольку результатом выборки списка являются строки из БД, то именно эта функция трансформирует значения указанные ключем, например поля select_box и select_by_query  в текстовые значения. Эта функция так же умеет обрабатывать сама некоторые "стандартные" поля, например географические - country_id, region_id,... street_id, currency_id и все поля типа select_box. "Превращение" в текст остальные ссылочных полей необходимо реализовывать самому
    Как создать для шаблона локальный Grid_manager
    1. Переопределением метода в шаблоне (ручное) - устаревший
    В файле /template/frontend/имя_вашего_шаблона/main/main.php смотрим, есть ли функция __construct(). Если нет, то создаем ее внутри декларации class frontend_main extends SiteBill_Krascap {} в виде 
    public function __construct(){ parent::__construct(); require SITEBILL_DOCUMENT_ROOT.'/template/frontend/'.$this->getConfigValue('theme').'/main/grid/local_grid_constructor.php'; $this->_setGridConstructor(new Local_Grid_Constructor()); } 2. Переопределением метода в шаблоне (автоматическое) - устаревший
    В файле /settings.php.ini добавляем секцию описания локального Конструктора списков
    [GridConstructor] path='/main/grid/local_grid_constructor.php' name='Local_Grid_Constructor' Первая строка - имя секции
    вторая - путь к файлу локального Конструктора списка от корня шаблона
    третья - задекларированное имя класса локального Конструктора списка
    3. Настроечное переопределение - используйте, по возможности, именно этот вариант локализации
    Указываем в Настройки  - Общее галочку Использовать локальный Конструктор списка (classic_local_grid)
    Отличие последнего метода от остальных в том, что в нем имя класса конструктора и имя файла в котором он расположен должны быть соответственно Local_Grid_Constructor и template/frontend/имя_шаблона/grid/local_grid_constructor.php и никакими иначе.
    =============================================================================================
    Одним из этих способов мы указываем шаблону, что нужно использовать для построения списков наш измененный Конструктор списков. Но теперь нам необходимо создать его.
    Для этого нам нужно создать файл по адресу указанному в require_once для первого способа, в path для второго и в /template/frontend/имя_шаблона/grid/local_grid_constructor.php для третьего.
    Базовое наполнение этого файла будет иметь вид:
    class Local_Grid_Constructor extends Grid_Constructor { } Уже после этого локальный КС будет работать, но так как он пока пуст, то он просто, как транслятор, будет передавать заказы в стандартный КС. Для того, что бы добавить что-то свое, нам нужно внести в него изменения.
    1. Добавляем подхват текстового значения для поля типа select_by_query
    Поскольку это операция трансформации из ключевого значения в текстовое, то нам понадобится функция transformGridData . Так как остальные параметры нам нужны и мы просто хотим добавить своего, то мы делаем свою функцию с вызовом родительской
    public function transformGridData($ra, $_collect_user_info=false){ $data=parent::transformGridData($ra, $_collect_user_info);/*используем "стандартный" вызов для выполнения привычных действий*/ /*тут мы можем сделать что-то свое с данными*/ return $data; /*возвращаемся в текущий процесс исполнения*/ } Итак у нас в объявлении есть поле station_id связывающее объект с некоторой станцией из внешней таблицы station в которой станции разложены по строкам вида station_id, name. Так как в данных объявления при выборке мы имеем только ключ станции, а хотим получить именно ее имя и штатный трансформатор за нас этого не делает, то мы проиводим следующее
    foreach($data as $k=>$d){ if ( $d['station_id'] > 0 ) { $data[$k]['station'] = $data_model->get_string_value_by_id('station', 'station_id', 'name', $d['station_id'], true); }else{ $data[$k]['station']=''; } } Либо
    $station_ids=array(); foreach($data as $k=>$d){ $station_ids[intval($d['station_id'])]=intval($d['station_id']); } if(!empty($station_ids)){ $DBC=DBC::getInstance(); $query='SELECT `station_id`, `name` FROM '.DB_PREFIX.'_station WHERE station_id IN ('.implode(',', $station_ids).')'; $stmt=$DBC->query($query); if($stmt){ while($ar=$DBC->fetch($stmt)){ $station_ids[$ar['station_id']]=$ar['name']; } } } foreach($data as $k=>$d){ if(isset($station_ids[intval($d['station_id'])])){ $data[$k]['station']=$station_ids[intval($d['station_id'])]; }else{ $data[$k]['station']=''; } } первый способ короче, но второй на больших количествах записей более продуктивен и более удобен, если нужно получить сложные названия текстового значения, например сцепить с названием станции еще и какой-то другой признак из свойств самой станции.
    Для select_by_query второй вложенности, например если нужно получить имя застройщика, которое является свойством объекта ЖК, с которым связан объект, первый вариант уже не проходит. Т.е. использовать его конечно можно, но количество дополнительных действий сразу перекрывает сложность второго способа. Поэтому используем сразу второй.
    $complex_ids=array(); foreach($data as $k=>$d){ $complex_ids[intval($d['complex_id'])]=intval($d['complex_id']); } if(!empty($complex_ids)){ $DBC=DBC::getInstance(); $query='SELECT d.`name`, c.`complex_id` FROM '.DB_PREFIX.'_complex c LEFT JOIN '.DB_PREFIX.'_developer d USING (developer_id) WHERE complex_id IN ('.implode(',', $complex_ids).')'; $stmt=$DBC->query($query); if($stmt){ while($ar=$DBC->fetch($stmt)){ $complex_ids[$ar['complex_id']]=$ar['name']; } } } foreach($data as $k=>$d){ if(isset($complex_ids[intval($d['complex_id'])])){ $data[$k]['developer']=$complex_ids[intval($d['complex_id'])]; }else{ $data[$k]['developer']=''; } } Очевидно, что принцип схожий и разница заключается только в мелочах вроде запроса на выборку связанного объекта. При чем, в зависимости от сложности желаемого к получению текстового значения будет меняться и сложность запроса, которая запросто может распасться на несколько.
    В итоге наш локальный КС будет выглядеть таким образом:
    <?php class Local_Grid_Constructor extends Grid_Constructor { public function transformGridData($ra, $_collect_user_info=false){ $data=parent::transformGridData($ra, $_collect_user_info);/*используем "стандартный" вызов для выполнения привычных действий*/ /*тут мы можем сделать что-то свое с данными*/ $complex_ids=array(); foreach($data as $k=>$d){ $complex_ids[intval($d['complex_id'])]=intval($d['complex_id']); } if(!empty($complex_ids)){ $DBC=DBC::getInstance(); $query='SELECT `complex_id` FROM '.DB_PREFIX.'_complex WHERE complex_id IN ('.implode(',', $station_ids).')'; $query='SELECT d.`name`, c.`complex_id` FROM '.DB_PREFIX.'_complex c LEFT JOIN '.DB_PREFIX.'_developer d USING (developer_id) WHERE complex_id IN ('.implode(',', $complex_ids).')'; $stmt=$DBC->query($query); if($stmt){ while($ar=$DBC->fetch($stmt)){ $complex_ids[$ar['complex_id']]=$ar['name']; } } } foreach($data as $k=>$d){ if(isset($complex_ids[intval($d['complex_id'])])){ $data[$k]['developer']=$station_ids[intval($d['complex_id'])]; }else{ $data[$k]['developer']=''; } } return $data; /*возвращаемся в текущий процесс исполнения*/ } } 2. Получаем дату в красивом формате
    Иногда нужно подготовить дату под вывод, что бы не мучаться с однотипными действиями в каждом шаблоне. Например подготовим дату добавления в виде "12 ноябра 2013 года".
    public function transformGridData($ra, $_collect_user_info=false){ $data=parent::transformGridData($ra, $_collect_user_info); $months=array( '1'=>'января', '2'=>'февраля', '3'=>'марта', '4'=>'апреля', '5'=>'мая', '6'=>'июня', '7'=>'июля', '8'=>'августа', '9'=>'сентября', '10'=>'октября', '11'=>'ноября', '12'=>'декабря', ); foreach($data as $k=>$d){ $month=date('n', $d['date_added']); $data[$k]['pretty_date']=date('j', $d['date_added']).' '.$months[date('n', $d['date_added'])].' '.$months[date('Y', $d['date_added'])]; } return $data; } и в поле pretty_date в шаблоне у нас будет искомая строка
    3. День добавления
    Подготовим дату добавления, что бы она показывала было ли добавлено объявление сегодня, вчера или в другой день.
    public function transformGridData($ra, $_collect_user_info=false){ $data=parent::transformGridData($ra, $_collect_user_info); $now=date('dmY'); $yesterday=date('dmY', time()-24*3600); foreach($data as $k=>$d){ if($now==date('dmY', strtotime($d['date_added']))){ $data[$k]['pretty_adddate']='сегодня'; }elseif($yesterday==date('dmY', strtotime($d['date_added']))){ $data[$k]['pretty_adddate']='вчера'; }else{ $data[$k]['pretty_adddate']=date('d.m.Y', strtotime($d['date_added'])); } } return $data; } Этот вариант можно скомбинировать с предыдущим.
    4. Форматирование адресной строки
    Форматируем строку адреса для списка вида "Нижний Тагил (Заводской), Лермонтова, 12" [Город (Район), Улица, Дом]
    protected function transformGridData($ra, $_collect_user_info=false){ $data=parent::transformGridData($ra, $_collect_user_info); foreach($data as $k=>$d){ $addrline=array(); if($d['city']!=''){ if($d['district']!=''){ $addrline[]=$d['city'].' ('.$d['district'].')'; }else{ $addrline[]=$d['city']; } } if($d['street']!=''){ $addrline[]=$d['street']; if($d['number']!=''){ $addrline[]=$d['number']; } } if(!empty($addrline)){ $data[$k]['pretty_address']=implode(', ', $addrline); }else{ $data[$k]['pretty_address']=''; } } return $data; }  
  9. Like
    TopRaN получил репутацию от laser в Ошибка: не отображаются фотографии-превью объектов.   
    пришлите доступы в личку , поправлю
  10. Like
    TopRaN получил репутацию от Александр Лубянский в вывод в поиске пользовательских форм   
    Вам нужно нажать клавишу cntl и мышкой отмечать или снимать галочку на нужном объекте.
  11. Like
    TopRaN получил репутацию от Дмитрий Кондин в Добавить свой текст в форму добавки объявления   
    Нет, но можно воспользоваться этим тут
  12. Like
    TopRaN изменил репутацию Дмитрий Кондин в Cтраница с объектами агента /userХХ.html   
    Потому что для того чтобы это сделать, мне нужно потратить время на изучение вопроса более углубленно, потом экспериментировать с составлением sql-запроса у себя на компьютере, потом написать вам, потом начнете вы это воплощать и думаю в этой части появятся новые вопросы и затруднения и вы снова начнете писать и спрашивать. В общем ради одной локальной проблемы время я потрачу очень много.
    Для ваших локальных задач у нас есть специальный раздел на форуме, где фрилансеры обменивают свое время на денежное вознаграждение, чтобы можно было покупать необходимые продукты и услуги. 
    Теперь понятнее стало?
  13. Like
    TopRaN получил репутацию от Дмитрий Кондин в Как добавить в "Поиск. фильтр" Площадь от и Площадь до   
    Код для площади . Для стандартного шаблона.
    {$L_SQUARE_SHORT} {$L_FROM} <div class="select_box_td"> <input type="text" name="square_min" value="{if (isset($smarty.request.square_min) && $smarty.request.square_min!=0)}{$smarty.request.square_min}{/if}" /></div> {$L_TO} <div class="select_box_td"> <input type="text" name="square_max" value="{if (isset($smarty.request.square_max) && $smarty.request.square_max!=0)}{$smarty.request.square_max}{/if}" /></div>  
  14. Like
    TopRaN получил репутацию от bogdanoff в Скачать кэшированный файл выгрузки   
    Лично я для таких файлов использую phpexpert.
  15. Like
    TopRaN получил репутацию от kkkv39 в Как в шаблоне realia вывести ID объявления   
    Посмотрите пост выше ( сделал вставку кода)
  16. Like
    TopRaN изменил репутацию Дмитрий Кондин в Обновление в один клик   
  17. Like
    TopRaN получил репутацию от Helenblondi в создание ссылок в линк-менеджере   
    нужно просто topic_id=....  (вместо точек нужную категорию ее id )
  18. Like
    TopRaN получил репутацию от abaiti в Программа для загрузки объявлений из АВИТО   
    Срипт заточен под сайтбилл
  19. Like
    TopRaN получил репутацию от DoobBY в Настройка шаблона agency   
    Файл realty_grid_thumbs.tpl
  20. Like
    TopRaN изменил репутацию Chernetskiy в настройки шаблона (как не надо писать темы)   
    Предлагаю сделать раздел "Развлекалово" и вопросы новичков типа "Хочу чтобы бац и всё было..." адресовать туда. Попутно установить рейтинг вопросов а по итогам квартала-полугодия-года номинировать на премию "Риэлторская калоша" или "Жопой в лужу"...
  21. Like
    TopRaN получил репутацию от Chernetskiy в настройки шаблона (как не надо писать темы)   
    Вижу... вижу.. отчетлево вижу!!! Убираем точки, выделяем цветом категории, включаем плагин choosen! Дальше только темнота...
  22. Like
    TopRaN изменил репутацию XTRO в Пользовательское соглашение   
    для "во-первых", куда уж точнее      или и через пост там же
    для "во-вторых" - и не требуется,
    а ,вообще, незачем дублировать темы.
  23. Like
    TopRaN получил репутацию от FD в Дополнительные пункты в главное меню - Pure   
    Эта тема вам подойдет, просто замените realia на pure. Логика у фитчи одна и та же.
  24. Like
    TopRaN получил репутацию от abushyk в Улыбнуло   
    Почему так важно делать техническое задание? И почему меня бесят Адовые пользователи!


  25. Like
    TopRaN получил репутацию от Chernetskiy в Улыбнуло   
    Почему так важно делать техническое задание? И почему меня бесят Адовые пользователи!