Новости Joomla

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором представлены новости, интервью, рецензии и есть небольшой магазин на JoomShopping. Возникла необходимость внутри Joomla статей вставлять упоминание релиза и кнопочку «добавить в корзину». Я взял плагин WT JShopping products anywhere Сергея Толкачева (@webtolkru). Плагин отображает название товара и ссылку. При помощи напильника, ИИ и навыков вёрстки появился Uikit макет для шаблонов на базе Yootheme Pro.Учитываается мобильная версия - телефоны и ipad.Кнопка добавления в корзину работает по Ajax и появляется всплывающее окно (Notification Bar от Uikit) с информацией.Пока это базовый вариант, требующий доведения до лоска, однако он уже работает и его можно применять на проектах.Взять макет можно здесь.А плагин вставки товаров в материалы можно забрать здесь.Приветствуется доведение до ума и оформление в виде PR.

WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla

WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla

👩‍💻 WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla.Пакет плагинов галереи изображений и видео для вставки в материалы и модули Joomla, а так же везде, где работают плагины группы content. Поддержка собственных макетов вывода для галерей. Смешанные фото+видео галереи. Плагин создан как замена Simple Image Gallery и поддерживает синтаксис {gallery}{/gallery}.👩‍💻 v.1.2.3. Что нового?- Обработка вступительного и полного текста для материалов Joomla. Добавлена обработка шорткодов в полном и вступительном текстах материалов Joomla.- Системные требования. Повышены минимальные требования до Joomla 5 и PHP 8.1.- Мелкие правки. Исправлена ошибка работы макета по умолчанию в плагине контента.- Joomla 6. Пакет плагинов успешно протестирован на Joomla 6.Страница расширения.GitHub расширенияJoomla Extensions Directory@joomlafeed#joomla #расширения

0 Пользователей и 1 Гость просматривают эту тему.
  • 0 Ответов
  • 3954 Просмотров
*

w00

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
В общем у меня есть компонент для импорта цен на товары, мне нужно что бы из того же excel файла заносилась еще одна колоночка с данными о наличии товара.
admin.vmimporttool
Код
<?php
/** PHPExcel */
require_once 'includes/PHPExcel.php';
/** PHPExcel_IOFactory */
require_once 'includes/PHPExcel/IOFactory.php';

class VMImportTool {
const SKU_COL_NAME = 'Art';
const PRICE_COL_NAME = 'Pr_Rn';

const PRODUCT_CURRENCY = 'RUB';

private static $excelReader = null;

function __construct() {
$this->excelReader = PHPExcel_IOFactory::createReader('Excel2007');
$this->excelReader->setReadDataOnly(true);
}

private $rowCount = 0;
private $importCount = 0;

public function uploadFile($file) {

$this->rowCount = 0;
$this->importCount = 0;

$objExcel = @$this->excelReader->load($file);
if(!$objExcel) return false;
$objWorksheet = @$objExcel->getActiveSheet();
if(!$objWorksheet) return false;

$rowIterator = $objWorksheet->getRowIterator();
$skuCol = false;
$priceCol = false;
$isFindHeader = false;
foreach ($rowIterator as $row) {
if(!$isFindHeader) {
$cellIterator = $row->getCellIterator();
foreach ($cellIterator as $cell) {
if($cell->getValue() == self::SKU_COL_NAME) {
$skuCol = $cellIterator->key();
$isFindHeader = true;
}
if($cell->getValue() == self::PRICE_COL_NAME) {
$priceCol = $cellIterator->key();
$isFindHeader = true;
}

}
if($isFindHeader && ($skuCol===false || $priceCol===false)) {
return false;
}

  }
else {
  $cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false); // This loops all cells
$sku = '';
$price = '';
foreach ($cellIterator as $cell) {
if($cellIterator->key() == $skuCol) {
$sku = strip_tags(trim($cell->getValue()));
}
if($cellIterator->key() == $priceCol) {
$price = round(floatval($cell->getValue()),2);
}
  }
  if($this->import($sku, $price)) $this->importCount++;

$this->rowCount++;
}
}
return $this->rowCount;
}

protected function import($sku, $price) {
if(!$sku || !$price) return false;
global $database;
$database->setQuery("SELECT product_id FROM #__vm_product WHERE product_sku='$sku'");
$product_id = $database->loadResult();
if($product_id) {
$database->setQuery("SELECT product_price_id FROM #__vm_product_price WHERE product_id=$product_id");
$product_price_id  = $database->loadResult();
$update_time = time();
if($product_price_id) {
$database->setQuery("UPDATE #__vm_product_price SET product_price=$price, product_currency='".self::PRODUCT_CURRENCY."', mdate=$update_time WHERE product_id=$product_id");
$database->query();
}
else {
$database->setQuery("SELECT shopper_group_id FROM #__vm_shopper_group WHERE `default`=1");
$shopper_group_id  = $database->loadResult();
$database->setQuery("INSERT INTO #__vm_product_price(product_id, product_price, product_currency,cdate,mdate,product_price_vdate,product_price_edate,shopper_group_id) VALUES($product_id,$price,'".self::PRODUCT_CURRENCY."',$update_time,$update_time,0,0,$shopper_group_id)");
$database->query();
}
return true;
}
return false;
}

public function getImportStat() {
return array('rows_imported' => $this->importCount, 'rows_count' => $this->rowCount);
}
}
?>
vmimporttool.class
Код
<?php
defined( '_VALID_MOS' ) or die( 'Доступ Запрещен' );

if($task == 'load') {
submitRequest();
}

echo '<form enctype="multipart/form-data" action="index2.php?option=' . $option .'" method="post" name="filename">';
echo '<input type="hidden" name="option" value="'.$option.'">';
echo '<input type="hidden" name="act" value="'.$act.'">';
echo '<input type="hidden" name="task" value="load">';
echo '<table class="adminform"><tr><th>Импорт данных о ценах продукции</th></tr>
<tr><td align="left">Файл : <input class="text_area" name="userfile" type="file" size="100"/><input class="button" type="submit" value="Загрузить" /></td></tr>
</table>';
echo '</form>';



/**
*/
function submitRequest(  ) {
global $mainframe;
require_once( $mainframe->getPath( 'class' ) );

// Check if file uploads are enabled
if (!(bool)ini_get('file_uploads')) {
showMessage( "Импорт данных невозможен, пока запрещена загрузка файлов.", 'Ошибка импорта данных');
return;
}


$userfile = mosGetParam( $_FILES, 'userfile', null );

if (!$userfile || $userfile[error] || !$userfile[tmp_name] ) {
showMessage( 'Выберите файл для импорта данных', 'Ошибка импорта данных');
return;
}

$importTool = new VMImportTool();

$result = $importTool->uploadFile($userfile[tmp_name]);

if ($result !== false) {
$stat = $importTool->getImportStat();
showMessage( 'Данных из файла ' . $userfile[name] . ' загружены в систему. Просмотренно ' . $stat[rows_count] .' строк, затронутто ' . $stat[rows_imported] . ' записей', 'Загрузка данных завершена' );
} else {
showMessage( 'Во время загрузки произошла ошибка. Убедитесь, что выбранный файл верен и попробуте еще раз.', 'Ошибка импорта данных' );
}
}

/**
* @param string
* @param string
* @param string
*/
function showMessage( $message, $title) {
echo '<br /><table class="adminheading"><tr><th class="install">'.$title.'</th></tr></table>';
echo '<table class="adminform"><tr><td align="left"><strong>'.$message.'</strong></td></tr></table><br />';
}
 ?>

Сам php не знаю, помогите доделать пожалуйста  !
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

1C УТ 8.x &lt;-&gt; VirtueMart по протоколу CommerceML

Автор Centoff

Ответов: 1315
Просмотров: 217233
Последний ответ 27.10.2020, 15:32:10
от Leo1986
Импорт из CSV товаров с типами и свойствами из

Автор Gruz

Ответов: 499
Просмотров: 151779
Последний ответ 23.02.2017, 15:15:42
от orchanin
Как импортировать файл XML в Joomla VirtueMart?

Автор Кот Смюлан

Ответов: 2
Просмотров: 5304
Последний ответ 14.07.2016, 18:40:24
от Berzerker
импорт товаров в YML Яндекс маркет

Автор zmeyx

Ответов: 5
Просмотров: 11587
Последний ответ 14.07.2016, 18:34:28
от Berzerker
Общие вопросы по j1.5.26+vm1.1.9+импорт из 1С

Автор alexzhimuk

Ответов: 2
Просмотров: 3460
Последний ответ 06.05.2016, 15:28:04
от alexzhimuk