Новости Joomla

Astroid обновился до версии 3.3.7!

Astroid обновился до версии 3.3.7!

Astroid — это мощный фреймворк для дизайнеров и разработчиков, позволяющий создавать адаптивные, быстрые и надежные веб-сайты и шаблоны на базе Joomla.

Главное в новой версии:

-   Исправлена загрузка файлов макетов

В предыдущем крупном релизе Astroid 3.3.6 были сделаны важные улучшения:

Основные моменты:

  • Улучшенный UI/UX в ключевых областях конфигурации
  • Повышенная стабильность и согласованность в Layout Builder и Form Builder
  • Исправления ошибок на основе отзывов сообщества
  • Улучшенная обработка визуальных эффектов, границ и шрифтов

Улучшения:

  • Обновленный UX Layout Builder
  • Улучшенный эффект предзагрузчика
  • Улучшенный стиль границ
  • Улучшенный UI/UX вкладки «Layout» в Template Options

Исправления ошибок:

  • Решены проблемы с некорректными динамическими значениями
  • Исправлен Color Transform при прокрутке
  • Устранены проблемы с работой Form Builder в Article Layout и Module Layout Builder
  • Исправлена проблема с созданием ненужных временных файлов при обработке шрифтов

Скачать: https://github.com/templaza/astroid-framework/releases/tag/v3.3.7

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

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

Evgg

  • Захожу иногда
  • 130
  • 2 / 0
Например, во вкладке "Товары на складе" есть колонка - Количество.
Как сделать ее редактируемой, наподобие колонки (порядок отображения) в "товарах", куда можно вводить числа и сохранять их сразу же (имею ввиду колонку A-Z и дискета).
Если кто-нибудь уже встречал подобное описание в других разделах, укажите пож-та, сам ничего не смог найти.
*

Evgg

  • Захожу иногда
  • 130
  • 2 / 0
Решение сделано, правил три файла, выкладываю их тут.
Редактируемая колонка "кол-во на складе" будет в списке товаров.
версия Вирта - 1.1.6

...\administrator\components\com_virtuemart\html\product.product_list.php
тут добавил поле в таблицу, заодно отключил поле "производитель"

...\administrator\components\com_virtuemart\classes\htmlTools.class.php
в этом файле добавил функции, относящиеся к выводу значений и кнопке "сохранить"

...\administrator\components\com_virtuemart\classes\vmAbstractObject.class.php
в этом файле добавлен алгоритм сохранения.

Кроме этого, нужно добавить строку в MySQL базу, (регистрируем функцию):
таблица -  jos_vm_function
выбираем вкладку insert и вводим значения:
function_id  - 195
module_id  - 1
function_name  - savestock
function_class  - vmAbstractObject.class
function_method  - handlestock
function_perms  - admin

жмем GO

должно получиться такое же поле как (id 171 у меня) "function_name - changeordering", но другие поля function_name и function_method.


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

[вложение удалено Администратором]
« Последнее редактирование: 10.02.2011, 08:53:35 от Evgg »
*

Evgg

  • Захожу иногда
  • 130
  • 2 / 0
Выглядит так.
(картинка в архиве)

[вложение удалено Администратором]
*

Evgg

  • Захожу иногда
  • 130
  • 2 / 0
что менял:

файл:
...\administrator\components\com_virtuemart\html\product.product_list.php
1. в строку 81 (тут и далее, номер строки в моей версии, у вас может отличаться)
$list  = "SELECT #__{vm}_category.category_name,#__{vm}_product.product_id,#__{vm}_product.product_name,#__{vm}_product.product_sku,#__{vm}_product.vendor_id,product_publish, product_list, product_full_image, product_thumb_image";

добавил, в конец - product_in_stock";
получилось, в конце строки - ...product_full_image, product_thumb_image, product_in_stock";

2. строки 262, 264 - закомментил, это строка, отвечающая за вывод шапки колонки "производитель", если она вам нужна, то "коменировать" ее не надо

//$columns[$VM_LANG->_('PHPSHOP_MANUFACTURER_MOD')] ="width=\"10%\"";  
} else {
//$columns[$VM_LANG->_('PHPSHOP_MANUFACTURER_MOD')] ="width=\"10%\"";  
}

3. после фигурной скопки за вышеуказанной строкой добавил строку
$columns[vmCommonHTML::getSaveStockButton( $num_rows, 'savestock' )] ='width="6%"';

(добавил перед строкой
$columns[$VM_LANG->_('PHPSHOP_REVIEWS')] ="width=\"10%\"";  )

4. закомментил строку  270, строка вывода шапки - "отзывы". Если вам нужна - не закомменчивайте.
//$columns[$VM_LANG->_('PHPSHOP_REVIEWS')] ="width=\"10%\"";

5. строку
$listObj->addCell( $ps_product->get_mf_name($db->f("product_id")) );  (
удаляем, но если нужна колонка "производитель" - удалять не надо.
Вместо этой строки или под нее (если не удаляли) добавляем строку:

$listObj->addCell( vmCommonHTML::getStockField( $db->f('product_in_stock') ) );

далее, блок, отвечающий за вывод  колонки - "отзывы". Если он нужен оставляем. У меня он удален целиком.

/** удалить или закомментить
$db_cat->query("SELECT count(*) as num_rows FROM #__{vm}_product_reviews WHERE product_id='".$db->f("product_id")."'");
      $db_cat->next_record();
      if ($db_cat->f("num_rows")) {
         $tmpcell = $db_cat->f("num_rows")." ";
         $tmpcell .= "<a href=\"".$_SERVER["PHP_SELF"]."?option=com_virtuemart&page=product.review_list&product_id=".$db->f("product_id")."\">";
         $tmpcell .= "[".$VM_LANG->_('PHPSHOP_SHOW')."]</a>";
      }
      else {
         $link = $sess->url( $_SERVER['PHP_SELF'].'?page=product.review_form&product_id='.$db->f('product_id'));
         $text = '['.$VM_LANG->_('VM_REVIEW_FORM_LBL').']';
         $tmpcell = " - <a href=\"$link\">$text</a>\n";
      }
      $listObj->addCell( $tmpcell );
      */

позже напишу остальные действия
*

Evgg

  • Захожу иногда
  • 130
  • 2 / 0
остальные действия:

файл:
...\administrator\components\com_virtuemart\classes\htmlTools.class.php

после строк (но можно, вроде, вставить в любое место файла)
   function getOrderingField( $ordering ) {
      return '<input type="text" name="order[]" size="5" value="'. $ordering .'" class="text_area" style="text-align: center" />';
   }

вставляем строки (две функции):
   function getSaveStockButton( $num_rows, $funcname='reorder') {  //Evg wrote
      global $mosConfig_live_site, $VM_LANG;
      $n = $num_rows-1;
      $html = '<a href="javascript: document.adminForm.func.value = \''.$funcname.'\'; saveorder( '.$n.' );">na sklade
            <img src="'.$mosConfig_live_site.'/administrator/images/filesave.png" border="0" width="16" height="16" alt="'.$VM_LANG->_('VM_SORT_SAVE_ORDER').'" /></a>';
      
      return $html;
   }
   function getStockField( $instock ) {  //Evg added similar as above
       return '<input type="text" name="orderr[]" size="5" value="'. $instock .'" class="text_area" style="text-align: center" />';
   }
   
в этом файле все.



файл:
...\administrator\components\com_virtuemart\classes\vmAbstractObject.class.php

перед строкой:
function changeOrdering( $table, $name, $k, $entity_name, $where='', $table2_name='' ) {

вставляем строки
      function handlestock( &$d ) {  //evg wrote
      global $vmLogger, $page, $VM_LANG;
      $where = '';
      $table2_name = '';
      
      if( $page == 'product.product_list' ) {
         //   $table2_name = "#__{vm}_product_category_xref";
            $table_name = "#__{vm}_product";
            $order_field_name = 'product_in_stock';
            $field_name = 'product_id';
            $entity_name = 'product_name';
         //   $where = '`category_id`='.intval($d['category_id']);
      }
      else {
         $vmLogger->err( $VM_LANG->_('VM_ABSTRACTOBJECT_REORDER_ERR_TYPE') );
         return false;
      }
      return $this->savestock( $table_name, $order_field_name, $field_name, $entity_name, $where, $table2_name );
   }


   function savestock( $table, $name, $k, $entity_name, $where='', $table2_name='' ) {
      global $db, $vmLogger;
      
            
      
      $i = 0;
      foreach( $_REQUEST[$k] as $item ) {
            $sql = "UPDATE `$table` SET `$name` =".intval($_REQUEST['orderr'][$i])." WHERE `$k`=".intval($item); //orderr was order
            $sql .= ($where ? "\n   AND $where" : '');
            $db->query( $sql );
            $i++;
         }
         $this->fixStock($table, $name, $k, $where );
      
      return true;
   }

   function fixStock( $table, $name, $k, $where ) {
      global $db, $vmLogger;
      
      $sql = "SELECT `$k`, `$name` ";
      $sql .= "FROM `$table` ";
   //   $sql .= "WHERE `$k`=".intval(@$_REQUEST[$k]);
      $sql .= ($where ? "\n   AND $where" : '');
      
      $db->query( $sql );
      $db->next_record();
      
      $this->$k = $db->f($k);
      $this->$name = $db->f($name);
   
      $query = "SELECT $k, `$name`"
      . "\n FROM `$table`"
      . ($where ? "\n   WHERE $where" : '')
      . "\n ORDER BY `$name`"

      ;

      $db->setQuery( $query );
      if (!($orders = $db->loadObjectList())) {
         $vmLogger->err( $db->getErrorMsg() );
         return false;
      }
      
      // first pass, compact the ordering numbers
      $n=count( $orders );      
      for ($i=0; $i < $n; $i++) {
         if ($orders[$i]->$name >= 0) {
            $orders[$i]->$name = $i+1;
         }
      }

      return true;
   }

Это три ф-ции, которые "синтезированы" из аналогичных, относящихся к порядку отображения (fixOrdering, changeOrdering, handleOrdering)
в этом файле все.

И на этом все. Предупрежу еще раз, что делалось по-дилетантски, поэтому, возможно, в функциях есть лишние действия, обращения к базе и тп. Уж не обессудьте.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не выводит списком Настраиваемое поле в VirtueMart 5.0

Автор ЛюдмилаМир

Ответов: 2
Просмотров: 3778
Последний ответ 25.08.2019, 16:27:04
от ЛюдмилаМир
Сортировка в админке VirtueMart

Автор r_sosnovskiy

Ответов: 2
Просмотров: 3117
Последний ответ 20.05.2018, 23:56:05
от r_sosnovskiy
Как дать доступ только к VirtueMart в админке?

Автор borro

Ответов: 3
Просмотров: 1746
Последний ответ 16.02.2018, 17:18:40
от Sandruk1
Как сделать импорт товара на VirtueMart?

Автор Усач911

Ответов: 0
Просмотров: 1230
Последний ответ 07.11.2017, 22:03:18
от Усач911
VirtueMart + авторизация в админке

Автор ponaroshku

Ответов: 1
Просмотров: 1098
Последний ответ 10.08.2015, 16:18:59
от ponaroshku