Перейти к содержимому


Фото
* * * * * 6 голосов

Экспорт товаров с выбором категорий

Экспорт товаров

  • Чтобы отвечать, сперва войдите на форум
58 ответов в теме

#1 osben

osben
  • Фрилансер
  • 773 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:UA, RU

Опубликовано 28.09.2013 - 14:37

Добрый день. Сегодня утром обратился клиент и попросил сделать в экспорте товаров с выбором категорий. Вот решил поделится.

 

simpla/ajax/export.php
 
 

После

		$this->db->query('SET NAMES cp1251');

 

добавить

		$category_id = $this->request->get('category_id');
		$category_children = array();
		if(!empty($category_id))
		{
			$category = $this->categories->get_category((int)$category_id);
			if (isset($category))
				$category_children = $category->children;
		}

 

 

 

заменить

foreach($this->products->get_products(array('page'=>$page, 'limit'=>$this->products_count)) as $p)

 

 на

foreach($this->products->get_products(array('page'=>$page, 'category_id'=>$category_children, 'limit'=>$this->products_count)) as $p)	

 

 

заменить

		$total_products = $this->products->count_products();
		
		if($this->products_count*$page < $total_products)
			return array('end'=>false, 'page'=>$page, 'totalpages'=>$total_products/$this->products_count);
		else
			return array('end'=>true, 'page'=>$page, 'totalpages'=>$total_products/$this->products_count);	

 на 

		$total_products = $this->products->count_products(array('category_id'=>$category_children));
		
		if($this->products_count*$page < $total_products)
			return array('end'=>false, 'page'=>$page, 'category_id'=>$category_children, 'totalpages'=>$total_products/$this->products_count);
		else
			return array('end'=>true, 'page'=>$page, 'category_id'=>$category_children, 'totalpages'=>$total_products/$this->products_count);

 

simpla/ExportAdmin.php

 

После 
 

	public function fetch()
	{

добавить 
 

		$categories = $this->categories->get_categories_tree();
		$this->design->assign('categories', $categories);

simpla/design/html/export.tpl
 

после 

$("#start").hide('fast');

добавить 

$("#product_categories").hide('fast');

или заменить на 

$("#start, #product_categories").hide('fast');

 

 

 

после 

page = typeof(page) != 'undefined' ? page : 1;

добавить

category_id = $('select[name="category_id"]').find('option:selected').val();

 

 

 

 

заменить

data: {page:page},

на 

data: {page:page, category_id:category_id},

 

 

 

 

после 

<div id='progressbar'></div>

добавить

	<div id="product_categories" {if !$categories}style='display:none;'{/if}>
		<label>Категория</label>
		<div>
			<ul>
				<li>
					<select name="category_id">
						<option value='0'>Все категории</option>
						{function name=category_select level=0}
							{foreach from=$categories item=category}
									<option value='{$category->id}'>{section name=sp loop=$level}&nbsp;&nbsp;&nbsp;&nbsp;{/section}{$category->name|escape}</option>
									{category_select categories=$category->subcategories  level=$level+1}
							{/foreach}
						{/function}
						{category_select categories=$categories}
					</select>
				</li>	
			</ul>
		</div>
	</div>

П.С. Если нашли ошибки, пишите.
Спасибо можно говорить и в денежном эквиваленте  :)



#2 osben

osben
  • Фрилансер
  • 773 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:UA, RU

Опубликовано 28.09.2013 - 14:41

В архиве все измененные файлы

Прикрепленные файлы:



#3 artbe

artbe
  • Пользователь
  • 169 сообщений
  • Заказчик
  • Откуда:Россия

Опубликовано 01.10.2013 - 06:22

На версии © 2013 Simpla 2.2.3, не видит этого селекта выбора категорий. Если убрать display:none, вывод селекта происходит. Но опять же не выводятся категории товара.

 

Прикрепленные файлы:

  • Прикрепленный файл  export.JPG   30,84К   309 раз скачано


#4 osben

osben
  • Фрилансер
  • 773 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:UA, RU

Опубликовано 01.10.2013 - 12:46

На версии © 2013 Simpla 2.2.3, не видит этого селекта выбора категорий. Если убрать display:none, вывод селекта происходит. Но опять же не выводятся категории товара.


А у Вас категории есть? или Вы не поправили файл simpla/ExportAdmin.php



#5 SV911

SV911
  • Пользователь
  • 289 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 01.10.2013 - 12:56

Класс!!! Спасибо!

Я как то недавно задавал подобный вопрос на форуме как сделать такую выгрузку, чтобы всю базу не лопатило - но озвученная одним умельцем сумма за такую доделку в 70$ меня отпугнула )))



#6 osben

osben
  • Фрилансер
  • 773 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:UA, RU

Опубликовано 01.10.2013 - 16:46

Класс!!! Спасибо!

Я как то недавно задавал подобный вопрос на форуме как сделать такую выгрузку, чтобы всю базу не лопатило - но озвученная одним умельцем сумма за такую доделку в 70$ меня отпугнула )))

70$ наверное многовато, можете мне оплатить сколько считаете нужно в качестве стимула что то еще интересно сделать как будет настроение :)



#7 Александр Маттэ

Александр Маттэ
  • Пользователь
  • 113 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:2.x
  • Откуда:Екатеринбург

Опубликовано 08.03.2014 - 09:19

Спасибо! Очень помогло!  А то 15к товаров и сервер прерывал, ни как не мог сделать экспорт



#8 oriolun

oriolun
  • Пользователь
  • 19 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x

Опубликовано 11.03.2014 - 17:10

Спасибо, работает :)



#9 DraveMor

DraveMor
  • Пользователь
  • 66 сообщений
  • Верстка, Заказчик
  • Версия CMS:2.x
  • Откуда:Приднестровье, Тирасполь

Опубликовано 31.08.2014 - 01:15

Подскажите пожалуйста, как можно реализовать массовый импорт товаров? То бишь все категории сразу. 



#10 koteyka

koteyka

    Фрилансер

  • Пользователь
  • 1 266 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Днепропетровск

Опубликовано 31.08.2014 - 10:03

Выбираешь "Все категории"



#11 DraveMor

DraveMor
  • Пользователь
  • 66 сообщений
  • Верстка, Заказчик
  • Версия CMS:2.x
  • Откуда:Приднестровье, Тирасполь

Опубликовано 31.08.2014 - 13:04

Выбираешь "Все категории"

Дело в том, что у меня нет выбора этого варианта. 



#12 koteyka

koteyka

    Фрилансер

  • Пользователь
  • 1 266 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Днепропетровск

Опубликовано 31.08.2014 - 14:56

Значить что-то не так сделал. Самый первый пункт при выборе категорий должен быть "Все категории".



#13 xilt

xilt
  • Фрилансер
  • 32 сообщений
  • Программирование
  • Версия CMS:2.x

Опубликовано 29.10.2014 - 18:40

Дополнение по свойствам . После выполнения вышеуказанных действий.

 

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

 

Для этого заменим это:

// Добавим в список колонок свойства товаров 
$features = $this->features->get_features();

На это:

		// Добавим в список колонок свойства товаров только для выбранной категории
		$filter = array();
		if(!empty($category_id))
		{
			$category = $this->categories->get_category((int)$category_id);
			if (isset($category))
				$filter['category_id'] = $category->id;
		}
		$features = $this->features->get_features($filter);

 



#14 Денис

Денис
  • Пользователь
  • 39 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 02.12.2014 - 11:49

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

 

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



#15 osben

osben
  • Фрилансер
  • 773 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x
  • Откуда:UA, RU

Опубликовано 02.12.2014 - 17:14

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

 

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

Вам нужно в api/Product.php сделать в методе get_products свой ордер который будет отвечать за категории и использовать его в simpla/ajax/export.php



#16 filth

filth
  • Пользователь
  • 345 сообщений
  • Пользователь

Опубликовано 25.04.2015 - 16:22

А кто подскажет как можно ещё и бренд выбрать для нужной категории???



#17 websah

websah
  • Пользователь
  • 138 сообщений
  • Дизайн, Заказчик, Пользователь
  • Откуда:kiev

Опубликовано 01.05.2015 - 01:29

CТАВЛЮ + АВТОРУ СПАСИБО



#18 Maxman

Maxman
  • Пользователь
  • 13 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Минеральные Воды

Опубликовано 01.05.2015 - 14:47

Спасибо!!! Все работает как часы!



#19 keks

keks
  • Пользователь
  • 69 сообщений
  • Версия CMS:2.x
  • Откуда:Русь матушка

Опубликовано 18.05.2015 - 11:48

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


Изменено: keks, 18.05.2015 - 11:48


#20 koteyka

koteyka

    Фрилансер

  • Пользователь
  • 1 266 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Днепропетровск

Опубликовано 18.05.2015 - 15:02

В simpla/ajax/export.php вместо

private $filename = 'export.csv';

напиши

$category_id = $this->request->get('category_id');
   if(!empty($category_id))
   {
       $category = $this->categories->get_category((int)$category_id);
   }
private $filename = $category->name.'.csv';

Это топорно (лишний запрос будет), но не критично.







Также с меткой «Экспорт товаров»

0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых