Jump to content
Sign in to follow this  
oligarhist

Как создать в магазине категорию услуг

Recommended Posts

Идея в том. чтобы в Open Cart создать витрину услуг или сделать словарь (энциклопедию). Есть товары, у которых есть цена и все остальное.
А есть услуги (или статьи), которые удобно заводить в магазине также как и товары. Но у них не должно быть цены, кнопки купить, сравнить и все остальное.

 

Здесь есть две задачи:

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

2. Чтобы когда посетитель кликал по услуге, он попадал в ее карточку без цены и остальных атрибутов, присущих товарам. 

Я на эту тему нашел два текста.

 

Первый - как вообще из Open Cart убрать цены. Хороший пост на Хабре "Переделываем OpenCart в CMS сайта-визитки, или OpenCart «витрина» style" - http://habrahabr.ru/sandbox/64228/

Второй - как создать новую схему в Open Cart http://s-engineer.ru/dobavlyaem-novuyu-stranicu-sxemu-v-opencart/

 

Я эти два способа скрестил. То есть создал схему A и прописал ее в контроллере и View (файл TPL) по статье номер 1. Для клонирования использовал файлы category - php и tpl

Затем я вырезал из tpl представление цены. 

 

И вот не работает. То есть в категории услуги отображаются с ценой. 

 

Может быть есть модуль. который решает мою задачу или кто-то делал сам это все? Не могу сказать, что разобрался как контроллер PHP обменивается данными с моделью и View. И вероятно решение проблемы именно здесь. 

 

 

 

Share this post


Link to post
Share on other sites

как вариант - если у вас товары-услуги имеют в качестве главной категории какую-то или какие-то конректно категории - то скройте вот так:

 ниже кусок из vqmod файла

	<!-- МОДЕЛЬ -->
	<file name="catalog/model/catalog/category.php">
		<operation error="log"> 
			<search position="before"><![CDATA[
				public function getCategory($category_id) {
			]]></search>
			<add><![CDATA[
				public function getProductMainCategory($product_id) {
				$query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . $product_id . "' ORDER BY main_category DESC LIMIT 1");
				return (isset($query->row['category_id']) ? $this->getCategory($query->row['category_id']) : false);
				}
			]]></add>
		</operation>
	</file>

	<!-- КОНТРОЛЛЕР -->
	<file path="catalog/controller/product/" name="category.php">
		<operation error="skip">
			<search position="before"><![CDATA[
				$this->data['products'][] = array(
			]]></search>
			<add><![CDATA[
				$main_category_info = $this->model_catalog_category->getProductMainCategory($result['product_id']);
			]]></add>
		</operation>
		<operation error="skip">
			<search position="after"><![CDATA[
				'product_id'  => $result['product_id'],
			]]></search>
			<add><![CDATA[
				'main_category'       => ($main_category_info ? $main_category_info['category_id'] : false), 
			]]></add>
		</operation>
	</file>

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

<?php if (!$product['main_category']=='1') { ?>
 тут код кнопки и цена
<?php }?>

в таваре так
 

	<file path="catalog/controller/product/" name="product.php">
		<operation error="skip" info=""> 
			<search position="before"><![CDATA[
				$this->load->model('tool/image');
			]]></search>
			<add><![CDATA[
				$categories = $this->model_catalog_product->getCategories($product_id);
				if ($categories)
				$categories_info = $this->model_catalog_category->getCategory($categories[0]['category_id']);
				$this->data['main_category_id'] = $categories_info['category_id'];
			]]></add>
		</operation>
	</file>

и во вьюхе товара оберните так
 

<?php if (!$main_category_id=='1') { ?>

<?php }?>

Share this post


Link to post
Share on other sites

В базе сделайте поле в таблице product и назовите как угодно. В админке в карточку товара прикрутите чекбокс типа да\нет. В карточке товара проверяйте условие, если чекбокс говорит да - выводится товар, если нет - услуга

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
You are posting as a guest. If you have an account, please sign in.
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.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.