Chernetskiy

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

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

  • Посещение

  • Days Won

    191

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

  1. Like
    Chernetskiy получил репутацию от Helenblondi в Ошибка 404. Как редактировать страницу с ошибкой?   
    Вот пользователь пусть и решает, куда ему пойти... вот так не устраивает?
  2. Like
    Chernetskiy изменил репутацию Дмитрий Кондин в Обновление безопасности   
    Под Новый год дед мороз решил нам показать что есть в cms sitebill уязвимость )
    И мы быстренько сделали исправление.
    Чтобы у вас не было уязвимости обновите приложения third, excelfree и excel (если он у вас есть).
  3. Like
    Chernetskiy получил репутацию от kkkv39 в Копия realty_view.tpl   
    По ftp или из панели управления хостингом копируем файл себе на комп, переименовываем и возвращаем его обратно на сервер. Он должен оказаться там-же, по соседству с исходным. Копию этого файла (шаблона) вы увидите в Админке сайта -> Редактор шаблонов, тоже по соседству с исходным.
    Если скопировали из  ваш_сайт.ru/template/frontend/realia/ файл realty_view.tpl, переименовали его в realty_view2.tpl, и загрузили его обратно, то у вас оба файла будут находиться по указанному пути. Они-же, оба будут доступны и в Редакторе шаблонов.
  4. Like
    Chernetskiy получил репутацию от kkkv39 в Копия realty_view.tpl   
    Первый вариант - можно сделать в админке:
    Админка -> Редактор шаблонов открываем шаблон realty_view.tpl и копируем его содержимое там-же кликаем на кнопку вверху справа "Новый шаблон" и присваиваем ему новое название, например realty_view2.tpl вставляем скопированное из первого шаблона в новый, сохраняем. Второй вариант - по ftp скопировать нужный фам файл, например /template/frontend/realia/realty_view.tpl, переименовать его и загрузить обратно в  /template/frontend/realia/...
  5. Like
    Chernetskiy изменил репутацию mykvartira в продвижение сайта   
    Отдельное спасибо Константину за помощь. Благодаря ему получилось сделать разметку og (Open Graph) более качественно. Может кому-то понадобится
    <meta property="og:title" content="{$meta_title}"/> <meta property="og:description" content="{if $meta_description != ''}{$meta_description}{else}{$data.text.value|truncate:100}{/if}"/> <meta property="og:image" content="http{if $smarty.server.HTTPS ne ''}s{/if}://{$smarty.server.HTTP_HOST}/img/data/{$photo[0].normal}" alt="Фото-{$title}"/> <meta property="og:type" content="website"/> <meta property="og:url" content="http{if $smarty.server.HTTPS ne ''}s{/if}://{$smarty.server.HTTP_HOST}/{$REQUESTURIPATH}"/> <meta property="og:site_name" content="Mykvartira.com - Доска объявлений о недвижимости без регистрации, бесплатно"/> <meta property="og:locale" content="ru_RU"/>  
  6. Thanks
    Chernetskiy получил репутацию от mykvartira в продвижение сайта   
    Думаю, что во второй строке параметр truncate:100 есть смысл увеличить до 160 - 295 (оптимальный размер)
  7. Thanks
    Chernetskiy получил репутацию от mykvartira в продвижение сайта   
    Людям сначала надо попасть на этот сайт, а это по большей части к поисковой выдаче и соответствие названия домена поисковому запросу - хороший плюс.
  8. Thanks
    Chernetskiy получил репутацию от mykvartira в продвижение сайта   
    Предпочтительно называть домен таким образом, чтобы он отражал деятельность компании или конкретное предложение, желательно, чтобы название было близко или совпадало с поисковой фразой по конкретной тематике. Поисковики уже на этом этапе определяют приоритет в выдаче результатов по поисковым запросам. Например, если у вас портал недвижимости, который предлагает квартиры в аренду, логичнее будет в названии домена использовать слова "apartments", "rent", "kvartira". А вот будет-ли стоять рядом в поисковой выдаче аналогичный сайт с названием, например "kolobok", большой вопрос.
  9. Like
    Chernetskiy получил репутацию от Helenblondi в Что у вас сегодня на ужин?   
    А кому сейчас легко?
    Да он у меня спортсмен, сколько не корми - всё равно худой, по бабам тоскует
  10. Like
    Chernetskiy получил репутацию от kkkv39 в Изменения в подробностях карточки объекта [решено]   
    Приведите площади всех участков (отдельных, с домами, коммерческих) к единой размерности. По умолчанию указываются  в объявлениях и выгружаются в Яндекс сотки. Если есть отличия, то в настройках выгрузки укажите в каком варианте выгружать в Яндекс. Единый формат вам упростит вывод параметров в карточку объекта.
  11. Like
    Chernetskiy получил репутацию от Дмитрий Кондин в Выгрузка Yandex.Realty   
    Сервис Яндекс.Недвижимость объявил акцию - с 15 декабря 2017 г. по 15 февраля 2018 г. публикация объявлений во всех разделах будет бесплатной! 
  12. Like
    Chernetskiy получил репутацию от kkkv39 в Изменения в подробностях карточки объекта [решено]   
    Написать условие вывода, например: 
    если тип объекта квартира, то выводим площадь общую/жилую/кухни и кв.м и этаж/этажность если тип объекта участок, то выводим площадь участка и сот. иначе, выводим оба случая (для домов с участками) если публикуете офисы/магазины/склады, то тут надо будет додумать условие...
    Вот немного мой вариант (немного другой, но суть понятна) отображения параметров объекта на главной, в зависимости от типа объекта:
    <div class="area"> <span class="key">{$L_SQUARE}:</span> <span class="value"> {if intval($grid_items[i].topic_id)==18 || intval($grid_items[i].topic_id)==31 || intval($grid_items[i].topic_id)==32 || intval($grid_items[i].topic_id)==6127} {$grid_items[i].lot_area|number_format:0:",":" "} сот. {else} {$grid_items[i].square_all}/{$grid_items[i].square_live}/{$grid_items[i].square_kitchen} м<sup>2</sup> {/if} </span> </div> <div class="area"> <span class="key"></span> <span class="value"> {if intval($grid_items[i].topic_id)==18 || intval($grid_items[i].topic_id)==31 || intval($grid_items[i].topic_id)==32 || intval($grid_items[i].topic_id)==6127} {else} {$L_FLOORTY}: {if intval($grid_items[i].floor)!==0}{$grid_items[i].floor}/{else}{/if}{$grid_items[i].floor_count} {/if} </span> </div> <div class="area"> <span class="key"></span> <span class="value"> {if intval($grid_items[i].topic_id)==18 || intval($grid_items[i].topic_id)==31 || intval($grid_items[i].topic_id)==32 || intval($grid_items[i].topic_id)==6127} {else} {$L_ROOMS1}: {$grid_items[i].room_count} {/if} </span> </div> Здесь в зависимости от id типа недвижимости (квартиры, участки и т.п.) показывается тот или иной параметр, посмотреть можно у меня на главной
    У меня все исходит из принципа, если участок, то показываем сотки, иначе - квадратные метры + этажность + кол-во комнат. В частности, у меня id=18 - земельные участки (зарубежка), id=31 - участки для ИЖС, 32 - садовые, 6127 - коммерческая земля. 
     
     
  13. Like
    Chernetskiy получил репутацию от Helenblondi в Экспорт объявлений в PDF   
    Учитесь студенты! Вот как надо писать тех.задание. 
  14. Haha
    Chernetskiy изменил репутацию Helenblondi в Экспорт объявлений в PDF   
    Константин, спасибо. Все параметры которые сейчас выводятся на 1 странице меня полностью устраивают. Мне надо поменять внешний вид. Фото нужно 1 большое на всю ширину страницы перед пунктом параметры. после фото на всю ширину страницы далее по тексту параметры, страна регион и т.д. (первая страница) я не умею пользоваться толком этой программой этой с птичкой, поэтому нарисовала от руки.


  15. Like
    Chernetskiy изменил репутацию abushyk в shema.org - кто использует структурированные данные?   
    Я делал локальный обработчик карточки - https://www.sitebill.ru/s/topic/3635-howto-локальный-обработчик-карточки/
    Тянул в него функцию protected function makeUserOperatios($form_data_shared) в которую приходит полная модель данных просматриваемого объекта.
    <?php class Local_Kvartira_View extends Kvartira_View { protected function makeUserOperatios($form_data_shared){ } } Внутри нее ставил код создания.
    И в header.tpl внутри head-тега размещал вставку результата
    {if $ldjson!=''} <script type="application/ld+json">{$ldjson}</script> {/if}  
  16. Like
    Chernetskiy изменил репутацию abushyk в shema.org - кто использует структурированные данные?   
    Где-то на втором часу попыток расписать разметку схемы в шаблоне, что бы и вложенность обеспечить и свои данные согласно макета разместить, я плюнул и реализовал сборку json-кода разметки в локальном модуле карточки и заброску его в шаблон.)))) Разборщики схемы понимают ее не только в виде тегов, но и в виде json-объектов. В разметке осталась только разметка крошек и блок о компании. А весь продукт внутри генератора карточки. Вот сам код сборки объекта (в данном случае в функции makeUserOperatios, там же собираются и всякие og-параметры и прочая дребедень для соцсеток, телеграмма и шары):
    $JSONLDL=array(); $JSONLDL['@context']='http://schema.org/'; $JSONLDL['@type']='Product'; $JSONLDL['name']=$form_data_shared['meta_h1']['value']; $JSONLDL['url']=$this->getServerFullUrl().'/'.Sitebill::getClearRequestURI(); $JSONLDL['description']=mb_substr(strip_tags($form_data_shared['text']['value']), 0, 200, 'utf-8'); $JSONLDL['image']=$this->getServerFullUrl().'/img/data/'.$form_data_shared['image']['image_array'][0]['normal']; $JSONLDL['offers']=array(); $JSONLDL['offers']['@type']='Offer'; if($form_data_shared['optype']['value']==2){ $JSONLDL['offers']['businessFunction']='Sell'; }elseif($form_data_shared['optype']['value']==1){ $JSONLDL['offers']['businessFunction']='LeaseOut'; } $JSONLDL['offers']['price']=$form_data_shared['price']['value']; $JSONLDL['offers']['priceCurrency']=$form_data_shared['currency_id']['value_string']; $JSONLDL['offers']['availableAtOrFrom']['@type']='Place'; $JSONLDL['offers']['availableAtOrFrom']['address']['@type']='PostalAddress'; $JSONLDL['offers']['availableAtOrFrom']['address']['addressCountry']=$form_data_shared['country_id']['value_string']; $JSONLDL['offers']['availableAtOrFrom']['address']['addressRegion']=$form_data_shared['region_id']['value_string']; $JSONLDL['offers']['availableAtOrFrom']['address']['addressLocality']=$form_data_shared['city_id']['value_string']; $this->template->assign('ldjson', json_encode($JSONLDL)); и вот так он внутри head-тега вставляется
    {if $ldjson!=''} <script type="application/ld+json">{$ldjson}</script> {/if}  
  17. Like
    Chernetskiy получил репутацию от NikL в Как отформатировать текст в графе "описание" в объявлении   
    Качаем ckeditor из Файлов или с оф.сайта и загружаем его в корень сайта, далее в Настройках->Общие -> позиция WYSIWYG-редактор(editor) указываем ckeditor.
    Наслаждаемся новым редактором! 
    Но стоит учесть, что редактор позволяет добавлять HTML-разметку, коды и т.п., что увеличит вес текста и попутно будет уходить в выгрузку. Не удивляйтесь, если на сторонних сайтах, куда вы выгружаетесь, среди текста объявления появятся непонятные читателям спецсимволы и коды разметки...  
  18. Like
    Chernetskiy получил репутацию от TopRaN в Улыбнуло   
    Принтер для лепешек (видео), в арабский офис :).
     
    1479932728445-v0ch3x.mp4
  19. Like
    Chernetskiy получил репутацию от Дмитрий Кондин в Улыбнуло   
    Принтер для лепешек (видео), в арабский офис :).
     
    1479932728445-v0ch3x.mp4
  20. Thanks
    Chernetskiy получил репутацию от 617852.ru в Как в фиде удалить поле rooms-offered?   
    Лучше пропишите в data параметр количества комнат (rooms) селект-боксом, чтобы не путаться, например так: {~~студия}{1~~1}{2~~2}{3~~3}{4~~4}{5~~5}{6~~6}{7~~7}{8~~8}{9~~9}{10~~10}. При выборе количества комнат - студия, в базу ничего не запишется и всё уйдет в выгрузку правильно.
    Параметр Комнат в сделке (rooms-offered) лучше так-же прописать селект-боксом: {0~~0}{1~~1}{2~~2}{3~~3}{4~~4}{5~~5}{6~~6}{7~~7}{8~~8}{9~~9}{10~~10} и установить 0 по умолчанию, чтобы не тыкать в него на каждом объекте.
    Собственно и сам параметр Студия (studio) должен отправляться в выгрузку только при его наличии и ничего не отправляется (ни 0, ни +, ни да и т.п.), если не студия. Соответственно его тоже стоит прописать селект-боксом с таким значением: {~~нет}{1~~да}, по умолчанию ничего не указываем.
    Так-же стоит поступить и со Свободной планировкой (open_plan) - {~~нет}{1~~да}, по умолчанию ничего не указываем. Если значение специально не выбрано, ничего в выгрузку не уходит.
    Для особо одаренных агентов можете там-же заполнить позиции Подсказка (для человека), где указать им, в каком случае параметр указывается и кол-во комнат при этом не указывается  
  21. Like
    Chernetskiy получил репутацию от Helenblondi в Multilanguage в приложении Жилые комплексы   
    там вот такой код сидит:
    <div class="span12"> <div class="pull-left"> <a href="#" id="show_spanish"><img src="/template/frontend/realia_barcelona/img/spain-flag-sm.png" style="float: left; margin-right: 10px;"></a> <a href="#" id="show_english"><img src="/template/frontend/realia_barcelona/img/en-flag-sm.gif" style="float: left; margin-right: 10px;"></a> <a href="#" id="show_russian"><img src="/template/frontend/realia_barcelona/img/ru-flag-sm.png" style="float: left; margin-right: 10px;"></a> <div id="google_translate_element" style="display: inline-block;"><iframe style="display: inline-block; width: 0px; height: 0px; border: 0px; background: rgb(255, 255, 255);"></iframe> </div> <script type="text/javascript"> function googleTranslateElementInit() { new google.translate.TranslateElement({pageLanguage: 'ru', layout: google.translate.TranslateElement.InlineLayout.SIMPLE},'google_translate_element');} </script> <script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> <script type="text/javascript"> $(document).ready(function(){ $('a#show_spanish').click(function() { var lang = 'испанский'; var lang2 = 'español'; var lang3 = 'spanish'; var $frame = $('.goog-te-menu-frame:first'); if (!$frame.size()) { alert("Error: Could not find Google translate frame."); return false; } $('.goog-te-menu-frame:first').contents().find('.goog-te-menu2-item span.text').each(function(){ if($(this).html() == lang || $(this).html() == lang2 || $(this).html() == lang3){ $(this).click(); } }); return false; }); $('a#show_english').click(function() { var lang_e = 'английский'; var lang2_e = 'inglés'; var lang3_e = 'english'; var $frame = $('.goog-te-menu-frame:first'); if (!$frame.size()) { alert("Error: Could not find Google translate frame."); return false; } $('.goog-te-menu-frame:first').contents().find('.goog-te-menu2-item span.text').each(function(){ if($(this).html() == lang_e || $(this).html() == lang2_e || $(this).html() == lang3_e){ $(this).click(); } }); return false; }); $('a#show_russian').click(function() { var lang_r = 'русский'; var lang2_r = 'ruso'; var lang3_r = 'russian'; var $frame = $('.goog-te-menu-frame:first'); if (!$frame.size()) { alert("Error: Could not find Google translate frame."); return false; } $('.goog-te-menu-frame:first').contents().find('.goog-te-menu2-item span.text').each(function(){ if($(this).html() == lang_r || $(this).html() == lang2_r || $(this).html() == lang3_r){ $(this).click(); } }); return false; }); }); </script> </div> <form class="searchbyidform hidden-phone" method="get" action="/"><input type="text" name="id" value="" placeholder="Поиск по лоту"></form> <div class="favoriteslink pull-right hidden-phone hidden-tablet"><a href="/myfavorites/">Избранное (<span id="favorites_count">0</span>)</a> </div> </div> только флажки надо погрузить в свой шаблон сайта (см. ссылки в начале кода). Флажки работают отдельно от панели переводчика Гугл рядом, по сути это 2 дублирующие друг-друга функции.
    Проще вставить код переводчика в панель навигации, в начало language-switcher, где уже имеется форматирование под переключатель переводчика, чтобы не выглядело криво.
    ... <div id="navigation"> <div class="container"> <div class="navigation-wrapper"> <div class="navigation clearfix-normal"> {$navmenu} <div class="language-switcher"> <!-- Переводчик Google --> <div id="google_translate_element"></div> {literal} <script type="text/javascript"> function googleTranslateElementInit() { new google.translate.TranslateElement({pageLanguage: 'ru', layout: google.translate.TranslateElement.InlineLayout.SIMPLE}, 'google_translate_element');} </script> <script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> {/literal} <!-- Переводчик Google --> {foreach item=ln from=$available_langs key=k} ....  
  22. Like
    Chernetskiy получил репутацию от mykvartira в Вход в админку 404   
    Бывает и на хостинге, сейчас многие обновляют версии php и MySQL, бывает некорректно прописывают параметры и переводят сайты на обновленный хостинг. Передайте привет поддержке, обычно на это они быстро реагируют.
  23. Like
    Chernetskiy получил репутацию от Pavel88 в Multilanguage в приложении Жилые комплексы   
    Елена, мультиязычность присутствовала в CMS изначально, только переводились системные фразы, сообщения, меню. Сейчас идет речь об автоматическом переводе всего, что есть на сайте, включая тексты объявлений, статьи и новости. Насколько я понимаю, прикручивают модуль перевода от Гугла, в котором пользователь может выбрать удобный емй язык общения (их вроде больше сотни), но модуль пока еще в разработке... Будет готово, узнаем первыми.  
    Оценить качество перевода можно например здесь - внизу слева плавает флажок с названием языка, кликаем на него и переключаем на нужный язык. К стати, посмотри насколько правильно переводит на Болгарский, ну и другие известные тебе языки? У меня есть сомнения в адекватности перевода.
  24. Like
    Chernetskiy изменил репутацию abushyk в Выборка данных из справочника   
    Если там заведомо будет набор цифр определенной длины, или максимум двух-трех вариантов длин, то можно делать регуляркой в шаблоне. Да в принципе в люом случае можно регуляркой, только нужно определиться для какой длины подобной строки какой шаблон будет.
    Например
    {if $user_data.phone.value != '' && $user_data.phone.value|strlen==11} {$user_data.phone.value|regex_replace:'/(\d)(\d{3,3})(\d{3,3})(\d{2,2})(\d{2,2})$/':'${1} (${2}) ${3}-${4}-${5}'} {else} {$user_data.phone.value} {/if} что из любого 11-значного набора сделает нам форматный вывод ( 75297916129 => 7 (529) 791-61-29), а остальное выведет как есть
  25. Like
    Chernetskiy изменил репутацию abushyk в Выборка данных из справочника   
    Универсальное типовое решение для шаблона:
    {*Создаем пустой массив*} {assign var=x value=array()} {*Поочередно перебираем нужные элементы и, если по некоему условию они нам подходят для вывода, складываем их в этот массив*} {if $entity_item.PARAM_NAME_1.value_string!=''} {append var=x value=$entity_item.PARAM_NAME_1.value_string} {/if} {if $entity_item.PARAM_NAME_2.value_string!=''} {append var=x value=$entity_item.PARAM_NAME_2.value_string} {/if} {if $entity_item.PARAM_NAME_3.value_string!=''} {append var=x value=$entity_item.PARAM_NAME_3.value_string} {/if} {*Если массив не пуст по итогу, выводим его значения слепленные запятой*} {if $x|count>0} Адрес (или другое название): {$x|implode:', '} {/if}