Новосибирск +7(983)

По всем вопросам :

Телеграм : @radgura

Компонент - Импорт товаров Dveri.com

Заказать компонент
Joomla 3.xС

Стоимость 3000


@radgura.ru
Адриена Лежена
63089
Новосибирск
Адриена Лежена
+7(983)
3067856
Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

Импорт товаров Dveri.com

Вы можете Заказать компонент 3000руб. RUB

Дата обновления:
2019-12-05
Версия:
1.0.0.1

Требования для работы

Версия Joomla:
3.x
Версия PHP:
5.6 +
Расширения PHP:
Нет дополнительных требований
JoomShopping
4x

Описание

Данный компонет позволяет импортировать товары компании Магазин-склад "BRAVO" , с сайта https://dveri.com

Импорт производится с использованием XML шаблона (максимально подробного): https://dveri.com/export/docs/

 

1.Вы самостоятельно настриавате время синхронизации, путем опроса страниц:

 Обновление файла: https://site.ru/index.php?option=com_rad_dvericom&view=dvericomdatas&task=readfile

 

2.Синхронизация настроена на ежесуточное обновление

 Реализована защита от избыточного наполнения, товар из прайс листа обновлятся только 1 раз в сутки

 

3.Обновляеются следующие данные:

 Категори - вы можете указать свою иерархию категорий, либо импортировать, как есть

  • Наименование товара может быть сокращеным, либо содержать наименование категории
  • Производитель - категорию товаров можно прикрепить к вашему производителю. К созжалению в каталоге dveri.com не указаны производители
  • Атрибуты и характеристики: цвет, размер, вес, метариал и тд. Атрибуты и значения будут перенесены в Joomshopping, при этом вы можете самостоятельно настроить взаимосвязь
  • Атрибут цвет и размер создается, как зависимый. Структура каталога dveri.com делит товары по цвету и размеру, на самостоятельные кденицы со своими стоямостями и параметрами
  • Сопутсвующие товары - вы можете произвести донастройку шаблона и дополнительно разделить сопутсвующие товары на комплектующие и сопутсвующие, как сделано на сайте dveri.com
  • Ценовая политика - вы указываете от какой цены (оптовая или розничная) производить расчет стоимости товара на вашем сайта,а также процент начисления, который задается по категории
  • Характеристика "Описание" дублирует текст в описание товара, но только в момент создания, т.е. описание товара вы можете выставлять свое
  • Характеристика "комплектации" - вы можете донастроить шаблон вашего сайта, для вывода комплектации дверей в отдельной вкладке
  • Учитывается скидка поставщика

 

Изменение шаблона для разделения сопутствующих

Для реалзации этого механизма в таблице #__jshopping_products_relations добавлено поле "is_complect", есди значение 1 - это комплектующие.

Вам необходимо создать 2 файла первый вызов картоки товара:

/components/com_jshopping/templates/шаблон/product/related_dveri.php
defined('_JEXEC') or die('Restricted access');
$in_row = $this->config->product_count_related_in_row;
?>
<?php if (count($this->related_prod)){?>
<div class="jshop_list_product">
<div class = "jshop list_related">
<table class="relatedtable"><tbody >
<?php foreach($this->related_prod as $k=>$product)
if ($product->is_complect==1)
{include(dirname(__FILE__)."/../".$this->folder_list_products."/product_dveri.php");}; ?>
</tbody></table>
</div>
<?php }?>

Второй шаблон карточки товара:

components/com_jshopping/templates/шаблон/list_products/product_dveri.php
defined('_JEXEC') or die();
print $product->_tmp_var_start;
$db = JFactory::getDbo();
$db->setquery("select count(*) as cc,min(price) as price from #__jshopping_products_attr where product_id='".$product->product_id."' and count>0 and price>0 ");$attr1_product=$db->loadobject();
$isattr1=0;$attr1price=0;
if (isset($attr1_product->cc) and $attr1_product->cc>0) {$isattr1=1;$attr1price=$attr1_product->price;} else {$isattr1=0;$attr1price=0;}
?>
<tr class="relateddveri">
<td class="item-image-cont">
<img class="relatedimg" src="/<?php print $product->image?>" alt="<?php print htmlspecialchars($product->name);?>" title="<?php print htmlspecialchars($product->name);?>" />
</td>
<td class="relatedname" >
<a class="item-title" href="/<?php print $product->product_link?>" style="line-height: 25px;"><span><?php print $product->name?></span></a>
<?php if (trim($product->manufacturer_code)!='') echo '<br><small>'._JSHOP_MANUFACTURER_CODE.' : '.$product->manufacturer_code.'</small>';?>
<?php if ($product->manufacturer->name){?><small class="manufacturer_name"><?php print _JSHOP_MANUFACTURER;?>: <span><?php print $product->manufacturer->name?></span></small><?php }?>
<div class="mobile">
<?php if ($product->_display_price){?>
<?php /*if ($this->config->product_list_show_price_description) print _JSHOP_PRICE.": ";*/
if ($isattr1==0 or $attr1price==0) {?>
<span class="strong"><?php print $product->product_price;?></span>
<span class="one_prod p5"><?php print str_replace("0","",formatprice('0')); echo(JText::_('PRODUCT_ONE_PR'));?> </span>
<?php } else {
?>
<span class="strong"><?php print number_format($attr1price,0,'',' ');?></span>
<span class="one_prod p6"><?php print str_replace("0","",formatprice('0')); echo(JText::_('PRODUCT_ONE_PR'));?> </span>
<?php }?>
<?php } ?>
<br><small>
<?php
if ($this->config->product_list_show_qty_stock)
if(sprintQtyInStock($product->product_quantity) < 1) echo( JText::_('JGLOBAL_ZAKAZ')); else echo( JText::_('PRODUCT_INSTOCK').'');
?>
</small>
</div>
<div class="mobile">
<?php if ($product->product_quantity <=0 && !$this->config->hide_text_product_not_available){?>
<div class="not_available"><?php print _JSHOP_PRODUCT_NOT_AVAILABLE;?></div>
<?php }?>
<?php print $product->_tmp_var_bottom_price;?>
<div class="price_extra_info">
<?php if ($this->config->show_tax_in_product && $product->tax > 0){?>
<span class="taxinfo"><?php print productTaxInfo($product->tax);?></span>
<?php }?>
<?php if ($this->config->show_plus_shipping_in_product){?>
<span class="plusshippinginfo"><?php print sprintf(_JSHOP_PLUS_SHIPPING, $this->shippinginfo);?></span>
<?php }?>
</div>
<?php if ($product->basic_price_info['price_show']){?>
<div class="base_price">
<?php print _JSHOP_BASIC_PRICE?>:
<?php if ($product->show_price_from && !$this->config->hide_from_basic_price) print _JSHOP_FROM;?>
<span><?php print formatprice($product->basic_price_info['basic_price'])?> / <?php print $product->basic_price_info['name'];?></span>
</div>
<?php }?>
<?php if ($this->config->product_list_show_weight && $product->product_weight > 0){?>
<div class="productweight">
<?php print _JSHOP_WEIGHT?>:
<span><?php print formatweight($product->product_weight)?></span>
</div>
<?php }?>
<?php if ($product->delivery_time != ''){?>
<div class="deliverytime">
<?php print _JSHOP_DELIVERY_TIME?>:
<span><?php print $product->delivery_time?></span>
</div>
<?php }?>
<div class="buttons related" style="position:initial;">
<?php if ($product->buy_link){?>
<a class="btn btn-success button_buy" href="/<?php print $product->buy_link?>">
<?php echo(JText::_('PRODUCT_ADD_CART')); ?>
</a>
<?php }?>
</div>
</div>
</td>
<td class="nomobile">
<?php if ($product->_display_price){?>
<?php /*if ($this->config->product_list_show_price_description) print _JSHOP_PRICE.": ";*/
if ($isattr1==0 or $attr1price==0) {?>
<span class="strong"><?php print $product->product_price;?></span>
<span class="one_prod p5"><?php print str_replace("0","",formatprice('0')); echo(JText::_('PRODUCT_ONE_PR'));?> </span>
<?php } else {
?>
<span class="strong"><?php print number_format($attr1price,0,'',' ');?></span>
<span class="one_prod p6"><?php print str_replace("0","",formatprice('0')); echo(JText::_('PRODUCT_ONE_PR'));?> </span>
<?php }?>
<?php } ?>
<br><small>
<?php
if ($this->config->product_list_show_qty_stock)
if(sprintQtyInStock($product->product_quantity) < 1) echo( JText::_('JGLOBAL_ZAKAZ')); else echo( JText::_('PRODUCT_INSTOCK').'');
?>
</small>
</td>
<td class="nomobile">
<?php if ($product->product_quantity <=0 && !$this->config->hide_text_product_not_available){?>
<div class="not_available"><?php print _JSHOP_PRODUCT_NOT_AVAILABLE;?></div>
<?php }?>
<?php print $product->_tmp_var_bottom_price;?>
<div class="price_extra_info">
<?php if ($this->config->show_tax_in_product && $product->tax > 0){?>
<span class="taxinfo"><?php print productTaxInfo($product->tax);?></span>
<?php }?>
<?php if ($this->config->show_plus_shipping_in_product){?>
<span class="plusshippinginfo"><?php print sprintf(_JSHOP_PLUS_SHIPPING, $this->shippinginfo);?></span>
<?php }?>
</div>
<?php if ($product->basic_price_info['price_show']){?>
<div class="base_price">
<?php print _JSHOP_BASIC_PRICE?>:
<?php if ($product->show_price_from && !$this->config->hide_from_basic_price) print _JSHOP_FROM;?>
<span><?php print formatprice($product->basic_price_info['basic_price'])?> / <?php print $product->basic_price_info['name'];?></span>
</div>
<?php }?>
<?php if ($this->config->product_list_show_weight && $product->product_weight > 0){?>
<div class="productweight">
<?php print _JSHOP_WEIGHT?>:
<span><?php print formatweight($product->product_weight)?></span>
</div>
<?php }?>
<?php if ($product->delivery_time != ''){?>
<div class="deliverytime">
<?php print _JSHOP_DELIVERY_TIME?>:
<span><?php print $product->delivery_time?></span>
</div>
<?php }?>
<div class="buttons related" style="position:initial;">
<?php if ($product->buy_link){?>
<a class="btn btn-success button_buy" href="/<?php print $product->buy_link?>">
<?php echo(JText::_('PRODUCT_ADD_CART')); ?>
</a>
<?php }?>
</div>
</td>
</tr>

В шаблоне товара нужно переопределить вызов сопутствующих:

/components/com_jshopping/templates/шаблон/product/product_default.php

Добавить запрос сопутствующих и комплекьующих:

$db = JFactory::getDbo();
$db->setquery("select count(*) from #__jshopping_products_relations where is_complect<>1 or is_complect is null and product_id='".$this->product->product_id."' ");$relations=$db->loadresult();
$db->setquery("select count(*) from #__jshopping_products_relations where is_complect=1 and product_id='".$this->product->product_id."'");$relations_dveri=$db->loadresult();

 Вывод в отдельных вкладках:

<?php if ($relations_dveri>0) {?>
<div style="" class="tab-10 resp-tab-content" aria-labelledby="tab_item-9">
<div class="facts">
<ul class="tab_list">
<li>
<?php
print $this->_tmp_product_html_before_related;
include(dirname(__FILE__)."/related_dveri.php");
?>
</li>
</ul>
</div>
</div>
<?php }?>
<?php if ($relations>0) {?>
<div style="" class="tab-11 resp-tab-content" aria-labelledby="tab_item-10">
<div class="facts">
<ul class="tab_list">
<li>
<?php
print $this->_tmp_product_html_before_related;
include(dirname(__FILE__)."/related.php");
?>
</li>
</ul>
</div>
</div>
<?php }?>

Вывод отдельного списка характеристик "Комплектация"

Необходимо в настройки JoomShopping добавить параметр, который будет хранить списк характеристик с комплектующими

administrator/components/com_jshopping/config.xml

Добавить поле:

<field name="complektextra" type="sql" label="Характеристики для вкладки комплектация" query="SELECT id, `name_ru-RU` as title FROM #__jshopping_products_extra_fields" key_field="id" value_field="title" multiple="multiple"/>

В настрйоках JoomShopping вам нужно скрыть  характеристики, которые будут считаться комплектацией, и в шаблоне товарова добавить их вывод:

/components/com_jshopping/templates/шаблон/product/product_default.php
$compo_params = JComponentHelper::getParams('com_jshopping');
$complektextra = $compo_params->get('complektextra', array(0));
$exmass=array();$exmassval=array();$product_mass=array();
if (count($complektextra)>0)
{
$db->setquery("select id,`name_ru-RU` as exname from #__jshopping_products_extra_fields where id in (".implode(',',$complektextra).") ");$exmassdb=$db->loadobjectlist();
foreach($exmassdb as $ex) $exmass[$ex->id]=$ex->exname;
$db->setquery("select id,`name_ru-RU` as exname,field_id from #__jshopping_products_extra_field_values where field_id in (".implode(',',$complektextra).") ");$exmassdb=$db->loadobjectlist();
foreach($exmassdb as $ex) $exmassval[$ex->field_id][$ex->id]=$ex->exname;
foreach($exmass as $key=>$ex)
{
$field='extra_field_'.$key;
if (isset($this->product->$field) and $this->product->$field>0) $product_mass[$key]=$this->product->$field;
}
}

Вывод в отдельной вкладке:

<?php if (count($product_mass)>0) {?>
<div style="" class="tab-9 resp-tab-content" aria-labelledby="tab_item-8">
<div class="facts">
<ul class="tab_list">
<li>
<div class="haracteristics">
<div class="extra_fields">
<div class="block_efg">
<?php
foreach($product_mass as $key=>$val)
{
if (isset($exmassval[$key][$val])) echo '<div class="extra_fields_el extra_fields_el'.$key.'"><span class="extra_fields_name">'.$exmass[$key].'</span> <span class="extra_fields_value">'.$exmassval[$key][$val].'</span></div>';
}?>
</div>
</div>
</div>
</li>
</ul>
</div>
</div>
<?php }?>

 

Демонстрация

Комментарии (0)

Здесь ещё нет оставленных комментариев.

Оставьте свой комментарий

  1. Добавление комментария от гостя.
Вложения (0 / 3)
Share Your Location

Как с нами связаться

По всем вопросам пишите  

Телеграм: @radgura

OnLine заказ

Отправить сообщение

Нажимая на кнопку «Отправить сообщение», я соглашаюсь:
* с условиями публичной оферты
* обработку моих персональных данных


RAD компоненты

Please publish modules in offcanvas position.