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

Как вывести категории на все страницы?

alinalessio

Пользователь
Версия Osclass: 3.5.2
Тема: Bender

Создал категории, хочу вывести их в хедер, чтобы они были на всех страницах.

Как я понял, сейчас категории размещены в файле oc-content\themes\bender\main.php который отвечает только за главную страницу. Но в нем код категорий я не нашел. В oc-content\themes\bender\header.php тоже нет категорий.
Нашел код категорий только в oc-content\themes\bender\functions.php

Вопрос:
1. Как сейчас выводятся категории на главную, если в файле main.php о категориях ни слова?
2. Как заставить показываться категории на всех страницах?
 
Последнее редактирование:

administrator

Блудный сын.
Команда форума
Собственно, вывод категорий на главной странице производится через функцию: bender_add_body_class('home');
Можно попробовать разместить на главную:

PHP:
		<ul class="r-list">
			 <li>
				 <h1>
					<?php
					$_slug	  = osc_category_slug();
					$_url	   = osc_search_category_url();
					$_name	  = osc_category_name();
					$_total_items = osc_category_total_items();
					if ( osc_count_subcategories() > 0 ) { ?>
					<span class="collapse resp-toogle"><i class="fa fa-caret-right fa-lg"></i></span>
					<?php } ?>
					<?php if($_total_items > 0) { ?>
					<a class="category <?php echo $_slug; ?>" href="<?php echo $_url; ?>"><?php echo $_name ; ?></a> <span>(<?php echo $_total_items ; ?>)</span>
					<?php } else { ?>
					<a class="category <?php echo $_slug; ?>" href="#"><?php echo $_name ; ?></a> <span>(<?php echo $_total_items ; ?>)</span>
					<?php } ?>
				 </h1>
				 <?php if ( osc_count_subcategories() > 0 ) { ?>
				   <ul>
						 <?php while ( osc_has_subcategories() ) { ?>
							 <li>
							 <?php if( osc_category_total_items() > 0 ) { ?>
								 <a class="category sub-category <?php echo osc_category_slug() ; ?>" href="<?php echo osc_search_category_url() ; ?>"><?php echo osc_category_name() ; ?></a> <span>(<?php echo osc_category_total_items() ; ?>)</span>
							 <?php } else { ?>
								 <a class="category sub-category <?php echo osc_category_slug() ; ?>" href="#"><?php echo osc_category_name() ; ?></a> <span>(<?php echo osc_category_total_items() ; ?>)</span>
							 <?php } ?>
							 </li>
						 <?php } ?>
				   </ul>
				 <?php } ?>
			 </li>
		</ul>
Или можно поиграться с кодом.
 

alinalessio

Пользователь
Удалось вывести категории так:
1. Скопировал код из oc-content\themes\bender\functions.php:
Код:
<?php
		 //cell_3
		$total_categories   = osc_count_categories();
		$col1_max_cat	   = ceil($total_categories/3);
 
		 osc_goto_first_category();
		 $i	  = 0;
 
		 while ( osc_has_categories() ) {
		 ?>
		<?php
			if($i%$col1_max_cat == 0){
				if($i > 0) { echo '</div>'; }
				if($i == 0) {
				   echo '<div class="cell_3 first_cel">';
				} else {
					echo '<div class="cell_3">';
				}
			}
		?>
<ul class="r-list">
			 <li>
				 <h1>
					<?php
					$_slug	  = osc_category_slug();
					$_url	   = osc_search_category_url();
					$_name	  = osc_category_name();
					$_total_items = osc_category_total_items();
					if ( osc_count_subcategories() > 0 ) { ?>
					<span class="collapse resp-toogle"><i class="fa fa-caret-right fa-lg"></i></span>
					<?php } ?>
					<?php if($_total_items > 0) { ?>
					<a class="category <?php echo $_slug; ?>" href="<?php echo $_url; ?>"><?php echo $_name ; ?></a> <span>(<?php echo $_total_items ; ?>)</span>
					<?php } else { ?>
					<a class="category <?php echo $_slug; ?>" href="#"><?php echo $_name ; ?></a> <span>(<?php echo $_total_items ; ?>)</span>
					<?php } ?>
				 </h1>
				 <?php if ( osc_count_subcategories() > 0 ) { ?>
				   <ul>
						 <?php while ( osc_has_subcategories() ) { ?>
							 <li>
							 <?php if( osc_category_total_items() > 0 ) { ?>
								 <a class="category sub-category <?php echo osc_category_slug() ; ?>" href="<?php echo osc_search_category_url() ; ?>"><?php echo osc_category_name() ; ?></a> <span>(<?php echo osc_category_total_items() ; ?>)</span>
							 <?php } else { ?>
								 <a class="category sub-category <?php echo osc_category_slug() ; ?>" href="#"><?php echo osc_category_name() ; ?></a> <span>(<?php echo osc_category_total_items() ; ?>)</span>
							 <?php } ?>
							 </li>
						 <?php } ?>
				   </ul>
				 <?php } ?>
			 </li>
		</ul>
<?php
				$i++;
			}
			echo '</div>';
		?>
2. Вставил в oc-content\themes\bender\header.php

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

И эти категории, которые добавились в хедер, показываются только на главной.

Скорее всего в PHP указано где показывать эти переменные и от дублирования кода в хедер ничего не меняется. Кто знает PHP, помогите разобраться, почему категории только на главной?

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

alinalessio

Пользователь
Могу ошибаться, но нашел в function.php строчку, которая, как мне кажется говорит "Выводить на странице home_page", т.е. на главной.
Вот эта строчка:
Код:
<?php if(!osc_is_home_page()){ echo '</div>'; } ?>
Вместо osc_is_home_page видимо нужно написать что-то вроде all_page или еще что-то. Помогите пожалуйста.
 

alinalessio

Пользователь
Нашел страницу, где перечислены эти правила:
http://doc.osclass.org/HDefines.php

Там есть
Код:
osc_is_static_page() - Get if user is on a static page

По идее эта переменная,
Код:
osc_is_home_page
говорит где должен располагаться код в скобках. (На главной странице) Я заменяю его на

Код:
osc_is_static_page
чтобы увидеть категории на статической странице, но ничего не меняется. С главной не исчезает и на статической не появляется.
 

alinalessio

Пользователь
Спасибо. А как сделать чтобы на всех страницах было? Чтобы создал статическую страницу, а там уже категории есть. Чтобы не айпишники перечислять, а сразу для всех статических, а так же для страниц категорий, на страницах карточек объявлений и т.д.
Вот логотип, например, он показывается на всех страницах без исключения. Можно написать как-то так? "Показывать на всех страницах, кроме admin" т.е. использовать метод исключения, чтобы не перечислять все страницы. Или подскажите как перечислить, чтобы категории были на всех страницах.
 

administrator

Блудный сын.
Команда форума
Много информации, я немного не понял вопроса. Краткость сестра таланта.
 

djnavel

Модератор
Ваш код работает на всех страницах если в стилях убрать .r-list{display:none; ....
PHP:
<?php
 //cell_3
$total_categories   = osc_count_categories();
$col1_max_cat	= ceil($total_categories/3);
 
 osc_goto_first_category();
 $i   = 0;
 
 while ( osc_has_categories() ) {
 ?>
<?php
if($i%$col1_max_cat == 0){
if($i > 0) { echo '</div>'; }
if($i == 0) {
   echo '<div class="cell_3 first_cel">';
} else {
echo '<div class="cell_3">';
}
}
?>
<ul class="r-list">
 <li>
 <h1>
<?php
$_slug   = osc_category_slug();
$_url	= osc_search_category_url();
$_name   = osc_category_name();
$_total_items = osc_category_total_items();
if ( osc_count_subcategories() > 0 ) { ?>
<span class="collapse resp-toogle"><i class="fa fa-caret-right fa-lg"></i></span>
<?php } ?>
<?php if($_total_items > 0) { ?>
<a class="category <?php echo $_slug; ?>" href="<?php echo $_url; ?>"><?php echo $_name ; ?></a> <span>(<?php echo $_total_items ; ?>)</span>
<?php } else { ?>
<a class="category <?php echo $_slug; ?>" href="#"><?php echo $_name ; ?></a> <span>(<?php echo $_total_items ; ?>)</span>
<?php } ?>
 </h1>
 <?php if ( osc_count_subcategories() > 0 ) { ?>
   <ul>
 <?php while ( osc_has_subcategories() ) { ?>
 <li>
 <?php if( osc_category_total_items() > 0 ) { ?>
 <a class="category sub-category <?php echo osc_category_slug() ; ?>" href="<?php echo osc_search_category_url() ; ?>"><?php echo osc_category_name() ; ?></a> <span>(<?php echo osc_category_total_items() ; ?>)</span>
 <?php } else { ?>
 <a class="category sub-category <?php echo osc_category_slug() ; ?>" href="#"><?php echo osc_category_name() ; ?></a> <span>(<?php echo osc_category_total_items() ; ?>)</span>
 <?php } ?>
 </li>
 <?php } ?>
   </ul>
 <?php } ?>
 </li>
</ul>
<?php
$i++;
}
echo '</div>';
?>

юзайте firebug или аналог в chrome - там все покажет вам
 

monah

Активный пользователь
сделал как здесь, все хорошо отображается, но как исключить страницы на каких она должна появляться? например главная?
 

yur4ik23

Новичок
PHP:
<?php if (!osc_is_home_page()) { ?>
 
тут что не дожно показываться на главной
 
<?php } ?>
подскажите, а как еще добавить что-бы объект не отображался не только на главной, а и на статической странице - <?php if (!osc_is_static_page()) { ?>.
Как объединить код <?php if (!osc_is_home_page()) { ?> и <?php if (!osc_is_static_page()) { ?> в один?!
 
Верх