Jump to content
Sign in to follow this  
SEO Thresh

Помогите с меню в opencart

Recommended Posts

Доброе утро, форумчане. Ситуация такова, я понял что на оф. форуме опенкарта сидят один выпендрежники и павлины(( и помощи от них не дождаться...буду просить у любимой публики сеошников.

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

s003.radikal.ru/i201/1601/6f/2153293f82e3.png  - выделенное надо убрать...Заранее всем спасибо!

 

Share this post


Link to post
Share on other sites

Доброе утро, форумчане. Ситуация такова, я понял что на оф. форуме опенкарта сидят один выпендрежники и павлины(( и помощи от них не дождаться...буду просить у любимой публики сеошников.

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

s003.radikal.ru/i201/1601/6f/2153293f82e3.png  - выделенное надо убрать...Заранее всем спасибо!

Доброе утро. Посмотри в самих подкатегориях, стоит на вкладке "Данные" галка? 

Главное меню:

Показывать в главном меню (только для главных родительских категорий).

Share this post


Link to post
Share on other sites

Доброе утро. Посмотри в самих подкатегориях, стоит на вкладке "Данные" галка? 

Главное меню:

Показывать в главном меню (только для главных родительских категорий).

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

Share this post


Link to post
Share on other sites

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

В общем заходишь в каждое родительскую категорию, вкладка Данные

 

В колонке:

Колонки:

Количество колонок в выпадающем меню категорий (только для главных родительских категорий). Необходимо поставить значение 0 и будет тебе счастье

Share this post


Link to post
Share on other sites

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

нет. блин не то вообще написал. погоди

Share this post


Link to post
Share on other sites

В общем заходишь в каждое родительскую категорию, вкладка Данные

 

В колонке:

Колонки:

Количество колонок в выпадающем меню категорий (только для главных родительских категорий). Необходимо поставить значение 0 и будет тебе счастье

и опять там все по нулям...((проверено 3 раза

Share this post


Link to post
Share on other sites

и опять там все по нулям...((проверено 3 раза

Сначала бекап сделай.

 

Вообще в админке в редактировании категории во вкладке ДАННЫЕ есть такое поле “Столбцы:“. Там настраивается количество столбцов в выпадающем списке для пункта меню. Это поле мы и будем использовать, добавив в файл контроллера header.php небольшой хак. Смысл модификации в том, что если в поле ” Столбцы: ” ввести цифру ноль, то выпадающее меню вообще не будет выводиться.

Итак модифицируем файл catalog/controller/common/header.php

Практически в самом низу файла находим

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$children = $this->model_catalog_category->getCategories($category['category_id']);
 
foreach ($children as $child) {
$data = array(
'filter_category_id'  => $child['category_id'],
'filter_sub_category' => true
);
 
$product_total = $this->model_catalog_product->getTotalProducts($data);
 
$children_data[] = array(
'name'  => $child['name'] . ' (' . $product_total . ')',
'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
);
}

И заменяем на

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if($category['column']){
$children = $this->model_catalog_category->getCategories($category['category_id']);
 
foreach ($children as $child) {
$data = array(
'filter_category_id'  => $child['category_id'],
'filter_sub_category' => true
);
 
$product_total = $this->model_catalog_product->getTotalProducts($data);
 
$children_data[] = array(
'name'  => $child['name'] . ' (' . $product_total . ')',
'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
);
}
}

Суть в том, что этот участок кода после модификации выполнится только в том случае, если в поле ” Столбцы: ” будет стоять число, отличное от нуля.

Share this post


Link to post
Share on other sites

Сначала бекап сделай.

 

Вообще в админке в редактировании категории во вкладке ДАННЫЕ есть такое поле “Столбцы:“. Там настраивается количество столбцов в выпадающем списке для пункта меню. Это поле мы и будем использовать, добавив в файл контроллера header.php небольшой хак. Смысл модификации в том, что если в поле ” Столбцы: ” ввести цифру ноль, то выпадающее меню вообще не будет выводиться.

Итак модифицируем файл catalog/controller/common/header.php

Практически в самом низу файла находим

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$children = $this->model_catalog_category->getCategories($category['category_id']);
 
foreach ($children as $child) {
$data = array(
'filter_category_id'  => $child['category_id'],
'filter_sub_category' => true
);
 
$product_total = $this->model_catalog_product->getTotalProducts($data);
 
$children_data[] = array(
'name'  => $child['name'] . ' (' . $product_total . ')',
'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
);
}

И заменяем на

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if($category['column']){
$children = $this->model_catalog_category->getCategories($category['category_id']);
 
foreach ($children as $child) {
$data = array(
'filter_category_id'  => $child['category_id'],
'filter_sub_category' => true
);
 
$product_total = $this->model_catalog_product->getTotalProducts($data);
 
$children_data[] = array(
'name'  => $child['name'] . ' (' . $product_total . ')',
'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
);
}
}

Суть в том, что этот участок кода после модификации выполнится только в том случае, если в поле ” Столбцы: ” будет стоять число, отличное от нуля.

К сожалению не могу найти или просто слепой...у меня версия 1.5.6.4 если это что то изменит...

<?php   
class ControllerCommonHeader extends Controller {
	protected function index() {
		$this->data['title'] = $this->document->getTitle();
		
		 // start body_class code
   
    $current_path = $this->request->get;
    if (empty($current_path) || $current_path['route'] == 'common/home') {
      $body_class = 'home';
    }
    else {
      $body_class = explode('/', str_replace('product/', '', $current_path['route']));
      unset($current_path['route']);
      if (isset($current_path['_route_'])) {
        $body_class = array_merge($body_class, explode('/', str_replace('-', '_', $current_path['_route_'])));
        unset($current_path['_route_']);
      }
      foreach ($current_path as $key => $value) {
        $body_class[] = $key . "_" . $value;
      }
      $body_class = 'page_' . implode(" page_", array_unique($body_class));
    }
    $body_class .= ' lang_' . $this->language->get('code');
    $this->data['body_class'] = $body_class;
      
    // end body_class code
		
		if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
			$server = $this->config->get('config_ssl');
		} else {
			$server = $this->config->get('config_url');
		}
        
        if (isset($this->session->data['error']) && !empty($this->session->data['error'])) {
            $this->data['error'] = $this->session->data['error'];
            
            unset($this->session->data['error']);
        } else {
            $this->data['error'] = '';
        }

		$this->data['base'] = $server;
		$this->data['description'] = $this->document->getDescription();
		$this->data['keywords'] = $this->document->getKeywords();
		$this->data['links'] = $this->document->getLinks();	 
		$this->data['styles'] = $this->document->getStyles();
		$this->data['scripts'] = $this->document->getScripts();
		$this->data['lang'] = $this->language->get('code');
		$this->data['direction'] = $this->language->get('direction');
		$this->data['google_analytics'] = html_entity_decode($this->config->get('config_google_analytics'), ENT_QUOTES, 'UTF-8');
		$this->data['name'] = $this->config->get('config_name');
		
		if ($this->config->get('config_icon') && file_exists(DIR_IMAGE . $this->config->get('config_icon'))) {
			$this->data['icon'] = $server . 'image/' . $this->config->get('config_icon');
		} else {
			$this->data['icon'] = '';
		}
		
		if ($this->config->get('config_logo') && file_exists(DIR_IMAGE . $this->config->get('config_logo'))) {
			$this->data['logo'] = $server . 'image/' . $this->config->get('config_logo');
		} else {
			$this->data['logo'] = '';
		}		
		
		$this->language->load('common/header');
		
		$this->data['text_home'] = $this->language->get('text_home');
		$this->data['text_wishlist'] = sprintf($this->language->get('text_wishlist'), (isset($this->session->data['wishlist']) ? count($this->session->data['wishlist']) : 0));
		$this->data['text_shopping_cart'] = $this->language->get('text_shopping_cart');
    	$this->data['text_search'] = $this->language->get('text_search');
		$this->data['text_welcome'] = sprintf($this->language->get('text_welcome'), $this->url->link('account/login', '', 'SSL'), $this->url->link('account/register', '', 'SSL'));
		$this->data['text_logged'] = sprintf($this->language->get('text_logged'), $this->url->link('account/account', '', 'SSL'), $this->customer->getFirstName(), $this->url->link('account/logout', '', 'SSL'));
		$this->data['text_account'] = $this->language->get('text_account');
    	$this->data['text_checkout'] = $this->language->get('text_checkout');
				
		$this->data['home'] = $this->url->link('common/home');
		$this->data['wishlist'] = $this->url->link('account/wishlist', '', 'SSL');
		$this->data['logged'] = $this->customer->isLogged();
		$this->data['account'] = $this->url->link('account/account', '', 'SSL');
		$this->data['shopping_cart'] = $this->url->link('checkout/cart');
		$this->data['checkout'] = $this->url->link('checkout/checkout', '', 'SSL');
		
		// Daniel's robot detector
		$status = true;
		
		if (isset($this->request->server['HTTP_USER_AGENT'])) {
			$robots = explode("\n", trim($this->config->get('config_robots')));

			foreach ($robots as $robot) {
				if ($robot && strpos($this->request->server['HTTP_USER_AGENT'], trim($robot)) !== false) {
					$status = false;

					break;
				}
			}
		}
		
		// A dirty hack to try to set a cookie for the multi-store feature
		$this->load->model('setting/store');
		
		$this->data['stores'] = array();
		
		if ($this->config->get('config_shared') && $status) {
			$this->data['stores'][] = $server . 'catalog/view/javascript/crossdomain.php?session_id=' . $this->session->getId();
			
			$stores = $this->model_setting_store->getStores();
					
			foreach ($stores as $store) {
				$this->data['stores'][] = $store['url'] . 'catalog/view/javascript/crossdomain.php?session_id=' . $this->session->getId();
			}
		}
				
		// Search		
		if (isset($this->request->get['search'])) {
			$this->data['search'] = $this->request->get['search'];
		} else {
			$this->data['search'] = '';
		}
		
		// Menu
		$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) {
			if ($category_1['top']) {
			
			
					$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) {
						$data = array(
						'filter_category_id'  => $category_3['category_id'],
						'filter_sub_category' => true	
					);		
						
//					$product_total = $this->model_catalog_product->getTotalProducts($data);
					
					$level_3_data[] = array(
//						'name'  => $child['name'] . ' (' . $product_total . ')', 
						'name' => $category_3['name'],
						'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,
					'column'   => $category_2['column'] ? $category_2['column'] : 1,
					'href'     => $this->url->link('product/category', 'path=' . $category_1['category_id'] . '_' . $category_2['category_id'])	
				);					
			}
				
				// Level 1
				$this->data['categories'][] = array(
					'name'     =>  $category_1['name'],
					'children' => $level_2_data,
					'column'   => $category_1['column'] ? $category_1['column'] : 1,
					'href'     => $this->url->link('product/category', 'path=' . $category_1['category_id']),
					'id' => $category_1['category_id']
				);
			}
		}
		$this->children = array(
			'module/language',
			'module/currency',
			'module/cart'
		);
				
		if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/header.tpl')) {
			$this->template = $this->config->get('config_template') . '/template/common/header.tpl';
		} else {
			$this->template = 'default/template/common/header.tpl';
		}
		
    	$this->render();
	} 	
}
?>

вот мой хедер(

Share this post


Link to post
Share on other sites

и опять там все по нулям...((проверено 3 раза

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

Share this post


Link to post
Share on other sites

да)

Слушай, а зачем вообще убирать? Для SEO конечная страница желательно что бы была в 3-х кликах от главной страницы. Лучше вывести все категории в верхнем меню (главная категория - подкатегория - под подкатегория), чтобы можно было попасть в любую категорию с главного меню. Что бы не было дублирования меню левого и верхнего лучше поставить модуль подкатегорий.

Share this post


Link to post
Share on other sites

Слушай, а зачем вообще убирать? Для SEO конечная страница желательно что бы была в 3-х кликах от главной страницы. Лучше вывести все категории в верхнем меню (главная категория - подкатегория - под подкатегория), чтобы можно было попасть в любую категорию с главного меню. Что бы не было дублирования меню левого и верхнего лучше поставить модуль подкатегорий.

подподкатегорий просто будет настолько много что лучше в главном меню их не отображать...я знаю свою нишу и никто 3 уровень в меню не практикует...скажу больше у меня будет еще и 4ый))

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

Edited by SEO Thresh

Share this post


Link to post
Share on other sites

подподкатегорий просто будет настолько много что лучше в главном меню их не отображать...я знаю свою нишу и никто 3 уровень в меню не практикует...скажу больше у меня будет еще и 4ый))

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

Мне помог в свое время тот код, правда потом все вернул обратно. Делай методом тыка =) 

 

попробуй закомментируй след. код и посмотри что будет.

$level_3_data[] = array(
//						'name'  => $child['name'] . ' (' . $product_total . ')', 
						'name' => $category_3['name'],
						'href' => $this->url->link('product/category', 'path=' . $category_1['category_id'] . '_' . $category_2['category_id'] . '_' . $category_3['category_id'])
					);

В общем просто надо убрать вывод третьего уровня. Честно сам всегда делаю методом тыка =) не программист я

Share this post


Link to post
Share on other sites

Мне помог в свое время тот код, правда потом все вернул обратно. Делай методом тыка =) 

 

попробуй закомментируй след. код и посмотри что будет.

$level_3_data[] = array(
//						'name'  => $child['name'] . ' (' . $product_total . ')', 
						'name' => $category_3['name'],
						'href' => $this->url->link('product/category', 'path=' . $category_1['category_id'] . '_' . $category_2['category_id'] . '_' . $category_3['category_id'])
					);

В общем просто надо убрать вывод третьего уровня. Честно сам всегда делаю методом тыка =) не программист я

спасибо за совет...попробую)

Share this post


Link to post
Share on other sites

спасибо за совет...попробую)

 

Смотрю на сайте не выводит, получилось или просто отключил?

Share this post


Link to post
Share on other sites

Смотрю на сайте не выводит, получилось или просто отключил?

да отлично спасибо! только теперь левое меню улетело в категориях...аррр весело будет)

Share this post


Link to post
Share on other sites

да отлично спасибо! только теперь левое меню улетело в категориях...аррр весело будет)

Хорошо, верни обратно тот код и закомментируй этот 

$level_3_data = array();
				
				$categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']);
				
			foreach ($categories_3 as $category_3) {
						$data = array(
						'filter_category_id'  => $category_3['category_id'],
						'filter_sub_category' => true	
					);

Share this post


Link to post
Share on other sites

 

Хорошо, верни обратно тот код и закомментируй этот 

$level_3_data = array();
				
				$categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']);
				
			foreach ($categories_3 as $category_3) {
						$data = array(
						'filter_category_id'  => $category_3['category_id'],
						'filter_sub_category' => true	
					);

ошибку вообще дает, я вернул все на место даже открыл 3 уровень в меню как было, все ровно...на 2 уровне нет левого меню, на 3ем есть...че за бред((

Share this post


Link to post
Share on other sites

ошибку вообще дает, я вернул все на место даже открыл 3 уровень в меню как было, все ровно...на 2 уровне нет левого меню, на 3ем есть...че за бред((

Ты код не менял? все по-старому? только закомментировал? все должно вернуться обратно 

Share this post


Link to post
Share on other sites

Ты код не менял? все по-старому? только закомментировал? все должно вернуться обратно 

да я только все комментил...

Share this post


Link to post
Share on other sites

да я только все комментил...

попробуй кеш сбросить. Хотя это точно не в этом дело.

Share this post


Link to post
Share on other sites

Слушай, ну у тебя все категории выводят левое меню. Зайди в саму категорию "

Все для смартфонов" и вкладка дизайн, посмотри что там выбрано. 

Share this post


Link to post
Share on other sites

 

Слушай, ну у тебя все категории выводят левое меню. Зайди в саму категорию "

Все для смартфонов" и вкладка дизайн, посмотри что там выбрано. 

 

уже проверил...лажа лажная я ваще в непонятках...если ты на сайте сам глянь...я думал что дело в добавлении товара...но нет...настройки то для категорий общие...в категории для смартфонов нет левого меню а для планшетов есть...ВТФ! О_О

 

вот товар вообще из категории убрал, все ровно нет меню

 

выбрано "default"

 

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

Edited by SEO Thresh

Share this post


Link to post
Share on other sites

уже проверил...лажа лажная я ваще в непонятках...если ты на сайте сам глянь...я думал что дело в добавлении товара...но нет...настройки то для категорий общие...в категории для смартфонов нет левого меню а для планшетов есть...ВТФ! О_О

 

вот товар вообще из категории убрал, все ровно нет меню

 

выбрано "default"

 

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

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

Share this post


Link to post
Share on other sites

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

я ленивый я код просто коменчу)))

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...