1 1 1 1 1 1 1 1 1 1 Рейтинг: 4.50 - 2 отзывов

При импорте товаров с помощью nrimportutf8, происходит автоматическая смена даты у всех товаров. И все старые товары, начинают выводиться на сайте, как новинки.

Как сделать, чтобы даты старых товаров не обновлялись, а у новых товаров новые даты писались?

Идем в:

administrator\components\com_jshopping\importexport\nrimportutf8\nrimportutf8.php 

Не обновлять дату при импорте товара в JoomShopping

И удаляем код:

$product->set("product_date_added", date("Y-m-d H:i:s"));

Все, теперь даты у старых товаров останутся прежними после экспорта-импорта.

 

Более точно делается так (Не копировать, а найти отличие от своих файлов, т.к. это от индивидуального сайта).

Файл \administrator\components\com_jshopping\importexport\nrexportutf8\nrexportutf8.php

<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport('joomla.filesystem.folder');

class IeNRExportUtf8 extends IeController{

function view(){
$jshopConfig = &JSFactory::getConfig();
$ie_id = JRequest::getInt("ie_id");
$_importexport = &JTable::getInstance('ImportExport', 'jshop'); 
$_importexport->load($ie_id);
$name = $_importexport->get('name');
$ie_params_str = $_importexport->get('params');
$ie_params = parseParamsToArray($ie_params_str);

$files = JFolder::files($jshopConfig->importexport_path.$_importexport->get('alias'), '.csv'); 
$count = count($files);

JToolBarHelper::title(_JSHOP_EXPORT. ' "'.$name.'"', 'generic.png' ); 
JToolBarHelper::custom("backtolistie", "back", 'browser.png', _JSHOP_BACK_TO.' "'._JSHOP_PANEL_IMPORT_EXPORT.'"', false );
JToolBarHelper::spacer();
JToolBarHelper::save("save", _JSHOP_EXPORT); 

include(dirname(__FILE__)."/list_csv.php"); 
}

function save(){
$mainframe =& JFactory::getApplication();

include_once(JPATH_COMPONENT_SITE."/lib/csv.io.class.php");

$ie_id = JRequest::getInt("ie_id");
if (!$ie_id) $ie_id = $this->get('ie_id');

$_importexport = &JTable::getInstance('ImportExport', 'jshop'); 
$_importexport->load($ie_id);
$alias = $_importexport->get('alias');
$_importexport->set('endstart', time()); 
$params = JRequest::getVar("params"); 
if (is_array($params)){ 
$paramsstr = parseArrayToParams($params);
$_importexport->set('params', $paramsstr);

$_importexport->store();

$ie_params_str = $_importexport->get('params');
$ie_params = parseParamsToArray($ie_params_str);

$jshopConfig = &JSFactory::getConfig();
$lang = &JSFactory::getLang();
$db = &JFactory::getDBO();

$query = "SELECT
prod.product_id,
prod.product_ean, 
prod.product_quantity, 
prod.product_date_added, 
prod.product_price,
prod.currency_id,
tax.tax_value as tax, 
prod.`".$lang->get('name')."` as name, 
cat.`".$lang->get('name')."` as cat_name, 
categ.category_id, 
prod.product_manufacturer_id
FROM `#__jshopping_products` AS prod
LEFT JOIN `#__jshopping_products_to_categories` AS categ USING (product_id)
LEFT JOIN `#__jshopping_categories` as cat on cat.category_id=categ.category_id
LEFT JOIN `#__jshopping_taxes` AS tax ON tax.tax_id = prod.product_tax_id 
GROUP BY prod.product_id";
$db->setQuery($query);
$products = $db->loadObjectList();

$data = array();
$head = array("ID товара","Код","Количество","Дата добавления","Цена","ID валюты","Налог","Имя категории","Имя товора", "ID категории", "ID Производителя");
$data[] = $head;

foreach($products as $prod){
$row = array();
$row[] = $prod->product_id;
$row[] = $prod->product_ean;
$row[] = $prod->product_quantity;
$row[] = $prod->product_date_added;
$row[] = $prod->product_price;
$row[] = $prod->currency_id; 
$row[] = $prod->tax;
$row[] = ($prod->cat_name);
$row[] = ($prod->name);
$row[] = ($prod->category_id);
$row[] = ($prod->product_manufacturer_id);
$data[] = $row; 
}


$filename = $jshopConfig->importexport_path.$alias."/".$ie_params['filename'].".csv";

$csv = new csv();
$csv->write($filename, $data);

if (!JRequest::getInt("noredirect")){
$mainframe->redirect("index.php?option=com_jshopping&controller=importexport&task=view&ie_id=".$ie_id, _JSHOP_COMPLETED);
}
}

function filedelete(){
$mainframe =& JFactory::getApplication();
$jshopConfig = &JSFactory::getConfig();
$ie_id = JRequest::getInt("ie_id");
$_importexport = &JTable::getInstance('ImportExport', 'jshop'); 
$_importexport->load($ie_id);
$alias = $_importexport->get('alias');
$file = JRequest::getVar("file");
$filename = $jshopConfig->importexport_path.$alias."/".$file;
@unlink($filename);
$mainframe->redirect("index.php?option=com_jshopping&controller=importexport&task=view&ie_id=".$ie_id);
}

}

?>

 

Файл \administrator\components\com_jshopping\importexport\nrimportutf8\nrimportutf8.php

<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport('joomla.filesystem.folder');

class IeNRImportUtf8 extends IeController{

function view(){
$jshopConfig = &JSFactory::getConfig();
$ie_id = JRequest::getInt("ie_id");
$_importexport = &JTable::getInstance('ImportExport', 'jshop'); 
$_importexport->load($ie_id);
$name = $_importexport->get('name'); 

JToolBarHelper::title(_JSHOP_IMPORT. ' "'.$name.'"', 'generic.png' ); 
JToolBarHelper::custom("backtolistie", "back", 'browser.png', _JSHOP_BACK_TO.' "'._JSHOP_PANEL_IMPORT_EXPORT.'"', false ); 
JToolBarHelper::spacer();
JToolBarHelper::save("save", _JSHOP_IMPORT); 

include(dirname(__FILE__)."/form.php"); 
}

function save(){
$mainframe =& JFactory::getApplication();

$jshopConfig = &JSFactory::getConfig(); 
require_once(JPATH_COMPONENT_SITE.'/lib/uploadfile.class.php');
require_once(JPATH_COMPONENT_SITE."/lib/csv.io.class.php");

$ie_id = JRequest::getInt("ie_id");
if (!$ie_id) $ie_id = $this->get('ie_id'); 

$lang = &JSFactory::getLang();
$db = &JFactory::getDBO();

$_importexport = &JTable::getInstance('ImportExport', 'jshop'); 
$_importexport->load($ie_id);
$alias = $_importexport->get('alias');
$_importexport->set('endstart', time());
$_importexport->store();

//get list tax
$query = "SELECT tax_id, tax_value FROM `#__jshopping_taxes`";
$db->setQuery($query); 
$rows = $db->loadObjectList();
$listTax = array();
foreach($rows as $row){
$listTax[intval($row->tax_value)] = $row->tax_id;
}
//

//get list category
$query = "SELECT category_id as id, `".$lang->get("name")."` as name FROM `#__jshopping_categories`";
$db->setQuery($query); 
$rows = $db->loadObjectList();
$listCat = array();
foreach($rows as $row){
$listCat[$row->name] = $row->id;

//

$_products = &JModel::getInstance('products', 'JshoppingModel'); 

$dir = $jshopConfig->importexport_path.$alias."/";

$upload = new UploadFile($_FILES['file']);
$upload->setAllowFile(array('csv'));
$upload->setDir($dir);
if ($upload->upload()){
$filename = $dir."/".$upload->getName();
@chmod($filename, 0777);
$csv = new csv();
$data = $csv->read($filename); 
if (is_array($data)){ 
foreach($data as $k=>$row){ 
if (count($row)<2 || $k==0) continue;

$tax_value = intval($row[6]); 
if (!isset($listTax[$tax_value])){
$tax = &JTable::getInstance('tax', 'jshop');
$tax->set('tax_name', $tax_value);
$tax->set('tax_value', $tax_value);
$tax->store();
$listTax[$tax_value] = $tax->get("tax_id"); 
}

$category_name = $row['7'];
if (!isset($listCat[$category_name]) && $category_name!=""){
$cat = &JTable::getInstance("category","jshop");
$query = "SELECT max(category_ordering) FROM `#__jshopping_categories`";
$db->setQuery($query); 
$ordering = $db->loadResult() + 1;
$cat->set($lang->get("name"), $category_name);
$cat->set("category_ordertype", 1);
$cat->set("products_sorting", 1);
$cat->set("products_sorting2", 1);
$cat->set("products_page", 12);
$cat->set("products_row", 1);
$cat->set("category_publish", 0);
$cat->set("category_ordering", $ordering); 
$cat->store();
$listCat[$category_name] = $cat->get("category_id"); 
}

$product =& JTable::getInstance('product', 'jshop');
$product_id = $row[0];
if ($product_id!=""){
$product->set("product_id", $product_id);
}
$product->set("product_ean", $row[1]);
$product->set("product_quantity", $row[2]);

$product_date_added = $row[3];
if ($product_date_added==""){
$product->set("product_date_added", date("Y-m-d H:i:s"));
}
$product->set("product_price", $row[4]);
$product->set("currency_id", $row[5]);
$product->set("product_tax_id", $listTax[$tax_value]); 
$product->set($lang->get("name"), ($row[8]));
$product->set("product_manufacturer_id", $row[10]);
$product->store();
if ($product_id==null){
$product_id = $product->get("product_id");
}
$category_id = $row[9];
if ($category_id==""){
$category_id = $listCat[$category_name];
}
if ($category_name!="" && $category_id){
$_products->setCategoryToProduct($product_id, array($category_id));
}

unset($product);
}
}
}else{ 
JError::raiseWarning("", _JSHOP_ERROR_UPLOADING);
}

if (!JRequest::getInt("noredirect")){
$mainframe->redirect("index.php?option=com_jshopping&controller=importexport&task=view&ie_id=".$ie_id, _JSHOP_COMPLETED);
}
}

}

?>

На практике, достаточно удалить код во втором файле, выделенный красным. И даты товаров не будут обновляться при импорте базы товаров для JoomShopping.

 

PS

Некоторые считают: "А что плохого в том, что при каждом импорте базы товаров в магазин, все даты будут обновляться?" 

Ответ: "Тогда, помимо прочего, перестанет верно функционировать сортировка в фильтре товаров, по дате."

Поэтому обратите на это внимание. И не забываем подключить "WebMoney в JoomShopping", это упростит работу с магазином.

Добавить комментарий

Защитный код
Обновить