SinglWolf

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

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

  • Посещение


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

  1. Like
    SinglWolf изменил репутацию abushyk в Выпадающее окно register/profile и доработка страницы регистрации   
    Я предполагаю так.
    Поскольку эта модель может быть востребованой, то имя ее должно быть универсально. Планировал user_register (и лучше придерживаться этого именования), что бы они в Редакторе форм становились рядом с user (не чужие же друг другу).
     
    Эта модель должна по сути иметь 4 must have поля - newpass, newpass_retype, login и email полностью идентичные таким же из user. Я привел системные имена. Имена меток значения не имеют, а вот системные имена имеют, так как эти данные будут проэцироваться на одноменные колонки в таблице пользователей, куда на такие же поля аналогично будет проецироваться и модель user, для редактирования профиля, например.
     
    Главное отличие модели user_register от user - первая не нуждается в реальной таблице, поэтому в ее заголовке жать кнопку Создать таблицу не нужно. Страшного ничего не будет, но и новой таблицы в БД не требуется.
     
    Внедрение.
     
    /apps/system/lib/system/user/register_using_model.php
    есть строка
     $form_data = $this->data_model; Она встречается в _defaultAction() и в _new_doneAction() почти в самом начале. Это подключение модели для формирования формы регистрации. В таком виде берется модель user, так как регистрация - это потомок пользователя. Что бы распаралелить это место, мы эту строку заменяем (в  _defaultAction() и в _new_doneAction()) на
    if(file_exists(SITEBILL_DOCUMENT_ROOT.'/apps/table/admin/admin.php') && file_exists(SITEBILL_DOCUMENT_ROOT.'/apps/columns/admin/admin.php') && file_exists(SITEBILL_DOCUMENT_ROOT.'/apps/table/admin/helper.php') ){require_once SITEBILL_DOCUMENT_ROOT.'/apps/table/admin/helper.php';$ATH=new Admin_Table_Helper();$form_data=$ATH->load_model('user_register', false);}if(!$form_data || empty($form_data)){$form_data = $this->data_model;}else{$form_data[$this->table_name] = $form_data['user_register'];} Т.е. запрашиваем редактор форм на наличии модели user_register и, если таковая есть, и в ней есть поля, то мы "рабочую" модель user подменяем нашей оптимизированной.
     И дальше код работает с нашей моделью регистрации так, как будто это родная user.
     
    Не следует забывать, что модель user_register не наследует, а подменяет модель user. И если вы добавите поля с "Хранить в таблице" в модель user_register, но не предусмотрите таких же полей в user (а именно по ней формируется таблица под пользователей в БД), то получите ошибку на запросе.
  2. Like
    SinglWolf изменил репутацию abushyk в Выпадающее окно register/profile и доработка страницы регистрации   
    Само всплывающее окно лежит в /template/frontend/realia/login_register.tpl
    а управляющие скрипты от него в /template/frontend/realia/js/interface.js
     
    Но само всплывание окна отсюда http://bootstrap-ru.com/javascript.php#modals.
    Эта библиотека подключена, так что можно пихать их по всему шаблону невозбранно.
  3. Like
    SinglWolf изменил репутацию abushyk в Выпадающее окно register/profile и доработка страницы регистрации   
    Добавляем тайтл для страницы регистрации.
    Поскольку регистрация - это функция, а не приложения, то какого-то кармана для настроек под него нет. Поэтому добавить заголовок мы может прямо в зоне точки входа.
     
    В /template/frontend/realia/main/main.php находим точку входа регистрации
    if ( !$has_result && preg_match('/^register/', $REQUESTURIPATH) ) {...//тут все что уже есть между скобок$this->template->assert('title', 'Регистрация'); //Это мы добавляем от себя в заголовок страницы$this->template->assert('meta_title', 'Мета заголовок для регистрации'); //... и для эстетов ))}
  4. Like
    SinglWolf изменил репутацию abushyk в Выпадающее окно register/profile и доработка страницы регистрации   
    Суть задачи - разместить на форме регистрации контрольный чекбокс состояние которого будет определять возможность нажатия кнопки завершения регистрации и невыбраное состояние которого не даст пройти процесс регистрации до конца. Рядом с чекбоксом разместить ссылку на какие-то доки или страницы с ознакомительной информацией.
     
    В чистом виде задача не решаема, поэтому придется немного смодернизировать код системы. Для избежания перегрузки всплывающего окна снесем всю регистрацию в полноценную страницу.
     
    Основной объект - файл /apps/system/lib/system/user/register_using_model.php
    Дополнительно нам понадобится файл /template/frontend/realia/register_user.tpl - шаблон точки входа регистрации.
     
    1. Регистрация по своей сути - это заполнение полей модели user. Поэтому основой выступаем именно эта модель.
    Добавляем на нее поле типа checkbox с системным именем iam_agree, галочкой обязательно к заполнению и снятой галочкой Хранить в таблице.
     
    2. В /apps/system/lib/system/user/register_using_model.php в функции _defaultAction() в самом конце функции находим строки
    $rs = $this->get_form($form_data[$this->table_name], 'new', 0, '', SITEBILL_MAIN_URL.'/register/');return $rs; которые заменяем на
    if(file_exists(SITEBILL_DOCUMENT_ROOT.'/template/frontend/'.$this->getConfigValue('theme').'/register_user.tpl')){global $smarty;$smarty->assign('register_form', $this->get_form($form_data[$this->table_name], 'new', 0, '', SITEBILL_MAIN_URL.'/register/'));return $smarty->fetch(SITEBILL_DOCUMENT_ROOT.'/template/frontend/'.$this->getConfigValue('theme').'/register_user.tpl');}else{return $this->get_form($form_data[$this->table_name], 'new', 0, '', SITEBILL_MAIN_URL.'/register/');} Смысл: мы ищем в папке шаблона файлик страницы регистрации и если находим, то компилим его в разметку и выдаем на гора. Если нет, то ведем себя как и раньше, выдавая просто форму.
     
    3. Подобные манипуляции проделаем и с функцией _new_doneAction(), где вместо строки
    return $rs; ставим
    if(file_exists(SITEBILL_DOCUMENT_ROOT.'/template/frontend/'.$this->getConfigValue('theme').'/register_user.tpl')){global $smarty;$smarty->assign('register_form', $rs);return $smarty->fetch(SITEBILL_DOCUMENT_ROOT.'/template/frontend/'.$this->getConfigValue('theme').'/register_user.tpl');}else{return $rs;} Смысл аналогичный.
     
    4. Переходим к шаблону страницы регистрации  /template/frontend/realia/register_user.tpl примерный код которого тут http://pastebin.com/jchtk1W8.
      Это привычный файл шаблона в котором обязательным является только строка 4:  {$register_form} все остальное призвано либо украсить, либо выполнить нашу миссию.   Поскольку мы не можем вставить в форму ничего лишнего в обход модели, то мы воспользуемся скриптом, что бы прикрепить ссылку на Правила\Оферту к нашему чекбоксу. Саму ссылку мы размечаем вне формы в строке 7, и по ее id скриптом переносим ее на форму.   Так же в скрипте мы проверяем состояние добавленого чекбокса и гасим-активируем кнопку отправки формы в зависимости от его состояния. Там же в скрипте мы блокируем отправку формы при невыбраной галочке.   Естественно, после отправки на сервер, галочка опять будет проверена, что бы нас не обманули (за это отвечает галочка Обязательное поле в настройках элемента модели, то не имеет смысла в обычных условиях, но то, что надо в данном случае.).   Мы получим что-то вроде
  5. Like
    SinglWolf получил репутацию от Дмитрий Кондин в Не все так хорошо в красноярском королевстве   
    Выкрал забугорный шпиён чертежи нашего новейшего истребителя. Потирая руки от радости, империалисты наняли лучших инженеров и решили собрать самолёт по чертежам. Не тут-то было. Как ни старались спецы-буржуины, но вместо чуда военной техники у них получался комбайн "ДОН-1500". Пришлось напрячься и украсть разработчика.
    Спрашивают: "Что мы делаем не так?"
    В ответ: "В левом нижнем углу чертежа видели надпись мелким шрифтом?"
    Нет, мол, не заметили.
    А там написано: "ПОСЛЕ СБОРКИ - ОСТАЛЬНОЕ ДОРАБАТЫВАТЬ НАПИЛЬНИКОМ".
  6. Like
    SinglWolf изменил репутацию abushyk в Шаблон realia - пожалуйста, помогите с меню категорий [Решено]   
    Либо просто в списке меню навести мышку на кнопку Редактировать с карандашиком и, в подсвеченной ссылке, посмотреть значение переменной menu_id
  7. Like
    SinglWolf изменил репутацию abushyk в Шаблон realia - пожалуйста, помогите с меню категорий [Решено]   
    Вы сначала создалли меню на один пункт, потом подключили его в это меню, а потом добавили остальные три пункта? Верно?
    Если да, то это кеширование в действии. Откройте в другом браузере или закройте этот и откройте снова, что бы сбросилась текущая сессия.
     
    Либо, на время тестирования-отладки можете добавить в 
     
    private function getTemplateMenu($menues=array(){
     
    первой же строкой 
     
    unset($_SESSION['_site_cache']['nave_menu']);
     
    Это будет обнулять кеш при каждом F5, зато не будет пугать отсутствием пунктов
  8. Like
    SinglWolf изменил репутацию abushyk в Шаблон realia - пожалуйста, помогите с меню категорий [Решено]   
    Итак, если у нас осталось место в навигаторе где изначально выводятся разделы структуры, у нас может возникнуть желание добавить туда что-то от себя.
     
    Для формирования этого блока служит функция шаблона реалия getTemplateMenu, которая пользуется услугами декоратора меню. Логи этого декоратора довольно сложна, именно поэтому мы не стали выдавать его в виде шаблона, а свели до $navmenu.
     
    Суть задачи - позволить нехитрым набором опций сообщать декоратору меню, что у куда вставить нам в нашу менюху. Я предусмотрел вставку двух типов:
    1) вставка простой ссылки
    2) вставка блока с выпадающими подпунктами, которые формируются на базе одного из меню из раздела Контент - Меню.
     
    А) Для начала улучшим функцию getTemplateMenu.
     
    Находим ее в /template/frontend/realia/main/main.php и заменяем на http://pastebin.com/NpibVwer
     
    Главное отличие, что она теперь умеет понимать переданные нами параметры и пытается кешировать в сессию некоторые данные. Т.е. если вы укажете ей строить дополнительный пункт на базе какой-то менюшки, то она не будет на всех переходах требовать его от бд, а возьмет один раз и запомнит на всю вашу сессию.
     
    Б) Параметры функции.
    Что бы указать чем и где дополнить нам меню нужно указать функции параметры. Параметры указываются в виде массива
    $menues=array( array( 'id'=>25, /*ID меню из Контент - Меню. Если указать ID не существующего в данный момент Меню, то получится просто пункт с меню, без выпадающего блока, тогда данный пункт даже не буде. Если нужно навставлять ссылок, то просто ставьте там 10000 и дальше*/ 'title'=>'О нас', /*Выводимая надпись на пункте*/ 'position'=>'behind',/*Расположение относительно пунктов Структуры. Если не указано или не behind, то after - в конце*/ 'href'=>'/somelink/'/*Ccылка на корневом пункте. Если не указать, то будет якорь (#), те неактивная ссылка чисто для группировки*/ ), array('id'=>23,'title'=>'О вас','position'=>'after','href'=>'http://dadada.ru')); Например, нам нужно поставить в верхнее меню следующее:
    - в самом начале ссылку на главную
    - после нее ссылку на отзывы /review
    - в конце подключить выпадающий список из Меню - Полезная информация с ид в БД 215.
     
    Сотв. наша конфигурация буде иметь вид
    $menues=array(array('id'=>0, /*0-хитрое значение. Оно может быть только в одном пунке и на него автоматом ставится ссылка на корень сайта*/ 'title'=>'Главная','position'=>'behind'),array('id'=>1000, /*поставили 1000 так как такого пункта у нас в меню нет*/ 'title'=>'Отзывы','position'=>'behind','href'=>'review'),array('id'=>215, /*а такое меню есть и мы его запросили*/ 'title'=>'Полезно','position'=>'after')); В) Как это все включить.
     
    В файле /template/frontend/realia/main/main.php находим вызов
     
    $this->template->assert('navmenu', $this->getTemplateMenu());
     
    И меняем его на
    $menues=array(array('id'=>0,'title'=>'Главная','position'=>'behind'), array('id'=>1000,'title'=>'Отзывы','position'=>'behind','href'=>'review'), array('id'=>215,'title'=>'Полезно','position'=>'after')); /*наш набор пунктов*/ $this->template->assert('navmenu', $this->getTemplateMenu($menues)); /*тут мы его передали в декоратор*/ В результате получаем

  9. Like
    SinglWolf изменил репутацию abushyk в Шаблон realia - пожалуйста, помогите с меню категорий [Решено]   
    Я уже делаю. На протяжении часа-двух напишу.
  10. Like
    SinglWolf изменил репутацию Nomad в Не все так хорошо в красноярском королевстве   
    ОК, если Вас коробит слово "развели", заменим его на словосочетание: "продукт не соответствует рекламе", так пойдет? И потом, "риелторы работают с системой" и "риелторы создали сайт" это немного разные вещи, Вы не находите? Ни за что не поверю, что обычный риелтор без привлечения программиста создаст сайт, как Вы это рекламируете. Специально спросил и не только у себя в агентстве .
    А касаемо:
     
     
    Вы забываете упомянуть о многомиллионных исках в правовых государствах к этим производителям по поводу несоответствующей рекламы.
     
    Еще раз пытаюсь донести, создать сайт на Вашем скрипте может или программист или человек разбирающийся в веб программировании, но никак не простой риелтор. Пользоваться уже готовым сайтом, да! И то не все
     
     
     
    Стоп. Где я написал, что у меня возникли трудности с установкой и работой? С этим все в порядке. Не в порядке то, что элементарные функции, то же отключение какого то блока требует удаления или переписывания кода! Это сможет делать простой риелтор?
     
    Не будем брать для сравнения бесплатные программы. Тот же WebSite X5, цена 1500, С коробки я получил работающий конструктор, который не требовал от меня знания кода и все функции решались штатными средствами программы. То есть, я включал или выключал нужные мне функции просто ставя галочку. Цена сопоставима?
     
    Та же бесплатная instantcms. Из коробки бесплатно я получил 19 компонентов, 44 модуля и 5 плагинов. Все настраивается "галочками"
     
    Вот это и называется полноценные cms. Я ни в коем случае не "хаю" ваш движок, но "бравировать" тем, "а что Вы хотели за такие деньги, 1900 руб." не стоит.
     
    Еще раз, чтобы донести мою мысль: идея хорошая, направление верное, но цена не адекватная. Если у Вас не хватает средств на доведения до ума cms, то, на мой взгляд, надо идти не по пути продажи по "не дорогой" цене "сырого" продукта, а искать энтузиастов, создавать сообщества, а "вылизав" программу уже потом продавать.
     
    Поэтому не рекламируйте cms таким образом:
     
    "Создайте сайт за 5 минут без программистов, дизайнеров и лишней головной боли."
     
    и тогда будет гармония
  11. Like
    SinglWolf изменил репутацию abushyk в Шаблон realty - включил autocomplete для улиц...   
    /template/frontend/realty/css/template.css
    в конец
    .search_cont .geoautocomplete_block { width:135px;}.search_cont .geoautocomplete_block input.geoautocomplete {  width: 100%;}  а) 135 а не 150 потому, что на вложенном элементе еще есть отступы.
    б) уточняющий .search_cont потому, что стили для формы стоит ограничить формой.
  12. Like
    SinglWolf изменил репутацию abushyk в Шаблон realty - счётчик просмотров (use_realty_view_counter=1) не работает   
    Понял. Я думал информеры - это всякие курсы, погоды.
     
    Это все можно спокойно упихать в /template/frontend/realty/main.tpl в блок к копирайту  id="zt-footer". Они там никому не будут мозолить глаза.
  13. Like
    SinglWolf изменил репутацию abushyk в Шаблон realty - закрыл сайт (is_underconstruction=1) и я в шоке   
    http://my.digitalwerkstatt.ru/files/realty_under_constr.zip
     
    По ссылке два файла. main.tpl от шаблона и страница закрытия main_closed.tpl .
    Если вы не меняли еще свой /template/frontend/realty/main.tpl , то можете заменить его файлом из папки, а  main_closed.tpl из архива положить в /template/frontend/realty/