Установка компонента геолокация и частичное использование его возможностей.

#1 10 апреля 2015 в 13:45
Уважаемые помогите, решить ребус, необходимо чтобы в объявлениях на движке InstantCMS v1.10.2 был выбор города как в обновлённых версиях (InstantCMS v1.10.4 +)

На сколько я понимаю необходимо установить компонент геолокация,

Вообщем я не буду гадать, если есть знатоки подскажите где копать?

Хочется чтобы было так.

Иллюстрация

Советовать обновиться полность не нужно, стоит много компонентов которые нежно будет допиливать, а возможности нет.
#2 10 апреля 2015 в 14:35
Откройте файл frontend.php компонента "Объявления", найдите часть где формируется страница добавления объявления
  1. if ($do=='additem'){
и сравните с более поздней версией. Найдите недостающие ф-ции и подключите всё, что надо.
#3 10 апреля 2015 в 14:40
Если позволите, я буду тут писать что делаю поэтапно, а вы патом посмотрите может я что то забуду. или сделаю не так оке?
#4 10 апреля 2015 в 14:46

Если позволите, я буду тут писать что делаю поэтапно

Taurus
У нас свободное сообщесиво laugh

а вы патом посмотрите может я что то забуду. или сделаю не так оке?

Taurus
О'K
#5 10 апреля 2015 в 14:58
Пермым делом взял, из мизраций, базу компонента геолокация. запихнул к себе в базу, дальше прописал компонент geo в таблице компонентов, далее скапировал все необходимые файлы, а именно

/components/geo
/admin//components/geo
/templates/_default_/components/вьюшка

Ну и ещё картинки чтоб в админке нормально отображалось.
#6 10 апреля 2015 в 15:08
Во фронтенде отличия очень большие я такпонял что работа с шаблонами полностью поменялась

Так в v1.10.2
  1.  
  2. $item['city'] = $item['city'] ? $item['city'] : $inDB->get_field('cms_user_profiles', 'id='.$inUser->id, 'city');
  3.  
  4. $smarty = $inCore->initSmarty('components', 'com_board_edit.tpl');
  5. $smarty->assign('action', "/board/add.html");
  6. $smarty->assign('form_do', 'add');
  7. $smarty->assign('cfg', $model->config);
  8. $smarty->assign('cat', $cat);
  9. $smarty->assign('item', $item);
  10. $smarty->assign('pagetitle', $_LANG['ADD_ADV']);
  11. $smarty->assign('cities', $model->getBoardCities($item['city']));
  12. $smarty->assign('formsdata', $formsdata);
  13. $smarty->assign('is_admin', $inUser->is_admin);
  14. $smarty->assign('is_user', $inUser->id);
  15. $smarty->assign('catslist', $catslist);
  16. $smarty->assign('is_billing', IS_BILLING);
  17. if (IS_BILLING){ $smarty->assign('balance', $inUser->balance); }
  18. $smarty->display('com_board_edit.tpl');
  19.  
Так в v1.10.3

  1.  
  2. $item['city'] = !empty($item['city']) ? $item['city'] : $inUser->city;
  3.  
  4. cmsPage::initTemplate('components', 'com_board_edit')->
  5. assign('action', "/board/add.html")->
  6. assign('form_do', 'add')->
  7. assign('cfg', $model->config)->
  8. assign('cat', $cat)->
  9. assign('item', $item)->
  10. assign('pagetitle', $_LANG['ADD_ADV'])->
  11. assign('formsdata', $formsdata)->
  12. assign('is_admin', $inUser->is_admin)->
  13. assign('is_user', $inUser->id)->
  14. assign('catslist', $catslist)->
  15. assign('is_billing', IS_BILLING)->assign('balance', $inUser->balance)->
  16. display('com_board_edit.tpl');
  17.  
Не подскажите как тут доработать?
#7 10 апреля 2015 в 15:09
Про языковой файл забыли и гляньте в классах core/classes/geo.class.php есть
#8 10 апреля 2015 в 15:13

Во фронтенде отличия очень большие я такпонял что работа с шаблонами полностью поменялась

Taurus
На это пока не смотрите, старый вариант Smarty пока работает вроде. ($inUser->city;)--Ищите в user.class.php ф-цию city
#9 10 апреля 2015 в 15:23
Я так понял искать в v1.10.3, но такой функции в том файле нет.
#10 10 апреля 2015 в 15:28
Я вот это только нашёл

  1.  
  2. /**
  3.   * Загружает в свойства данные местоположения пользователя
  4.   */
  5. public function loadUserGeo() {
  6.  
  7. if($this->geo_is_loaded) { return true; }
  8.  
  9. $inCore = cmsCore::getInstance();
  10.  
  11. $geo_cfg = $inCore->loadComponentConfig('geo');
  12.  
  13. if($geo_cfg['component_enabled'] &&
  14. $geo_cfg['autodetect'] &&
  15. cmsCore::loadClass($geo_cfg['class']) &&
  16. class_exists('cms'.$geo_cfg['class'])){
  17.  
  18. $geo_data = call_user_func(array('cms'.$geo_cfg['class'], 'getInfo'), $this->ip);
  19. if($geo_data){
  20.  
  21. foreach($geo_data as $k=>$v){
  22. $this->geo[$k] = $v;
  23. }
  24. // если пользователь город не указал или это гость
  25. if(!$this->city){
  26. $this->city = $this->geo['city'];
  27. }
  28.  
  29. $this->geo_is_loaded = true;
  30.  
  31. return true;
  32.  
  33. }
  34. }
  35.  
  36. return false;
  37.  
  38. }
  39.  
#11 10 апреля 2015 в 15:37

Я так понял искать в v1.10.3, но такой функции в том файле нет.

Taurus
Нет нужно взять класс с 1.10.6 и вставить к себе.
#12 10 апреля 2015 в 15:44
Весь класс? хм оке.
#13 10 апреля 2015 в 15:51
Ну врое всё работает, но это на сколько я понял мы сделали только, то чтобы город в поле выбирался автоматом в зависимости от локации. Теперь нужно город во всплывающем окне, сделать выбор.

Во вьюшке было простое поле

  1. <input name="city_ed" class="text-input" type="text" id="city_ed" style="width:184px" value="{$item.city|escape:'html'}"/> {$LANG.OR_SELECTING} {$cities}
изменил на то что во вью в новых версиях

  1. {city_input value=$item.city name="city" width="403px"}
Вижу ошибку
  1. Fatal error: Smarty error: [in com_board_edit.tpl line 35]: syntax error: unrecognized tag 'city_input' (Smarty_Compiler.class.php, line 590) in C:\Server\OpenServer\domains\inst02.ru\includes\smarty\libs\Smarty.class.php on line 1094
#14 10 апреля 2015 в 15:53
Я имею ввиду geo.class.php
#15 10 апреля 2015 в 15:55
Гео класс в ядро я перенёс уже, как вы сказали, и кстит в смарти добавил плагин function.city_input
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.