Перейти к содержанию
Официальный форум поддержки Simpla

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


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

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

 

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}    {/section}{$category->name|escape}</option>
									{category_select categories=$category->subcategories  level=$level+1}
							{/foreach}
						{/function}
						{category_select categories=$categories}
					</select>
				</li>	
			</ul>
		</div>
	</div>

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

Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 81
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

Изображения в теме

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

 

post-3879-0-52236400-1380597762_thumb.jpg

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

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

 

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

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

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

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

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты
  • 5 месяцев спустя...
  • 5 месяцев спустя...

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

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

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

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

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

 

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

 

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

// Добавим в список колонок свойства товаров 
$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);

 

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

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

 

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

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

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

 

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

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

Ссылка на сообщение
Поделиться на другие сайты
  • 4 месяца спустя...
  • 3 недели спустя...

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

Изменено пользователем keks
Ссылка на сообщение
Поделиться на другие сайты

В 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';

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

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

Если выбрать:


<option value='0'>Все категории</option>
то экспорт прекращает работу и ничего не формирует. Изменено пользователем Noxter
Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...

А скажем если мне надо разбить товар не по категориям, а по брендам?

Могу индивидуально написать функционал за оплату.
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

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