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

Категории->подкатегории

Кок

Новичок
Добрый день. Кто нибудь делал категории->подкатегории как в редактировании объявления в админке?
Новый точечный рисунок.jpg
Вставлял код с админки:
<div class="category">
<label><?php _e('Category'); ?></label>
<?php ItemForm::category_multiple_selects(); ?>
</div>
Но выводится только категории и при выборе не появляются подкатегории=(
Хотелось бы сделать 2-3 поля с категориями и подкатегориями, что бы не перегружать большим количеством строк при подаче объявления, ну и можно при поиске.
Кто то занимался этим вопросом?)
 
  • Like
Реакции: Bob

Кок

Новичок
Нашел скрипт вывода подкатегорий:
www\oc-includes\osclass\frm\Item.form.class.php
Код:
 <script type="text/javascript" charset="utf-8">
				<?php
					$tmp_cat = array();
					foreach($categories as $c) {
						if( $c['fk_i_parent_id']==null ) { $c['fk_i_parent_id'] = 0; };
						$tmp_cat[$c['fk_i_parent_id']][] = array($c['pk_i_id'], $c['s_name']);
					}
					foreach($tmp_cat as $k => $v) {
						echo 'var categories_'.$k.' = '.json_encode($v).';'.PHP_EOL;
					}
				?>
 
 
				if(osc==undefined) { var osc = {}; }
				if(osc.langs==undefined) { osc.langs = {}; }
				if(osc.langs.select_category==undefined) { osc.langs.select_category = '<?php echo osc_esc_js(__('Select category')); ?>'; }
				if(osc.langs.select_subcategory==undefined) { osc.langs.select_subcategory = '<?php echo osc_esc_js(__('Select subcategory')); ?>'; }
				osc.item_post = {};
				osc.item_post.category_id	= '<?php echo $categoryID; ?>';
				osc.item_post.category_tree_id	= <?php echo json_encode($categories_tree); ?>;
 
 
				$(document).ready(function(){
					<?php if($categoryID==array()) { ?>
					draw_select(1,0);
					<?php } else { ?>
						draw_select(1,0);
						<?php for($i=0; $i<count($categories_tree)-1; $i++) { ?>
						draw_select(<?php echo ($i+2); ?> ,<?php echo $categories_tree[$i]; ?>);
						<?php } ?>
					<?php } ?>
					$('body').on("change", '[name^="select_"]', function() {
						var depth = parseInt($(this).attr("depth"));
						for(var d=(depth+1);d<=4;d++) {
							$("#select_"+d).trigger('removed');
							$("#select_"+d).remove();
						}
						$("#catId").attr("value", $(this).val());
						$("#catId").change();
						if(catPriceEnabled[$('#catId').val()] == 1) {
							$('.price').show();
						} else {
							$('.price').hide();
							$('#price').val('') ;
						}
						if((depth==1 && $(this).val()!=0) || (depth>1 && $(this).val()!=$("#select_"+(depth-1)).val())) {
							draw_select(depth+1, $(this).val());
						}
						return true;
					});
				});
 
 
				function draw_select(select, categoryID) {
					tmp_categories = window['categories_' + categoryID];
					if( tmp_categories!=null && $.isArray(tmp_categories) ) {
						$("#select_holder").before('<select id="select_'+select+'" name="select_'+select+'" depth="'+select+'"></select>');
 
 
						if(categoryID==0) {
							var options = '<option value="' + categoryID + '" >' + osc.langs.select_category + '</option>';
						}else {
							var options = '<option value="' + categoryID + '" >' + osc.langs.select_subcategory + '</option>';
						}
						$.each(tmp_categories, function(index, value){
							options += '<option value="' + value[0] + '" '+(value[0]==osc.item_post.category_tree_id[select-1]?'selected="selected"':'')+'>' + value[1] + '</option>';
						});
						osc.item_post.category_tree_id[select-1] = null;
						$('#select_'+select).html(options);
						$('#select_'+select).next("a").find(".select-box-label").text(osc.langs.select_subcategory);
						$('#select_'+select).trigger("created");
					};
				}
			</script>
		<?php
Но если его просто вставить и посмотреть код страницы при просмотре, то будет ошибка:
<b>Warning</b>: Invalid argument supplied for foreach() in <b>/home/host1336094/shkiper.net/htdocs/www/oc-content/themes/russia/item-post.php</b> on line <b>115</b><br />

Есть вариант вставить уже готовый код с фаербага, но тогда нужно будет менять каждый раз при изменении категории и кто его знает что еще.
Помогите плиз заставить работать.
 

Сурлан

Пользователь
Тем, для кого актуально.


Поменяйте:
Код:
<?php ItemForm::category_select(null, null, __('Select a category', 'ИМЯ ШАБЛОНА')); ?>
на:
Код:
<?php ItemForm::category_multiple_selects(null, null, __('Select a category', 'ИМЯ ШАБЛОНА')); ?>
Файл item-post.php
 

modris

Новичок
Но после того, не работают Custom fields ! исчезли со страницы публикаций !
 
Верх