abushyk

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

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

  • Посещение

  • Days Won

    269

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

  1. "Это нераспространенная настройка суть которой заключалась в следущем. Если в объекты было поле типа date с системным имнем free_from тогда некоторые приложения (watchlistmanager, subscribe) могли игнорировать эти объекты, если текущая дата была больше указанной в этом поле. + в рамках шаблона (отдельно взятого модифицированного) мог быть реализован отбор по этому критерию. Но в целом ничего интересного.
  2. И еще после $arts=$AA->getArticlesList($params); сделайте var_dump($arts); что бы убедиться, что статьи выбрались и не работает только вывод.
  3. Правильно сбило. Именно ее нужно прокручивать в цикле. {if $main_page_articles|count>0} <div class="row"> <h2>Последние статьи</h2> {foreach from=$main_page_articles item=article_item} <div class="span3 col-md-3"> {if $article_item.image.value[0].preview != ''} <a href="{$article_item._href}"><img src="{$estate_folder}/img/data/{$article_item.image.value[0].preview}" class="img-responsive"></a> {/if} <h2><a href="{$article_item._href}">{$article_item.title.value}</a></h2> <p>{$article_item.anons.value}</p> <a href="{$article_item._href}" class="btn btn-primary">{$apps_words.articles.LIST_MORE}</a> </div> {/foreach} </div> {/if}
  4. Например вот так {if $articles_list_column|count>0} <div class="row"> <h2>Последние статьи</h2> {foreach from=$articles_list_column item=article_item} <div class="span3 col-md-3"> {if $article_item.image.value[0].preview != ''} <a href="{$article_item._href}"><img src="{$estate_folder}/img/data/{$article_item.image.value[0].preview}" class="img-responsive"></a> {/if} <h2><a href="{$article_item._href}">{$article_item.title.value}</a></h2> <p>{$article_item.anons.value}</p> <a href="{$article_item._href}" class="btn btn-primary">{$apps_words.articles.LIST_MORE}</a> </div> {/foreach} </div> {/if} верстано сегодня утром, так что может быть сырое, но концепт выдержан.
  5. настройки - общее : Количество объявлений на одну страницу (per_page) - для фронта Количество объявлений на страницу в админке (per_page_admin) - для админки
  6. Если пропали объявления в админке и фронте, но в БД они есть, то первым решением обычно бывает: Настройки - Дополнительно - Использовать предудаление - сбросить галочку или поставить 0 вместо 1.
  7. В данный момент "группа" незарегистрированных пользователей не отображена в списке доустпных групп в поле выбора доступа. Поэтому при выборе все в этом списке вы ограничиваете доступ теми, кто имеет установленную группу, а это ТОЛЬКО авторизированные пользователи. Поэтому если доступ нужен всем, включая гостей, в поле выбора групп доступа нужно разотметить все чекбоксы. Но это важно только для формы. Если вам нужно просто вывести это поле например в карточке, то для его вывода, даже если оно скрыто от текущей группы или гостя, можно воспользоваться самим шаблоном и выводить ее не из {$data.date_added.value} а из расширенного набора данных {$data_shared.date_added.value}
  8. В контроллере шаблона main.php после вызова приложений if(!$has_result){ $apps_processor = new Apps_Processor(); $apps_processor->run_frontend(); if ( count($apps_processor->get_executed_apps()) > 0 ) { $work_subcontroller='apps'; $has_result=true; } } добавляем запрос на выборку $AA=new articles_site(); $params=array(); $arts=$AA->getArticlesList($params); $this->template->assert('main_page_articles', $arts['articles']); В результате вы получите до 10 последних статей. Что бы изменить это количество $params=array(); нужно заменить на $params=array('per_page'=>5); Теперь в шаблоне у вас будет переменная {$main_page_articles} которая будет содержать набор статей в виде массива моделей. Дальше прокручиваем ее в цикле и выводим аналогично как это сделано в /apps/articles/site/template/list.tpl NB. В текущей версии функция getArticlesList недоступна извне. Поэтому в файле /apps/articles/admin/admin.php необходимо изменить protected function getArticlesList на public function getArticlesList Со следующей версии это изменение будет учтено.
  9. Сделайте мне, пожалуйста, доступ в админку и к фтп я посмотрю в чем может быть проблема.
  10. require_once SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/frontend/grid/grid_constructor.php'; $grid_constructor = new Grid_Constructor(); Эти две строки следует заменять на $grid_constructor = $this->_getGridConstructor(); либо на $grid_constructor=$this->_grid_constructor; Тогда вы подцепите не просто базовый сеточник, а именно ваш локальный (если он есть. а если его нет, то базовый), хотя не всегда это критично. Означает направление сортировки по параметру указанному в предыдущем элементе. Может иметь значение asc - от меньшего к большему и desc - в обратную сторону. page_limit и page - два параметра которыми вы можете управлять лимитированием результата запроса. Первый устанавливает "количество на страницу", которое перебивает настроечное. Второй просто говорит какую страницу при разбиении результата выборки на страницы, отдать. Т.е в данном случае вы просите сформировать выборку объяв из рассчета 5-ть штук на страницу и вернуть только первую из них, что равносильно "дай мне первые 5 записей из найденных". Все любые фильтрации могут быть применены тут же. Слеудет помнить, что вызов $grid_constructor->get_sitebill_adv_ext является низкоуровневым. Т.е. когда в обращаетесь к сетке через сайт, выбрав раздел или запустив фильтр, происходит несколько разных операций - 1.разбор запроса, 2.сбор параметров, которые умеет обрабатывать сеточник из запроса, 3.передача параметров в сеточник, 4.сама работа сеточника по созданию выборки по переданным параметрам... Так вот вызов get_sitebill_adv_ext это уже пункт 4 и дальше в верхнем списке. Т.е. определить какие параметры вам нужны и откуда их взять и передать их в сеточник - все это вы ДОЛЖНЫ сделать сами. Для данного случая вы должны знать как именно у вас определяется город, есть ли в общем доступе параметры с идешкой искомого города, есть ли возможность взять их оттуда. И тогда взять и передать его под видом ключа $params['city_id']=N вместе с остальными параметрами. Работа с сеточником на низком уровне дает значительно больше возможностей, но требует более масштабного понимания, что творится вокруг.
  11. если загружали массово через эксель или парсер например, то в таких случаях дефолтные значения не применяются, так как они хоть и работают через форму (а точнее через модель, без создания на ее основе формы), но немного не так, как если делать это через браузер.
  12. там есть возможность настроить для разных групп для какой откуда брать контакты - из данных объявления ли, или из профиля.
  13. Значение по умолчанию говорит о том какое значение будет выставлено в форму при ее загрузке, если в поле не указано своего значения. именно в форме. выставление дфолтного значения задним числом не приведет ни к заполнению этим значением незаполненных полей, ни к их подстановке в других модулях пользующимися моделью.
  14. Если у объявления не указан свой метатайтл в поле Мета-заголовок или метатайтл не формируется иным способом, то он дублируется тем текстом, который создается для настраничного заголовка. Тогда вы можете либо исключить цену из настраничного заголовка путем настройки его через Настройки - Дополнительно - (apps.realty.title_preg), либо все-таки прописать любым способом отдельный мета-заголовок.
  15. механика поиска состоит из двух частей - сообщение параметров поиска и их обработка. если вы ковырялись в темплет_сеарч, то помните что там есть две функции - гетПарамс и run. В первой вы что-то брали из запроса, проверяли и отдавали далее, а во второй учили код обрабатывать переданные параметры. В целом и остальной поиск работает функционально так же. Процесс получения переменных может быть разным, но, как минимум, нужно научить выборщик данных что делать по каждому конкретному параметру. Допустим что вы хотите что бы при передаче в запросе любым способом переменной seaside cо значением 1 осуществлялся поиск по полю модели seaside и выбирались только объявки с его значением равным 1. В случае с template_search в функции getParams вы делаете отлов переменной if(0!=intval($this->getRequestValue('seaside'))){ $params['seaside'] = 1; } а в run указываете способ обработки if(isset($params['seaside']) && isset($data_model_array['seaside'])){ $where_array[]=DB_PREFIX.'_data.seaside=1'; } В случае локального grid_manager'а процедура аналогична, только перехват переменной производится в функции gatherRequestParams которую мы переопределяем в рамках шаблона в файле main.php public function gatherRequestParams(){ $params=parent::gatherRequestParams(); if(0!=intval($this->getRequestValue('seaside'))){ $params['seaside'] = 1; } return $params; } а обработку параметра укладываем в локальном менеджере списка в protected function prepareRequestParams($params, $premium=false){ $qparams=parent::prepareRequestParams($params, $premium); if(isset($params['seaside'])){ $qparams['where_array_prepared'][]='('.DB_PREFIX.'_data.seaside=1)'; } return $qarams; }
  16. Географические поля такие как country_id, region_id, city_id, district_id, street_id и близкое им metro_id поддерживают обработку в двух вариантах - единичном и множественном. Т.е. допустимо передавать в запросе city_id=N и тогда фильтрация будет по одному городу или city_id[]=N1&city_id[]=N2 - в этом случае фильтрация по двум городам. Передадим массив - будет искать по группе локаций. Это же справедливо и для всех вышеперечисленных полей. Следует быть осторожным с разнородными запросами city_id[]=N1&city_id[]=N2&region_id=R1 сделает не поиск по "в городе Н1 ИЛИ в городе Н2 ИЛИ в регионе Р1" как могло бы ожидаться, а поиск по "(в городе Н1 ИЛИ в городе Н2) И в регионе Р1", что скорее всего вернут пустой набор.
  17. 1. Кешированный файл сбрасывается в корень сайта в www или htdocs. 2. Формально любой десктопный редактор поддерживает, лишь бы системе хватило оперативки для его загрузки в редактор. А реально тут зависит от редактора. я использую для таких толстых - Notepad++ Он конечно скрипит, но открывает. Хотя поиск по таким файлам, даже если редактор его открыл, конечно уже становится проблематичным.
  18. Площадь не видят, потому что она не выгружается. Площадь не выгружается скорее всего потому, то данная категория объектов обозначена как "дом", а не как "дом с участком" в таблице ассоциаций. Попробуйте просто сменить ассоциацию. Тогда для данного объявления должен появиться тег <lot-area> с площадью участка, так как площадь его я вижу задана и задана в "знакомом" выгрузчику поле.
  19. 1. /template/frontend/шаблон/apps/system/template/mails/user_registration_conf.tpl - шаблон письма со ссылкой о подтверждении регистрации Доступно: mail_activation_link - ссылка-активатор mail_server - ссылка на сайт mail_current_language - текущий язык сайта 2-3. 4. Для пользователя не существует такого явления как сообщение через форму обратной связи. 5. В данный момент не изменяемо. Будет возможность изменения через добавление шаблона /template/frontend/шаблон/apps/mailbox/admin/template/email.tpl.html
  20. Лучше скрол. Потому что высота экрана еще более непредсказуемая штука, чем ширина. Если удлиннить, можно добиться что на некоторых девайсах низ формы уйдет вниз за край экрана, а так как само окошко фиксировано, то докрутиться до низа с кнопкой Отправить будет невозможно.
  21. Попробуйте опереться на наличие переменной {$smarty.post.predefined_info}. При срабатывании линк-менеджера туда закладывается инфо о перехваченном линке. Примерно так: {if isset($smarty.post.predefined_info)} {$smarty.post.predefined_info.params|print_r} {/if} Но в целом линк-менеджер сейчас так же закидывает параметры линка и в запрос так же. Т.е. дернув те же {$smarty.post.city_id} и {$smarty.post.topic_id} вы скорее всего получите значения параметров текущего линка.
  22. Мне то так даже проще. Но насколько я усвоил урок, лучше не привязываться к определенным полям - рано или поздно это вылазит боком. А в вашем предложении уже содержится ИЛИ. а там где допустимо хоть одно ИЛИ обязательно полезут и еще варианты)
  23. ок. но я смогу включить в систему только генерацию и вброс в шаблон og-полей. А вот их вывод и проверку наличия в шаблону уже нужно будет добавлять вручную. например в виде массива с элементами соотв. линку на файл картинки, описанию, заголовку.
  24. abushyk

    Дубли title

    Для редиректа всего с "без слеша" на "со слешем" я использую вот такое правило RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*).php$ RewriteCond %{REQUEST_URI} !(.*)(.png|.jpg|.gif|.xml|.wav|.html)$ RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*[^/])$ $1/ [L,R=301]
  25. abushyk

    Дубли title

    Настройки - Общее - Куда добавлять кличество страниц в заголовке У этой настройки есть три положения - добавлять в настраничный заголовок, в мета-заголовк и в оба. Т.е. включаете опцию добавлять страницы в заголовок и уже эти переключателем решаете куда именно. А вот изменить само слово страница не выйдет - это свосем системное слово и переназначить в шаблоне его не получится. А если локализровать сам код, то там получится просто неоправданно большой кусок кода, только ради одного слова.