Перейти к содержанию

Рекомендуемые сообщения

Здравствуйте! Есть сайт на базе So Market Шаблона и там используется модуль поиска So Search. Помимо этого есть модуль блога SEO CMS у которого свой отдельный виджет поиска. Нужно слепить оба поиска в один.

Ну тут явно потребуются хорошие знания js

Сайт fereks-nw

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хорошо знаю js, но плохо себе представляю, что должно получиться... Вы бы описали подробней, особенности каждого поиска и что должно полуться в итоге. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ничего не понял) но причем тут js если поиск происходит на сервере по-идее? Вы хотите чтобы результаты из обоих поисков выводились вместе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто мне подскажет, причём тут js ?)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну потому что этот модуль So search надо будет дорабатывать, а там js много используется, чтобы вот такое сделать http://prntscr.com/f44az8

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы бы все таки описали по пунктам, можно со схемой, что должно прлучиться. Не удивлюсь, если нужен один поиск с дизайном второго...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поймите, js, это сторона пользователя, к серверу не имеет ни какого отношения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
<div id="sosearchpro" class="sosearchpro-wrapper <?php echo $additional_class; ?> compact-hidden">
	<?php if($disp_title_module) { ?>
		<h3><?php echo $head_name; ?></h3>
	<?php } ?>
	<form method="GET" action="index.php">
	<div id="search<?php echo $module ?>" class="search input-group">
	    <?php if(!empty($categories)) { ?>
		<div class="select_category filter_type  icon-select">
			<select class="no-border" name="category_id">
				<option value="0"><?php echo $text_category_all ; ?></option>
				<?php foreach ($categories as $category) { ?>
		        <?php if ($category['category_id'] == $category_id) { ?>
		        <option value="<?php echo $category['category_id']; ?>" selected="selected"><?php echo $category['name']; ?></option>
		        <?php } else { ?>
		        <option value="<?php echo $category['category_id']; ?>"><?php echo $category['name']; ?></option>
		        <?php } ?>
					<?php foreach ($category['children'] as $category_lv2) { ?>
					<?php if ($category_lv2['category_id'] == $category_id) { ?>
					<option value="<?php echo $category_lv2['category_id']; ?>" selected="selected">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo $category_lv2['name']; ?></option>
					<?php } else { ?>
					<option value="<?php echo $category_lv2['category_id']; ?>">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo $category_lv2['name']; ?></option>
					<?php } ?>
						<?php foreach ($category_lv2['children'] as $category_lv3) { ?>
						<?php if ($category_lv3['category_id'] == $category_id) { ?>
						<option value="<?php echo $category_lv3['category_id']; ?>" selected="selected">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo $category_lv3['name']; ?></option>
						<?php } else { ?>
						<option value="<?php echo $category_lv3['category_id']; ?>">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo $category_lv3['name']; ?></option>
						<?php } ?>
						<?php } ?>
					
					<?php } ?>
		        <?php } ?>
			</select>
		</div>
		<?php } ?>	
	    <input class="autosearch-input form-control" type="text" value="" size="50" autocomplete="off" placeholder="<?php echo $text_search ;?>" name="search">
	    <span class="input-group-btn">
			<button type="submit" class="button-search btn btn-default btn-lg" name="submit_search"><i class="fa fa-search"></i></button>
		</span>
	</div>
	

	
	<input type="hidden" name="route" value="product/search"/>
	</form>
</div>
<script type="text/javascript">
// Autocomplete */
(function($) {
	$.fn.Soautocomplete = function(option) {
		return this.each(function() {
			this.timer = null;
			this.items = new Array();
	
			$.extend(this, option);
	
			$(this).attr('autocomplete', 'off');
			
			// Focus
			$(this).on('focus', function() {
				this.request();
			});
			
			// Blur
			$(this).on('blur', function() {
				setTimeout(function(object) {
					(typeof object !== 'undefined') ? object.hide() : '';
				}, 200, this);				
			});
			
			// Keydown
			$(this).on('keydown', function(event) {
				switch(event.keyCode) {
					case 27: // escape
						this.hide();
						break;
					default:
						this.request();
						break;
				}				
			});
			
			// Click
			this.click = function(event) {
				event.preventDefault();
	
				value = $(event.target).parent().attr('data-value');
	
				if (value && this.items[value]) {
					this.select(this.items[value]);
				}
			}
			
			// Show
			this.show = function() {
				var pos = $(this).position();
	
				$(this).siblings('ul.dropdown-menu').css({
					top: pos.top + $(this).outerHeight(),
					left: pos.left
				});
	
				$(this).siblings('ul.dropdown-menu').show();
			}
			
			// Hide
			this.hide = function() {
				$(this).siblings('ul.dropdown-menu').hide();
			}		
			
			// Request
			this.request = function() {
				clearTimeout(this.timer);
				
				this.timer = setTimeout(function(object) {
					(typeof object !== 'undefined') ? object.source($(object).val(), $.proxy(object.response, object)) : '';
				}, 200, this);
			}
			
			// Response
			this.response = function(json) {
				html = '';
	
				if (json.length) {
					for (i = 0; i < json.length; i++) {
						this.items[json[i]['value']] = json[i];
					}
	
					for (i = 0; i < json.length; i++) {
						if (!json[i]['category']) {
						html += '<li class="media" data-value="' + json[i]['value'] + '">';
						if(json[i]['image'] && json[i]['show_image'] && json[i]['show_image'] == 1 ) {
							html += '	<a class="media-left" href="' + json[i]['link'] + '"><img class="pull-left" src="' + json[i]['image'] + '"></a>';	
						}
						
						html += '<div class="media-body">';	
						html += '<a href="' + json[i]['link'] + '"><span>' + json[i]['label'] + '</span></a>';
						if(json[i]['price'] && json[i]['show_price'] && json[i]['show_price'] == 1){
							html += '	<div class="price">';
							if (!json[i]['special']) {
								html += '<span class="price"><?php echo $text_price;?> : '+json[i]['price']+'</span>';;
							} else {
								html += '<span class="price-old">' + json[i]['price'] + '</span><span class="price-new">' + json[i]['special'] + '</span>';
							}
							if (json[i]['tax']) {
								html += '<br />';
								html += '<span class="price-tax"><?php echo $text_tax;?> : ' + json[i]['tax'] + '</span>';
							}
							html += '	</div>';
						}

						if(json[i]['show_addtocart'] || json[i]['show_addtowishlist'] || json[i]['show_addtocompare'] ){
							html += '<div class="button-group">';
							if(json[i]['show_addtocart'])
								html += '<button type="button" onclick="cart.add(' + json[i]['value'] + ',' + json[i]['minimum'] + ');"><span class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span> <i class="fa fa-shopping-cart"></i></button>';
							if(json[i]['show_addtowishlist'])
								html += '<button type="button" data-toggle="tooltip" title="<?php echo $button_wishlist; ?>" onclick="wishlist.add(' + json[i]['value'] + ');"><i class="fa fa-heart"></i></button>';
							if(json[i]['show_addtocompare'])
								html += '<button type="button" data-toggle="tooltip" title="<?php echo $button_compare; ?>" onclick="compare.add(' + json[i]['value'] + ');"><i class="fa fa-exchange"></i></button>';
							html += '</div>';
						}
						html += '</div></li>';
						html += '<li class="clearfix"></li>';
						}
					}
	
					// Get all the ones with a categories
					var category = new Array();
	
					for (i = 0; i < json.length; i++) {
						if (json[i]['category']) {
							if (!category[json[i]['category']]) {
								category[json[i]['category']] = new Array();
								category[json[i]['category']]['name'] = json[i]['category'];
								category[json[i]['category']]['item'] = new Array();
							}
	
							category[json[i]['category']]['item'].push(json[i]);
						}
					}
	
					for (i in category) {
						html += '<li class="dropdown-header">' + category[i]['name'] + '</li>';
	
						for (j = 0; j < category[i]['item'].length; j++) {
							html += '<li data-value="' + category[i]['item'][j]['value'] + '"><a href="#">&nbsp;&nbsp;&nbsp;' + category[i]['item'][j]['label'] + '</a></li>';
						}
					}
				}
	
				if (html) {
					this.show();
				} else {
					this.hide();
				}
	
				$(this).siblings('ul.dropdown-menu').html(html);
			}
			
			$(this).after('<ul class="dropdown-menu"></ul>');
			
		});
	}
})(window.jQuery);

$(document).ready(function() {
	var selector = '#search<?php echo $module ?>';
	var total = 0;
	var showimage = <?php echo ($showimage);?>;
	var showprice = <?php echo ($showprice);?>;
	var character = <?php echo ($character);?>;
	var height = <?php echo ($height);?>;
	var width = <?php echo ($width);?>;
	

	$(selector).find('input[name=\'search\']').Soautocomplete({
		delay: 500,
		source: function(request, response) {
			var category_id = $(".select_category select[name=\"category_id\"]").first().val();
			if(typeof(category_id) == 'undefined')
				category_id = 0;
			var limit = <?php echo $limit;?>;
			if(request.length >= character){
				$.ajax({
					url: 'index.php?route=module/so_searchpro/autocomplete&filter_category_id='+category_id+'&limit='+limit+'&width='+width+'&height='+height+'&filter_name='+encodeURIComponent(request),
					dataType: 'json',
					success: function(json) {		
						response($.map(json, function(item) {
							total = 0;
							if(item.total){
								total = item.total;
							}
							
							return {
								price:   item.price,
								speical: item.special,
								tax:     item.tax,
								label:   item.name,
								image:   item.image,
								link:    item.link,
								minimum:    item.minimum,
								show_price:  showprice,
								show_image:  showimage,	
								value:   item.product_id,
							}
						}));
					}
				});
			}	
		},
	});
});

</script>

Вот код tpl модуля so search pro

Нужно к нему добавить виджет поиска SEO CMS таким образом, чтобы добавились параметры поиска такие как Статьи и Все категории и отдельно статьи(в выпадающем списке) На странице вывода результатов поиска должны выводиться данные по выбранным параметрам, либо товары, либо статьи, либо и то и то, либо только статьи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.