Новости Joomla

Как тестировать 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

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

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

12pendelei

  • Новичок
  • 9
  • 0 / 0
Под товаром в VirtueMart 2.0.6 имеется описание, а как вывести описание категорий, так же под ними ??
*

ivan01

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
  Также под ними это как? Если в самой категории, то 1) в вирте поле описание в категории собственно пишите свое описание. 2) В шаблоне категории вставляем куда нужно <?php echo $this->category->category_description ; ?>
 п.с. на картинке было бы понятнее что требуется
*

12pendelei

  • Новичок
  • 9
  • 0 / 0
Спасибо, что откликнулись, есть сайт http://abazhur-market.ru, есть категории например http://abazhur-market.ru/prikolnye-budilniki нужно под каталогом товаров добавить описание категории, как например описание под товаром на этой странице http://abazhur-market.ru/kogda-darim/na-23-fevralja/myshka-mashinka-detail. Каким образом это сделать можно ? ваш метод попробовал но не получилось.
*

ivan01

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
 А что вы делали? Описание в самой категории заполнили?

п.с. Вообще в дефолтном шаблоне категории описание выводится и так, только сверху, а не снизу.
Вот <?php echo $this->category->category_description; ?> и надо вставлять(перенести) в Вашем шаблоне категории туда, где необходимо выводить описание категории.

В Вашем случае можно после <div id="bottom-pagination"> создать

Спойлер
[свернуть]
« Последнее редактирование: 23.07.2012, 23:51:41 от ivan01 »
*

12pendelei

  • Новичок
  • 9
  • 0 / 0
вот мой дефолт, я не смог найти "<div id="bottom-pagination">" и соответственно куда его вставить.  Сам файл меняю в папке /http/components/com_virtuemart/views/category/tmpl. Версия Joomla 2.5.6 версия wirtuemart 2.0.8е

<?php
/**
*
* Show the products in a category
*
* @package   VirtueMart
* @subpackage
* @author RolandD
* @author Max Milbers
* @todo add pagination
* @link http://www.virtuemart.net
* @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* VirtueMart is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* @version $Id: default.php 6053 2012-06-05 12:36:21Z Milbo $
*/

//vmdebug('$this->category',$this->category);
vmdebug('$this->category '.$this->category->category_name);
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die('Restricted access');
JHTML::_( 'behavior.modal' );
/* javascript for list Slide
  Only here for the order list
  can be changed by the template maker
*/
$js = "
jQuery(document).ready(function () {
   jQuery('.orderlistcontainer').hover(
      function() { jQuery(this).find('.orderlist').stop().show()},
      function() { jQuery(this).find('.orderlist').stop().hide()}
   )
});
";

$document = JFactory::getDocument();
$document->addScriptDeclaration($js);

/*$edit_link = '';
if(!class_exists('Permissions')) require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'permissions.php');
if (Permissions::getInstance()->check("admin,storeadmin")) {
   $edit_link = '<a href="'.JURI::root().'index.php?option=com_virtuemart&tmpl=component&view=category&task=edit&virtuemart_category_id='.$this->category->virtuemart_category_id.'">
      '.JHTML::_('image', 'images/M_images/edit.png', JText::_('COM_VIRTUEMART_PRODUCT_FORM_EDIT_PRODUCT'), array('width' => 16, 'height' => 16, 'border' => 0)).'</a>';
}

echo $edit_link; */
if ( empty($this->keyword) ) {
   ?>
   <div class="category_description">
   <?php echo $this->category->category_description ; ?>
   </div>
   <?php
}

/* Show child categories */

if ( VmConfig::get('showCategory',1) and empty($this->keyword)) {
   if ($this->category->haschildren) {

      // Category and Columns Counter
      $iCol = 1;
      $iCategory = 1;

      // Calculating Categories Per Row
      $categories_per_row = VmConfig::get ( 'categories_per_row', 3 );
      $category_cellwidth = ' width'.floor ( 100 / $categories_per_row );

      // Separator
      $verticalseparator = " vertical-separator";
      ?>

      <div class="category-view">

      <?php // Start the Output
      if(!empty($this->category->children)){
      foreach ( $this->category->children as $category ) {

         // Show the horizontal seperator
         if ($iCol == 1 && $iCategory > $categories_per_row) { ?>
         <div class="horizontal-separator"></div>
         <?php }

         // this is an indicator wether a row needs to be opened or not
         if ($iCol == 1) { ?>
         <div class="row">
         <?php }

         // Show the vertical seperator
         if ($iCategory == $categories_per_row or $iCategory % $categories_per_row == 0) {
            $show_vertical_separator = ' ';
         } else {
            $show_vertical_separator = $verticalseparator;
         }

         // Category Link
         $caturl = JRoute::_ ( 'index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $category->virtuemart_category_id );

            // Show Category ?>
            <div class="category floatleft<?php echo $category_cellwidth . $show_vertical_separator ?>">
               <div class="spacer">
                  <h2>
                     <a href="<?php echo $caturl ?>" title="<?php echo $category->category_name ?>">
                     <?php echo $category->category_name ?>
                     <br />
                     <?php // if ($category->ids) {
                        echo $category->images[0]->displayMediaThumb("",false);
                     //} ?>
                     </a>
                  </h2>
               </div>
            </div>
         <?php
         $iCategory ++;

      // Do we need to close the current row now?
      if ($iCol == $categories_per_row) { ?>
      <div class="clear"></div>
      </div>
         <?php
         $iCol = 1;
      } else {
         $iCol ++;
      }
   }
   }
   // Do we need a final closing row tag?
   if ($iCol != 1) { ?>
      <div class="clear"></div>
      </div>
   <?php } ?>
</div>

<?php }
}
?>
<div class="browse-view">
    <?php
if (!empty($this->keyword)) {
   ?>
   <h3><?php echo $this->keyword; ?></h3>
   <?php
} ?>
       <?php if ($this->search !==null ) { ?>
          <form action="<?php echo JRoute::_('index.php?option=com_virtuemart&view=category&limitstart=0&virtuemart_category_id='.$this->category->virtuemart_category_id ); ?>" method="get">

          <!--BEGIN Search Box --><div class="virtuemart_search">
          <?php echo $this->searchcustom ?>
          <br />
          <?php echo $this->searchcustomvalues ?>
          <input name="keyword" class="inputbox" type="text" size="20" value="<?php echo $this->keyword ?>" />
          <input type="submit" value="<?php echo JText::_('COM_VIRTUEMART_SEARCH')?>" class="button" onclick="this.form.keyword.focus();"/>
          </div>
                <input type="hidden" name="search" value="true" />
                <input type="hidden" name="view" value="category" />

          </form>
      <!-- End Search Box -->
      <?php } ?>

<?php // Show child categories
if (!empty($this->products)) {
?>
         <div class="orderby-displaynumber">
            <div class="width70 floatleft">
               <?php echo $this->orderByList['orderby']; ?>
               <?php echo $this->orderByList['manufacturer']; ?>
            </div>
            <div class="width30 floatright display-number"><?php echo $this->vmPagination->getResultsCounter();?><br/><?php echo $this->vmPagination->getLimitBox(); ?></div>
            <div class="vm-pagination">
               <?php echo $this->vmPagination->getPagesLinks(); ?>
               <span style="float:right"><?php echo $this->vmPagination->getPagesCounter(); ?></span>
            </div>

         <div class="clear"></div>
         </div> <!-- end of orderby-displaynumber -->

<h1><?php echo $this->category->category_name; ?></h1>

<?php
// Category and Columns Counter
$iBrowseCol = 1;
$iBrowseProduct = 1;

// Calculating Products Per Row
$BrowseProducts_per_row = $this->perRow;
$Browsecellwidth = ' width'.floor ( 100 / $BrowseProducts_per_row );

// Separator
$verticalseparator = " vertical-separator";

// Count products
$BrowseTotalProducts = 0;
foreach ( $this->products as $product ) {
   $BrowseTotalProducts ++;
}

// Start the Output
foreach ( $this->products as $product ) {

   // Show the horizontal seperator
   if ($iBrowseCol == 1 && $iBrowseProduct > $BrowseProducts_per_row) { ?>
   <div class="horizontal-separator"></div>
   <?php }

   // this is an indicator wether a row needs to be opened or not
   if ($iBrowseCol == 1) { ?>
   <div class="row">
   <?php }

   // Show the vertical seperator
   if ($iBrowseProduct == $BrowseProducts_per_row or $iBrowseProduct % $BrowseProducts_per_row == 0) {
      $show_vertical_separator = ' ';
   } else {
      $show_vertical_separator = $verticalseparator;
   }

      // Show Products ?>
      <div class="product floatleft<?php echo $Browsecellwidth . $show_vertical_separator ?>">
         <div class="spacer">
            <div class="width30 floatleft center">
                <?php if (!empty($product->images[0]) )
                  $image = $product->images[0]->displayMediaThumb('class="featuredProductImage" border="0"',false) ;
               else $image = ''; ?>
                  <?php echo JHTML::_('link', JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id='.$product->virtuemart_product_id.'&virtuemart_category_id='.$product->virtuemart_category_id), $image,array('title' => $product->product_name) ); ?>


                  <!-- The "Average Customer Rating" Part -->
                  <?php if ($this->showRating) { ?>
                  <span class="contentpagetitle"><?php echo JText::_('COM_VIRTUEMART_CUSTOMER_RATING')?>:</span>
                  <br />
                  <?php
                  // $img_url = JURI::root().VmConfig::get('assets_general_path').'/reviews/'.$product->votes->rating.'.gif';
                  // echo JHTML::image($img_url, $product->votes->rating.' '.JText::_('COM_VIRTUEMART_REVIEW_STARS'));
                  // echo JText::_('COM_VIRTUEMART_TOTAL_VOTES').": ". $product->votes->allvotes; ?>
                  <?php } ?>

                  <?php
                  if (!VmConfig::get('use_as_catalog') and !(VmConfig::get('stockhandle','none')=='none') && (VmConfig::get ( 'display_stock', 1 )) ){?>
<!--                   if (!VmConfig::get('use_as_catalog') and !(VmConfig::get('stockhandle','none')=='none')){?> -->
                  <div class="paddingtop8">
                     <span class="vmicon vm2-<?php echo $product->stock->stock_level ?>" title="<?php echo $product->stock->stock_tip ?>"></span>
                     <span class="stock-level"><?php echo JText::_('COM_VIRTUEMART_STOCK_LEVEL_DISPLAY_TITLE_TIP')?></span>
                  </div>
                  <?php }?>
            </div>

            <div class="width70 floatright">

               <h2><?php echo JHTML::link($product->link, $product->product_name); ?></h2>

                  <?php // Product Short Description
                  if(!empty($product->product_s_desc)) { ?>
                  <p class="product_s_desc">
                  <?php echo shopFunctionsF::limitStringByWord($product->product_s_desc, 40, '...')?>
                  </p>
                  <?php } ?>

               <div class="product-price marginbottom12" id="productPrice<?php echo $product->virtuemart_product_id ?>">
               <?php
               if ($this->show_prices == '1') {
                  if( $product->product_unit && VmConfig::get('vm_price_show_packaging_pricelabel')) {
                     echo "<strong>". JText::_('COM_VIRTUEMART_CART_PRICE_PER_UNIT').' ('.$product->product_unit."):</strong>";
                  }
                  if(empty($product->prices) and VmConfig::get('askprice',1) and empty($product->images[0]->file_is_downloadable) ){
                     echo JText::_('COM_VIRTUEMART_PRODUCT_ASKPRICE');
                  }
                  //todo add config settings
                  if( $this->showBasePrice){
                     echo $this->currency->createPriceDiv('basePrice','COM_VIRTUEMART_PRODUCT_BASEPRICE',$product->prices);
                     echo $this->currency->createPriceDiv('basePriceVariant','COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT',$product->prices);
                  }
                  echo $this->currency->createPriceDiv('variantModification','COM_VIRTUEMART_PRODUCT_VARIANT_MOD',$product->prices);
                  echo $this->currency->createPriceDiv('basePriceWithTax','COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX',$product->prices);
                  echo $this->currency->createPriceDiv('discountedPriceWithoutTax','COM_VIRTUEMART_PRODUCT_DISCOUNTED_PRICE',$product->prices);
                  echo $this->currency->createPriceDiv('salesPriceWithDiscount','COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT',$product->prices);
                  echo $this->currency->createPriceDiv('salesPrice','COM_VIRTUEMART_PRODUCT_SALESPRICE',$product->prices);
                  echo $this->currency->createPriceDiv('priceWithoutTax','COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX',$product->prices);
                  echo $this->currency->createPriceDiv('discountAmount','COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT',$product->prices);
                  echo $this->currency->createPriceDiv('taxAmount','COM_VIRTUEMART_PRODUCT_TAX_AMOUNT',$product->prices);
               } ?>
               </div>

               <p>
               <?php // Product Details Button
               echo JHTML::link($product->link, JText::_('COM_VIRTUEMART_PRODUCT_DETAILS'), array('title' => $product->product_name,'class' => 'product-details'));
               ?>
               </p>

            </div>
         <div class="clear"></div>
         </div><!-- end of spacer -->
      </div> <!-- end of product -->
   <?php

   // Do we need to close the current row now?
   if ($iBrowseCol == $BrowseProducts_per_row || $iBrowseProduct == $BrowseTotalProducts) {?>
   <div class="clear"></div>
   </div> <!-- end of row -->
      <?php
      $iBrowseCol = 1;
   } else {
      $iBrowseCol ++;
   }

   $iBrowseProduct ++;
} // end of foreach ( $this->products as $product )
// Do we need a final closing row tag?
if ($iBrowseCol != 1) { ?>
   <div class="clear"></div>

<?php
}
?>
<!-- /div removed valerie -->
   <div class="vm-pagination"><?php echo $this->vmPagination->getPagesLinks(); ?><span style="float:right"><?php echo $this->vmPagination->getPagesCounter(); ?></span></div>
<!-- /div removed valerie -->
<?php } elseif ($this->search !==null ) echo JText::_('COM_VIRTUEMART_NO_RESULT').($this->keyword? ' : ('. $this->keyword. ')' : '')
?>
</div><!-- end browse-view -->
*

ivan01

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Так Вам нужно править шаблон по другому пути - корневая папка joomlы\templates\название вашего шабона\html\com_virtuemart\category\название шаблона категории.

Если там несколько файлов, смотрите в настройках virtuemart  какой шаблон задействован (virtuemart -> настройки -> шаблоны -> макет категории).

*

12pendelei

  • Новичок
  • 9
  • 0 / 0
спасибо большое, все получилось.
*

12pendelei

  • Новичок
  • 9
  • 0 / 0
еще один вопрос, как в страницу с товаром вставить меню слева (аккордион)
вот например здесь есть http://abazhur-market.ru/prikolnye-budilniki, а сюда надо такое меню надо http://abazhur-market.ru/komy/muzhchine/kruzhka-off-on-detail
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как вывести слово От рядом с ценой?

Автор art22

Ответов: 4
Просмотров: 1780
Последний ответ 07.04.2024, 11:19:12
от art22
Limit показать на страницу + пагинация pagination ломают отображение товаров

Автор kreker92

Ответов: 0
Просмотров: 2763
Последний ответ 08.11.2021, 18:02:40
от kreker92
Открытие карточки товара VirtueMart3 в новом окне из категории

Автор djed9

Ответов: 2
Просмотров: 2980
Последний ответ 16.07.2021, 09:06:35
от djed9
Вывести товары из подкатегории в категорию

Автор xlite

Ответов: 78
Просмотров: 32082
Последний ответ 08.03.2021, 10:06:58
от kisBoss
Добавить ссылку на товар вместо 'Выбрать Вариант' на странице категории

Автор Akeksandr

Ответов: 0
Просмотров: 2776
Последний ответ 21.02.2021, 19:18:44
от Akeksandr