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

Изменение страницы категории

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

Здравствуйте, установил себе OcStore 0.1.5. Сейчас немного ее допиливаю под себя.

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

пример http://fc-shop.spb.ru/index.php?route=product/category&path=36 над выводом товаров есть 3 подкатегории Турфы, Бутсы, Зальные - место этого хочется видеть полный список категорий с подкатегориями.

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


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

хочется видеть полный список категорий с подкатегориями.

т.е. абсолютно все категории/подкатегории магазина?

в каком виде?

сделать то можно все, что угодно. главное правильно поставить/озвучить задачу :)

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


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

да вывод абсолютно всех категорий и подкатегории.можно с картинками.

в каком виде? ну с html и css я достаточно хорошо дружу.

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


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

а с php как?

если знакомы то можете глянуть функцию (не только глянуть, но и скопировать в нужный контроллер, хотя так же достаточно снять гриф protected и обращаться прям в контроллер \module\category.php, ну это ладно сами решайте как удобнее)

protected function getCategories($parent_id, $current_path = '') { .. }
в файле ..\catalog\controller\module\category.php

для ее работы нужно загрузить

$this->load->model('catalog/category');
$this->load->model('tool/seo_url');

а сама функция вызывается

$this->getCategories($parent_id);
где $parent_id - ид родительской (в данном случае будет ид текущей категории)

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

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


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

Fix305 а вот до php курсов я так и не дошел )

поэтому если не сложно, можешь описать подробнее.

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


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

в ..\catalog\controller\product\category.php

в самый конец где кончается функция index () {

вообщем перед

}
?>
вставить

protected function getCategories($parent_id, $current_path = '') {
	$output = '';
	$results = $this->model_catalog_category->getCategories($parent_id);
	if ($results) { 
		$output .= '<ul>';
    	}
		
	foreach ($results as $result) {	
		if (!$current_path) {
			$new_path = $result['category_id'];
		} else {
			$new_path = $current_path . '_' . $result['category_id'];
		}
			
		$output .= '<li>';
		$children = '';
		$children = $this->getCategories($result['category_id'], $new_path);
		$output .= '<a href="' . $this->model_tool_seo_url->rewrite(HTTP_SERVER . 'index.php?route=product/category&path=' . $new_path)  . '">' . $result['name'] . '</a>';
		// $output .= $result['name'] .' - '. $result['image'] .' - '. $result['description']; // доступные переменные - имя - путь к картинке - описание категории. Есть и другие но они вряд ли вам пригодятся.
        	$output .= $children;
        	$output .= '</li>'; 
	}
 
	if ($results) {
		$output .= '</ul>';
	}
		
	return $output;
}

в этом же файле после

$category_info = $this->model_catalog_category->getCategory($category_id);
вставить

$this->data['categories_all'] = $this->getCategories($category_id, $this->request->get['path']);

в файл ..\catalog\view\theme\default\template\product\category.tpl

вставить

<?php if ($categories_all) { ?>
	<? echo $categories_all; ?>
<?php } ?>
криво-косо, но список подкатегории для данной категории выводится - оформление подредактируйте в функции getCategories(), я вывел необходимые переменные, они закомментированы. Оформление за вами)
  • +1 1

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


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

Спасибо большое, завтра днем попробую, и обязательно отпишусь.

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


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

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

У меня примерно такая структура.

Три основный категории: Аксессуары, Обувь, Одежда. В каждой будут подкатегории(в каких то уже есть в каких то нет)

Что сейчас происходит.

Когда я захожу в категорию Обувь, выводятся только подкатегории Зальные Турфы Бутсы.

Что бы хотелось видеть.

Когда я захожу в категорию Обувь(и любую другую категорию или подкатегорию), выводились опять Аксессуары-Подкатегории | Обувь-подкатегории | Одежда-подкатегории

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


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

попробуйте

$this->data['categories_all'] = $this->getCategories($category_id, $this->request->get['path']);
заменить на

$this->data['categories_all'] = $this->getCategories(0);
  • +1 1

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


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

вооот, так заработало как надо, спасибо большое!

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


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

И еще вопрос возник по поводу вывода картинки родительской категории

// $output .= $result['name'] .' - '. $result['image'] .' - '. $result['description']; // доступные переменные - имя - путь к картинке - описание категории. Есть и другие но они вряд ли вам пригодятся.

'. $result['image'] . - понятно

а путь для <img src="???"> откуда взять?

сделал в итоге навигацию более стандартно) тему можно закрывать.

Огромное спасибо всем кто помогал!

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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