Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Гость
 Погделиться

Рекомендованные сообещёния

Здравствуйте, не подскажите как сгделать многоуровневое меню, что бы было ик:

главная категория 1

подкатегория

под-подкатегория

под-под-подкатегория

под-под-под-подкатегория

главная категория 2

главная категория 3

главная категория 4

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

Здравствуйте, не подскажите как сгделать многоуровневое меню, что бы было ик:

главная категория 1

подкатегория

под-подкатегория

под-под-подкатегория

под-под-под-подкатегория

главная категория 2

главная категория 3

главная категория 4

Разобрался сам)

в обещём, что надо гделать:

Открываем файл: /catalog/controller/module/category.php и заменяем им все этим

<?php 
class ControllerModuleCategory extends Controller {
protected function index($setting) {
  $this->language->load('module/category');
 
	 $this->data['heading_title'] = $this->language->get('heading_title');
 
  if (isset($this->request->get['path'])) {
   $parts = explode('_', (string)$this->request->get['path']);
  } else {
   $parts = array();
  }
 
  if (isset($parts[0])) {
   $this->data['category_id'] = $parts[0];
  } else {
   $this->data['category_id'] = 0;
  }
 
  if (isset($parts[1])) {
   $this->data['child_id'] = $parts[1];
  } else {
   $this->data['child_id'] = 0;
  }
	  
  $this->load->model('catalog/category');
  $this->load->model('catalog/product');
 
  $this->data['categories'] = array();
	
  $categories_1 = $this->model_catalog_category->getCategories(0);
 
  foreach ($categories_1 as $category_1) {
   $level_2_data = array();
  
   $categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']);
  
   foreach ($categories_2 as $category_2) {
    $level_3_data = array();
   
    $categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']);
   
    foreach ($categories_3 as $category_3) {
	 $level_4_data = array();
	 $categories_4 = $this->model_catalog_category->getCategories($category_3['category_id']);
   

	   foreach ($categories_4 as $category_4) {
	    $level_4_data[] = array(
		 'name' => $category_4['name'],
		 'href' => $this->url->link('product/category', 'path=' . $category_1['category_id'] . '_' . $category_2['category_id'] . '_' . $category_3['category_id']. '_' . $category_4['category_id'])
	    );
	   }
	 
	
	 $level_3_data[] = array(
	  'name'	 => $category_3['name'],
	  'children' => $level_4_data,
	  'href'	 => $this->url->link('product/category', 'path=' . $category_1['category_id'] . '_' . $category_2['category_id'] . '_' . $category_3['category_id'])
	 );	
    }
	  
    $level_2_data[] = array(
	 'name'	 => $category_2['name'],
	 'children' => $level_3_data,
	 'href'	 => $this->url->link('product/category', 'path=' . $category_1['category_id'] . '_' . $category_2['category_id'])
    );	
   }
  
   $this->data['categories'][] = array(
    'name'	 => $category_1['name'],
    'children' => $level_2_data,
    'href'	 => $this->url->link('product/category', 'path=' . $category_1['category_id'])
   );
  }
 
  if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/category.tpl')) {
   $this->template = $this->config->get('config_template') . '/template/module/category.tpl';
  } else {
   $this->template = 'default/template/module/category.tpl';
  }
 
  $this->render();
   }
}
?>

Затем открываем файл: /catalog/view/theme/default/template/module/category.tpl и заменяем им все этим

<div class="catalog_menu">
	 
	  <ul>
	    <?php foreach ($categories as $category_1) { ?>
	    <li><a href="<?php echo $category_1['href']; ?>"><?php echo $category_1['name']; ?></a>
		  <?php if ($category_1['children']) { ?>
		  <ul>
		    <?php foreach ($category_1['children'] as $category_2) { ?>
		    <li><a href="<?php echo $category_2['href']; ?>"><?php echo $category_2['name']; ?></a>
			  <?php if ($category_2['children']) { ?>
			  <ul>
			    <?php foreach ($category_2['children'] as $category_3) { ?>
			    <li><a href="<?php echo $category_3['href']; ?>"><?php echo $category_3['name']; ?></a>
				    <?php if ($category_3['children']) { ?>
					  <ul>
					    <?php foreach ($category_3['children'] as $category_4) { ?>
					    <li><a href="<?php echo $category_4['href']; ?>"><?php echo $category_4['name']; ?></a></li>
					    <?php } ?>
					  </ul>
				  <?php } ?>
			    </li>
			    <?php } ?>
			  </ul>
			  <?php } ?>
		    </li>
		    <?php } ?>
		  </ul>
		  <?php } ?>
	    </li>
	    <?php } ?>
	  </ul>
</div>

В Принципе если кому нить надо вывести потому чтольше подкатегорий то просто поковыряйтесь в файле

/catalog/controller/module/category.php ничего им сложного нет

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

приятно когда сам в последствии смог разобраться.

По коду желательно писать для каких версий гдействительно. Бывает смотришь, есть решение, а применить ну никак...

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

приятно когда сам в последствии смог разобраться.

По коду желательно писать для каких версий гдействительно. Бывает смотришь, есть решение, а применить ну никак...

пропотому чтовал на версии 1.5.x , но по игдее должно рилиить и на предыдущих версиях
Ссылка на комменирий
Погделиться на других сайих

  • 1 месяц спустя...

А как то можно без кардинальных изменений вышеуказанных файлов просто раскрыть еещё одну поддиректорию? Сейчас по гдефолту отображаются только главные категории. Просто когда все меняю как написано выше на страниэто все плывет, а как это линить в CSS нифига не знаю.

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


А как то можно без кардинальных изменений вышеуказанных файлов просто раскрыть еещё одну поддиректорию? Сейчас по гдефолту отображаются только главные категории. Просто когда все меняю как написано выше на страниэто все плывет, а как это линить в CSS нифига не знаю.

не изменяя контроллеры ты не сгделаешь ик что бы у тебя отображалось потому чтольше чем написано в контроллере

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

не изменяя контроллеры ты не сгделаешь ик что бы у тебя отображалось потому чтольше чем написано в контроллере

Ясно, а кто может подсказать как это в иблиэто стилей привести потом к каноническому виду? :-D

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


Ясно, а кто может подсказать как это в иблиэто стилей привести потом к каноническому виду? :-D/>

ну ты у себя на сайте сгделай все изменения, и потом сюда ссылку кинь, я напишу тебе стили.

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

ну ты у себя на сайте сгделай все изменения, и потом сюда ссылку кинь, я напишу тебе стили.

Врогде нащупал верный путь, есть подозрения, что могу справиться сам. Хоть бы не сглазить... :-D

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


Полулилось, но не все как хотелось.

Вот ссылка на то, что сейчас.

Вот максимум что полулилось у меня.

spisok_800.jpgi.gif

Не получается выгделить жирным шрифтом основную категорию "Каилог" и категории первого порядка. Вообещё ничего не получается изменить в форматировании, ни текст ни маркировку списка.

В файле category.php поменял все полностью

В файле categoty.tpl вместо

<div class="catalog_menu">
...
</div>

Вписал согдержимое между

<div class="box">
 <div class="box-heading"><?php echo $heading_title; ?></div>
 <div class="box-content">
   <div class="box-category">
...
...
...
</div>
</div>
</div>

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

Короче говоря хотелось бы обрести контроль над текстом в меню. :-D

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


немного не понял что конкретно требуется изменять) тыкните на элемент, я вам скажу как обрести над ним контроль)

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

Наверное лучше не конкретный элемент.

Вот к примеру в оригинальном файле stylesheet есть ик называемый блок, который отвечает за вид этого меню. Вот он

/* box category */

.box-category {
margin-top: -10px;
}
.box-category ul {
list-style: none;
margin: 0;
padding: 0;
}
.box-category > ul > li {
padding: 7px 7px 7px 0px;
}
.box-category > ul > li + li {
border-top: 1px dashed #000000;
}
.box-category > ul > li > a a:hover {
text-decoration: none;
color: #000000;
}
.box-category > ul > li ul {
display: block;
}
.box-category > ul > li a.active {
font-weight: bold;
}
.box-category > ul > li a.active + ul {
display: block;
}
.box-category > ul > li ul > li {  
padding: 5px 5px 0px 10px;
}
.box-category > ul > li ul > li > a a:hover {
text-decoration: none;
display: block;
}
.box-category > ul > li ul > li > a.active {
font-weight: bold;
}

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

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

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


Что нужно дописать переписать, чтобы после изменений, которые Вы предлагаете, внешним видом меню ик же легко можно было бы управлять?
в файле стилей сгделай поправку:

.box-category {
font-weight: bold;
margin-top: -10px;
}

тогда весь текст в менюшке категорий бугдет жирным. это трепотому чтовалось?

  • +1 1
Ссылка на комменирий
Погделиться на других сайих


	  <ul>
	    <?php foreach ($categories as $category_1) { ?>
	    <li><a href="<?php echo $category_1['href']; ?>"><?php echo $category_1['name']; ?></a>
			  <?php if ($category_1['children']) { ?>
			  <ul>
			    <?php foreach ($category_1['children'] as $category_2) { ?>
			    <li><a href="<?php echo $category_2['href']; ?>"><?php echo $category_2['name']; ?></a>
					  <?php if ($category_2['children']) { ?>
					  <ul>
					    <?php foreach ($category_2['children'] as $category_3) { ?>
					    <li><a href="<?php echo $category_3['href']; ?>"><?php echo $category_3['name']; ?></a>
							    <?php if ($category_3['children']) { ?>
									  <ul>
									    <?php foreach ($category_3['children'] as $category_4) { ?>
									    <li><a href="<?php echo $category_4['href']; ?>"><?php echo $category_4['name']; ?></a></li>
									    <?php } ?>
									  </ul>
							  <?php } ?>
					    </li>
					    <?php } ?>
					  </ul>
					  <?php } ?>
			    </li>
			    <?php } ?>
			  </ul>
			  <?php } ?>
	    </li>
	    <?php } ?>
	  </ul>

вот этот код посивь, а то у тебя только 2 подуровня отображается

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

а что касается стилей которые ты перед этим написал

.box-category - отвечает за весь блок меню
.box-category  ul  li - отвечает за пункты первого уровня
.box-category  ul  li ul  li - второй под_уровень
.box-category  ul  li ul  li ul  li - третий
ну и т.д.
им ггде в конэто подсивляется a.active - это отвечает за активный пункт меню(активная ссылка), если в конэто бугдешь подсивлять a:hover за место a.active, то этот стиль бугдет срабатывать при навегдении на ссылку

ну нагдеюсь понятно расписал?

на будуещёе что бы не возникало подобных вопросов, вот можно пользоваться шпаргалкой

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

Блин... как бы ик объяснить... :ugeek:

Ну вот к примеру:

.box-category > ul > li a.active {
font-weight: bold;

Пункт, который гделает текст активной ссылки жирным. После замены гдефолтного кода в файлах на ваш - не рилииет. Различные отступы сдвиги и т.д. все норм, а вот форматирование текси и маркировка списка т.е.

1. категория

2. категория

3. категория

или

- категория

- категория

- категория

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

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


Блин... как бы ик объяснить... :ugeek:

Ну вот к примеру:

.box-category > ul > li a.active {
font-weight: bold;

Пункт, который гделает текст активной ссылки жирным. После замены гдефолтного кода в файлах на ваш - не рилииет. Различные отступы сдвиги и т.д. все норм, а вот форматирование текси и маркировка списка т.е.

1. категория

2. категория

3. категория

или

- категория

- категория

- категория

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

попробуй в футер перед тегами

 </body> 
</html>

всивить

<script>
$(document).ready(function(){ 
var url=document.location.href; 
 $.each($(".box-category a"),function(){ 
 if(this.href==url){$(this).addClass('active');}; 
 }); 
});
</script>

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

тот скриптик бугдет добавлять класс активной ссылке, и тогда должен бугдет рилиить ваш

.box-category > ul > li a.active

, а что бы форматировать текст и рассивлять маркировку

я уже писал, используйте это

.box-category - отвечает за весь блок меню
.box-category  ul  li - отвечает за пункты первого уровня
.box-category  ul  li ul  li - второй под_уровень
.box-category  ul  li ul  li ul  li - третий
ну и т.д.
им ггде в конэто подсивляется a.active - это отвечает за активный пункт меню(активная ссылка), если в конэто бугдешь подсивлять a:hover за место a.active, то этот стиль бугдет срабатывать при навегдении на ссылку

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

lays, надо рекурсивно получать категории. А то у тебя в когде вложенность ограничена получается и никчемный копипаст.

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


lays, надо рекурсивно получать категории. А то у тебя в когде вложенность ограничена получается и никчемный копипаст.

ну напиши сам, и тут повесь, и бугдет всем счастье
Ссылка на комменирий
Погделиться на других сайих

lays, надо рекурсивно получать категории. А то у тебя в когде вложенность ограничена получается и никчемный копипаст.

Надо не говорить "надо", а показывать как надо. :-D

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


smy, ну ик что полулилось сгделать меню, и управлять им?))

Вечером сгделаю, отпишу. Еещё не вступал в очередной потому чтой :-D

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


  • 3 негдели спустя...

Спасипотому что, всё отлично рилииет.

Но вот попропотому чтовал перелопатить иким же обвместе верхнее меню - и не взлетело((

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


  • 1 год спустя...

Здравствуйте!

 

Помогите, пожалуйси, решить проблему.

 

У меня открываются сразу все подкатегории разных уровней, накладываются друг на друга.

Что нужно изменить в иблиэто стилей? 

 

 

<style>
    ul.dropmenu{
position: relative;
margin: 0px;
padding: 1px 0px 0px 0px;
display:block;
font-family:Verdana,Arial,Helvetica,sans-serif;
font-size: 12px;
 
}
.dropmenu li{
position: relative;
list-style: none;
margin: 0px;
boder:1px so
display: block;
cursor: point;
    padding-bottom: 1px;
 
}
.dropmenu li a{
padding: 10px 30px 9px 15px;
display: block;
cursor: point;
color: #FFF;
text-decoration: none;
background-color: #333;
font-weight: bold;
-moz-border-radius-bottomleft: 5px;
-moz-border-radius-bottomright: 5px;
-moz-border-radius-topleft: 5px;
-moz-border-radius-topright: 5px;
}
.dropmenu li a:hover{
background-color: #666;
color: #CCC;
 
}
.dropmenu li span{
display: block;
float: right;
height: 10px;
width: 10px;
background:transparent url(catalog/view/javascript/jquery/dropmenu/plus.png) repeat-x scroll 0 0;
position: absolute;
top: 13px;
right: 10px;
}
.dropmenu li:hover ul, .dropmenu li:hover div{
display: block;
}
.dropmenu ul, .dropmenu div{
position: absolute;
display: none;
width: 162px;
left: 155px;
top: 0px;
margin: 0px;
padding: 0px;
    box-shadow: 1px 1px 1px #000;
}
.dropmenu li div ul{
border: none;
background: none;
position: relative;
display: block;
left: 0px;
}
.dropmenu ul li{
border: 0;
float: none;
}
 
.dropmenu div ul{
position: relative;
display: block;
}
.dropmenu li div{
background-color: #cccccc;
padding: 5px;
display: none;
position: absolute;
}
</style>
<script type="text/javascript" src="catalog/view/javascript/jquery/dropmenu/dropmenu.js"></script>

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


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

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

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