1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Уважаемый Гость! Если вы зарегистрировались на нашем форуме, значит вам нужна помощь! Мы всегда рады вам помочь, еще ни один пользователь не получил отказа! Но мы так же нуждаемся в Вашей поддержке. Проект полностью бесплатный, мы не имеем права требовать от вас денег, нам это и не нужно! Но от любой финансовой поддержки не откажемся. Проект развивается, но иногда очень тяжело его поддерживать, особенно в финансовом отношении. Если у вас есть возможность поддержать нас финансово, мы будем вам очень благодарны! С уважением, команда Оскласс Россия!
    Скрыть объявление
  3. Изменение в правилах форума! В связи с огромным количеством вопросов поступающих в адрес технической поддержки мы решили изменить правила форума! Просим всех пользователей обратить внимание на данные изменения и четко их соблюдать!
    Скрыть объявление
  4. Ребята, нуждаемся в программистах! Если хотите зарабатывать и есть время, пишите администраторам сайта. Есть база и инструменты, нужен опыт и знания =)
    Скрыть объявление
  5. Уважаемые пользователи! На форуме появились разделы по работе с системой Yclas. Yclas - это скрипт доски объявлений. Нужны разработчики.
    Скрыть объявление

Как сделать выпадающий список регионов и городов?

Тема в разделе "Общие вопросы по Osclass, Yclas", создана пользователем denis, 2 мар 2013.

  1. Dis

    Dis Известный пользователь

    Так дизайн полей поехал и ошибки js сыпятся. Чтоб нормально было,надо поменять оба файла.
     
  2. Вячеслав 1383382

    Вячеслав 1383382 Новичок

    менял оба файла...не работает
     
  3. Bastard

    Bastard Новичок

    Что бы не плодить темы, спрошу здесь, поскольку тема смежная:
    Ситуация следующая:

    [​IMG]
    Как в выпадающем списке городов сделать только города выбранной области? Фишка в том (видно на картинке в адресной строке браузера) что параметр область (region) определяется автоматом, но не по RegionId а по названию. Следовательно код
    Код:
      $('#regionId').change(function updateCityList() {
    						var actualRegionId  = $(this).val();
    
    						if ( Math.floor(actualRegionId) == actualRegionId && $.isNumeric(actualRegionId)) {
    							/*Get cities per region*/
    							$.ajax({
    								url: "<?php echo osc_base_url(true); ?>?page=ajax&action=cities",
    								data: { regionId: actualRegionId },
    								success: function( cities, err){
    									var $el = $("#sCity"),
    										citiesOptions = {};
    								  
    									$('#sCity option:gt(0)').remove();
    									$el.val("");
    									$el.prev("span").text("Any City");
    									$.each(cities, function(key, value) {
    									  $el.append($("<option></option>")
    										.attr("value", value.s_name).text(value.s_name));
    									});
    									$("#sRegion").attr("value", $("#regionId option[value='"+actualRegionId+"']").text());
    								},
    								dataType: "json"
    							});
    						}
    					});
    автозаполнение не срабатывает (поскольку используется название региона - getParam('sRegion') - а не RegionID)

    Можно как то сделать автозаполнение City, основываясь не на RegionID ?
     
  4. Кирилл

    Кирилл Новичок

    Сайт kypito.ru
    Перепробывал уже все варианты, не получается.
    Помогите!!!
     

    Вложения:

    • kypito.zip
      Размер файла:
      529,5 КБ
      Просмотров:
      14
  5. kiril901

    kiril901 Новичок

    Здравтсвуйте! Мне на доске объявлений надо сделать регион и город не не текстовыми полями а выпадающим списком, я сделал

    <?php ItemForm::location_javascript_new(); ?>
    на
    <?php ItemForm::location_javascript(); ?>
    в item-edit.php
    <?php ItemForm::region_text() ; ?>
    ...
    <?php ItemForm::city_text() ; ?>
    на
    <?php ItemForm::region_select() ; ?>
    ...
    <?php ItemForm::city_select() ; ?>
    в item-post.php
    <?php ItemForm::region_text(osc_user()) ; ?>
    ...
    <?php ItemForm::city_text(osc_user()) ; ?>
    на
    <?php ItemForm::region_select(osc_get_regions(osc_user_country()), osc_user()) ; ?>
    ...
    <?php ItemForm::city_select(osc_get_cities(osc_user_region()), osc_user()) ; ?>

    и написано надо вызов JS сделать в трех файлах, я сделал только в двух, третий не нашел. Что я сделал не правильно? Подскажите пожалуйста.
     
  6. kotelok

    kotelok Новичок

    Попробовал залить два Ваших файла — выбор городов начинает работать правильно, но перестаёт работать карта на главной странице (шаблон Russia). Как быть?
     
  7. Saska19

    Saska19 Пользователь


    Здравствуйте,
    если Вы решили эту задачу, то опишите подробнее, как сделать в поиске выпадающий список регионов и городов. Думаю всем будет интересно!
     
  8. Andy Larkin

    Andy Larkin Активный пользователь

    В item-post.php прописал в выборе города <?php ItemForm::city_select(osc_get_cities(osc_user_region()), osc_user()) ; ?>
    но на сайте выводятся только 4 города, в чем проблема?
     
  9. drakon

    drakon Активный пользователь

    Я думаю вам надо сменить чпу на латиницу и проблема уйдет. на форуме где то есть как поменять. % уйдут будет нормально искать
     
  10. i7p

    i7p Новичок

    Друзья, хэлп плиз..
    Сделал все по инструкции http://doc.osclass.org/Changing_between_drop-down_and_autocomplete_for_locations
    поменял в трех местах на <?php ItemForm::location_javascript(); ?>
    обновил item-edit.php и item-post.php

    Теперь есть выпадающие пункты на выбор, но по-прежнему только 4 города из первого региона..
    1.jpg
     
  11. i7p

    i7p Новичок

    И, чтобы 2 раза не вставать, второй вопрос:

    Как сделать на главной странице поиск с выпадающим меню как при подаче объявления?
    Т.е. вот такое же выпадающее меню (как при подаче объявления) хочу видеть на главной при поиске по параметрам.
    2.jpg
     
    Последнее редактирование: 25 апр 2014
  12. drakon

    drakon Активный пользователь

    по 1 вопросу
    2 файла по образцу.txt , можете сделать с модерна все работает, только поменяйте расширение на php.
    по 2 вопросу вставить нужно там где хотите в форме поиска выбор категорий вод код.
    только стилями нужно будет подкорректировать
    PHP:
    <input type="text" name="sPattern"  id="query" value="<?php echo osc_esc_html( ( osc_search_pattern() != '' ) ? osc_search_pattern() : $sQuery ); ?>" />
            <?php  if ( osc_count_categories() ) { ?>
                <?php osc_categories_select('sCategory'null__('Select a category''modern')) ; ?><?php }?>
    Форма поиска на главной странице в файле inc.search.php
    Найдите там строки типа <fieldset class="main"> или просто <fieldset> и вставьте данную форму выбора категорий. Так вслепую сложно сказать, что там у Вас.
     

    Вложения:

    • item-post.txt
      Размер файла:
      10,2 КБ
      Просмотров:
      26
    • item-edit.txt
      Размер файла:
      9,6 КБ
      Просмотров:
      25
    feint и Andy Larkin нравится это.
  13. Andy Larkin

    Andy Larkin Активный пользователь

    Все равно в списке городов выводится 4 первые города из базы..
     
  14. drakon

    drakon Активный пользователь

    дайте хоть ссылку где посмотреть
     
  15. Andy Larkin

    Andy Larkin Активный пользователь

    http://hvostyk.ru/
    Bender theme, последняя версия os class
    [​IMG]
     

    Вложения:

    • item-post.txt
      Размер файла:
      6,7 КБ
      Просмотров:
      5
    • frm.txt
      Размер файла:
      13,1 КБ
      Просмотров:
      5
  16. i7p

    i7p Новичок

    Drakon, спасибо за ответ. Но в теме realestate по-прежнему не работает... Если вставляю ваш код полностью, то вообще дважды предлагает выбрать город и область.

    Сейчас так:
    <div id="publish-right" class="publish-right">
    <h2><?php _e('Местонахождение', 'realestate'); ?></h2>
    <div class="content add_item">
    <div class="ui-generic-form ">
    <div class="ui-generic-form-content">
    <div class="row">
    <label for="countryId"><?php _e('Country', 'realestate'); ?></label>
    <?php ItemForm::country_select(osc_get_countries(), osc_user()) ; ?>
    </div>
    <div class="row ui-row-text">
    <label for="regionId"><?php _e('Region', 'realestate'); ?></label>
    <?php ItemForm::region_select(osc_get_regions(osc_user_country()), osc_user()) ; ?>
    </div>
    <div class="row ui-row-text">
    <div class="row ui-row-text">
    <label for="city"><?php _e('City', 'realestate'); ?></label>
    <?php ItemForm::city_select(osc_get_cities(osc_user_region()), osc_user()) ; ?>
    </div>
    <div class="row ui-row-text">
    <label for="city"><?php _e('City Area', 'realestate'); ?></label>
    <?php ItemForm::city_area_text(osc_user()) ; ?>
    </div>
    <div class="row ui-row-text">
    <label for="address"><?php _e('Address', 'realestate'); ?></label>
    <?php ItemForm::address_text(osc_user()) ; ?>
    </div>


    При этом все устраивает, кроме четырех городов.
     
  17. drakon

    drakon Активный пользователь

    В теме realestate работает после таких манипуляций:
    Находите код в item-post.php :
    PHP:
    <div class="row">
    <label for="countryId"><?php _e('Country''realestate'); ?></label>
    <?php ItemForm::country_select(osc_get_countries(), osc_user()) ; ?>
    </div>
    <div class="row ui-row-text">
    <label for="regionId"><?php _e('Region''realestate'); ?></label>
    <?php ItemForm::region_select(osc_get_regions(osc_user_country()), osc_user()) ; ?>
    </div>
    <div class="row ui-row-text">
    <div class="row ui-row-text">
    <label for="city"><?php _e('City''realestate'); ?></label>
    <?php ItemForm::city_select(osc_get_cities(osc_user_region()), osc_user()) ; ?>
    </div>
    И вставляете вместо этого - вот этот должно все работать покрайней мере у меня на денвере работает прекрасно.:
    PHP:
    <?php UserForm::location_javascript(); ?>
                    <form action="<?php echo osc_base_url(true) ; ?>" method="post">
                        <input type="hidden" name="page" value="user" />
                        <input type="hidden" name="action" value="profile_post" />
    <fieldset>
                                <label for="country"><?php _e('Country''realestate') ; ?> *</label>
                                <?php UserForm::country_select(osc_get_countries(), osc_user()) ; ?>
                            </div>
                            <div class="row ui-row-text">
                                <label for="region"><?php _e('Region''realestate') ; ?> *</label>
                                <?php UserForm::region_select(osc_get_regions(), osc_user()) ; ?>
                            </div>
                            <div class="row ui-row-text">
                                <label for="city"><?php _e('City''realestate') ; ?> *</label>
                                <?php UserForm::city_select(osc_get_cities(), osc_user()) ; ?>
                            </div> </fieldset>
    Вот этот вывод скрипт выше у вас там <?php UserForm::location_javascript(); ?> удаляете так как во вставленном коде он присутствует. Попробуйте отпишитесь.
     
    feint нравится это.
  18. i7p

    i7p Новичок

    Уважаемый Drakon, огромное спасибо, Вы меня спасли! ) Все заработало. Но немного пришлось подкорректировать Ваш код. Т.к. ругался из-за </fieldset> и растягивал меню на всю ширину экрана. В итоге работает так:
    Код:
    <h2><?php _e('Местонахождение', 'realestate'); ?></h2>
    <div class="content add_item">
    	<div class="ui-generic-form ">
    		<div class="ui-generic-form-content">		   
    			<div class="row">
    				<?php UserForm::location_javascript(); ?>
    				<form action="<?php echo osc_base_url(true) ; ?>" method="post">
    					<input type="hidden" name="page" value="user" />
    					<input type="hidden" name="action" value="profile_post" />
    <fieldset>
    				<label for="countryId"><?php _e('Country', 'realestate'); ?></label>
    				<?php ItemForm::country_select(osc_get_countries(), osc_user()) ; ?>
    			</div>
    			<div class="row ui-row-text">
    				<label for="regionId"><?php _e('Region', 'realestate'); ?></label>
    			   <?php ItemForm::region_select(osc_get_regions(osc_user_country()), osc_user()) ; ?>
    			</div>
    			<div class="row ui-row-text">
    		 <div class="row ui-row-text">
    				<label for="city"><?php _e('City', 'realestate'); ?></label>
    				<?php ItemForm::city_select(osc_get_cities(osc_user_region()), osc_user()) ; ?>
    			</div>
    			<div class="row ui-row-text">
    				<label for="city"><?php _e('City Area', 'realestate'); ?></label>
    				<?php ItemForm::city_area_text(osc_user()) ; ?>
    			</div>
    			<div class="row ui-row-text">
    				<label for="address"><?php _e('Address', 'realestate'); ?></label>
    				<?php ItemForm::address_text(osc_user()) ; ?>
    			</div>
    Теперь просто прекрасно! Я Вам очень благодарен!
    По второму вопросу (о размещении поиска по категориям на главной) еще не пробовал, руки не дошли.
     
  19. drakon

    drakon Активный пользователь

    В бендер теме другие манипуляции нужно сделать, в item.post:
    найти код:
    PHP:
     <div class="control-group">
                                  <label class="control-label" for="country"><?php _e('Country''bender'); ?></label>
                                  <div class="controls">
                                    <?php ItemForm::country_select(osc_get_countries(), osc_user()); ?>
                                  </div>
                                </div>
    вместо него вставить этот:
    PHP:
                                <?php
                                $rCountries 
    osc_get_countries() ;
                                switch( 
    count($rCountries) ) {
                                  case 
    0:    ?>
     
     
     
     
                                      <div class="control-group">
                                        <label class="control-label" for="country"><?php _e('Country''bender'); ?></label>
                                        <div class="controls">
                                          <input class="country_name" id="country_name" type="text" name="country" value="<?php echo get_country_name($item) ; ?>" />
                                        </div>
                                      </div>
         
                                  <?php
                                  
    break;
                                  case 
    1:   ?>
     
                                   <input class="country_id" id="country_id" type="hidden" name="countryId" value="<?php echo $rCountries[0]['pk_c_code'] ; ?>" />
                                   
                                  <?php
                                  
    break;
                                  default: 
                                    if(
    $edit) { ?>
                                      <div class="control-group">
                                        <label class="control-label" for="country"><?php _e('Country''bender'); ?></label>
                                        <div class="controls">
                                          <?php ItemForm::country_select(); ?>
                                        </div>
                                      </div>
                                    <?php 
                                    
    } else { ?>
                                      <div class="control-group">
                                        <label class="control-label" for="country"><?php _e('Country''bender'); ?></label>
                                        <div class="controls">
                                          <?php ItemForm::country_select(osc_get_countries(), osc_user()); ?>
                                        </div>
                                      </div>
                                    <?php
                                    
    }
                                  break;
                                  } 
    ?>
    Далее найти этот вывод региона:
    PHP:
    <?php ItemForm::region_text(osc_user()); ?>
    и вставить вместо этого этот:
    PHP:
    <?php
                                    
    if($edit){
                                      
    ItemForm::region_select() ;
                                    } else { 
                                      
    ItemForm::region_select(osc_get_regions(), osc_user()) ;
                                    } 
    ?>
    Далее найти этот вывод города:
    PHP:
    <?php ItemForm::city_text(osc_user()); ?>
    и вставить вместо этого этот:
    PHP:
                                    <?php if($edit){
                                       
    ItemForm::city_select() ;
                                    } else { 
                                       
    ItemForm::city_select(osc_get_cities(), osc_user()) ;
                                    } 
    ?>
    Далее нужно подключить скрипт выбора внизу найти кусок кода:
    PHP:
        <?php }; ?>
    </script>
    <?php osc_current_web_theme_path('footer.php'); ?>
    и вставить вместо этого этот:
    PHP:
           $('#countryId').change(function() {
            $('#labelregionId').text('<?php _e("Select a region..."); ?>');
            $("#region").before('<select name="cityId" id="cityId" ></select>');
            $("#region").remove();
            $("#regionId").html('<option selected value=""><?php _e("Select a region..."); ?></option>')
            $('#labelcityId').text('<?php _e("Select a city..."); ?>');
            $("#city").before('<select name="cityId" id="cityId" ></select>');
            $("#city").remove();
            $("#cityId").html('<option selected value=""><?php _e("Select a city..."); ?></option>')
    });
     
     
     
     
    $('#regionId').change(function() {
            $('#labelcityId').text('<?php _e("Select a city..."); ?>');
            $("#city").before('<select name="cityId" id="cityId" ></select>');
            $("#city").remove();
            $("#cityId").html('<option selected value=""><?php _e("Select a city..."); ?></option>')
    });
        <?php }; ?>
    </script>
    <?php osc_current_web_theme_path('footer.php'); ?>
    Далее нужно подкорректировать этот файл скрипта oc-content/themes/bender/js/global.js
    Найти код:
    PHP:
    function selectUi(thatSelect){
    и вставить вместо него этот:
    PHP:
    function selectUi(thatSelect,thatid){
    Далее в этом же файле найти код:
    PHP:
        var uiSelected = $('<span class="select-box-label">'+thatSelect.find("option:selected").text().replace(/^\s*/gm'')+'</span>');
    и вставить вместо него этот:
    PHP:
        var uiSelected = $('<span class="select-box-label" id="label'+thatid+'">'+thatSelect.find("option:selected").text().replace(/^\s*/gm'')+'</span>');

    Далее в этом же файле найти код:
    PHP:
        $('body').on("created"'[name^="select_"]',function(evt) {
            
    selectUi($(this));
        });
     
     
     
     
        $(
    'select').each(function(){
            
    selectUi($(this));
        });
    и вставить вместо него этот:
    PHP:
        $('body').on("created"'[name^="select_"]',function(evt) {
            
    selectUi($(this),this.id);
        });
     
     
     
     
        $(
    'select').each(function(){
            
    selectUi($(this),this.id);
        });
    На этом все. Все работает на ура если все правильно подкорректировать как написано выше. Для выбора нескольких стран нужно корректировать ядро скрипта. Если кому надо будет напишу.
    Да еще забыл это надо сделать самым первым по ходу, выше найти код js:
    PHP:
    <?php ItemForm::location_javascript_new(); ?>
    поменять на этот:
    PHP:
    <?php ItemForm::location_javascript(); ?>
     
    iaropolc, Rever, Andy Larkin и ещё 1-му нравится это.
  20. kotelok

    kotelok Новичок

    Наконец-то хоть кто-то начал отвечать на наши вопросы! Drakon, спасибо Вам огромное!
    Подскажите, а в теме Russia каким из этих двух способов починить выбор городов?
     
Загрузка...

Поделиться этой страницей