Новости Joomla

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

👩‍💻 Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1. Это релиз, в который включены уже проверенные изменения, но ещё очень многие исправления и улучшения ждут своей очереди. Joomla следит за качеством и безопасностью своего кода и каждое изменение должно быть успешно протестировано как минимум ещё двумя участниками сообщества. Разработка Joomla ведётся на платформе GitHub.Филипп Уолтон (Philip Walton) - один из разработчиков, кто активно вносит свой вклад в ядро Joomla. Он уже несколько месяцев посвящает свои послеполуденные часы пятницы работе с Joomla и предлагает присоединиться к нему. 📆 Пятница, 30 мая 2025, с 15:00 до 17:00 по UTC (Лондон) - с 18:00 до 20:00 по Москве.В чате Google Meet Филипп готов помочь с тестированием тем, кто будет делать это в первый раз. А так же он подготовил список лёгких Pull Request, которые можно протестировать довольно быстро. Чем больше тестов будет проведено сейчас, тем меньше ошибок вылезет потом. На данный момент 148 (уже 147 на момент написания заметки) PR на GitHub Joomla ждут тестирования.👩‍💻 Open to all. All together.Также вам поможет сделать первые шаги это видео.GitHub JoomlaДа, это вечер пятницы. Но тестирование занимает порой минут 15, а доброе дело сделано. Просто убедитесь, что разработчик чего-то не пропустил и всё работает как ожидается.#joomla #joomla6 #community

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

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
Просмотров: 205045
Последний ответ 27.10.2020, 15:32:10
от Leo1986
Импорт из CSV товаров с типами и свойствами из

Автор Gruz

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

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

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

Автор zmeyx

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

Автор alexzhimuk

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