Новости Joomla

Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list

👩‍💻 Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list.При работе над плагином возникла необходимость указать стандартный набор из нескольких элементов стандартного поля списка. И хотелось указать их в стандартном же атрибуте default для полей. Когда это нужно?Когда Ваши пользователи устанавливают плагин и НЕ заходят в настройки - в коде вы можете использовать значения по умолчанию с помощью класса Registry (писал об этом ранее) и всегда быть уверенным, что хоть какие-то жизненно необходимые параметры к вам придут всегда. 🧐 Но как сделать то же самое для интерфейса админки?Пользователя нужно направлять, предлагать очевидный работоспособный сценарий для начала, а дальше он уже сам разберется. Когда человек заходит в параметры свежеустановленного плагина в Form ещё нет данных и параметры по умолчанию выставляются из атрибутов default в xml-полях.
<field name="showdesc" type="radio"                       label="PLG_CFI_PARAM_SHOWDESC"                       class="btn-group btn-group-yesno"                       default="1">                    <option value="0">JNO</option>                    <option value="1">JYES</option>                </field>
Здесь по умолчанию будет включено "Да". И если пользователь не переключит параметр, то при сохранении мы ожидаемо получим "да" в params плагина.Для поля списков type=&quot;list&quot; можно указать значение по умолчанию и многие знают, что его можно указать только одно.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default="id"                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
Но у нас поле с множественным выбором (атрибут multiple) и хотелось бы указать несколько значений по умолчанию...Оказывается, так можно сделать. Для этого в атрибуте default нужно указать json с нужными параметрами в виде {int}key : {string} value.Например, default='{"0":"id","1":"title"}'.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default='{"0":"id","1":"title"}'                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
⚠️ Обратите внимание на кавычки! Поскольку json_decode не понимает одинарные кавычки собственно json нужно писать с двойными, а значение для атрибута default писать в одинарные.🙏 За подсказанное решение огромное спасибо участникам нашего сообщества - разработчикам Дмитрию Васюкову (@fictionlabs) и Игорю Бердичевскому (@septdir).@joomlafeed#joomla #разработка #webdev #development

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

lucky-design

  • Новичок
  • 1
  • 0 / 0
Добрый вечер вчера установил вторую версию VirtueMart и столкнулся с такой проблемой при заходе в категорию вижу товары но у них картинки очень маленькие как их увеличить.поискал в настройках не нашел заранее благодарен за ответ.
*

DeLamundus

  • Новичок
  • 3
  • 0 / 0
В настройках Virtuemart: Настройки>Сайт-"Ширина мини-изображения" и "Высота мини-изображения".
Вроде действует только на новые картинки, старые перезалить прийдётся.
*

skiv86

  • Осваиваюсь на форуме
  • 46
  • 0 / 0
изменением в настройках тут не поможешь. вероятно гдето в шаблоне прописано
*

murysoff

  • Новичок
  • 2
  • 0 / 0
в components/com_virtuemart/views/category/tmpl/default.php
можно поменять класс (в CSS прописана ширина классам от 0-100%)
Код
<div class="width80 floatleft">
на что то другое на пример "width90 floatleft"
или можете сделать как у меня
http://kindle-tablet.ru/index.php/ebook
скачав http://narod.ru/disk/39610729001/%D0%90%D1%80%D1%85%D0%B8%D0%B2.zip.html
второй файл сюда public_html/kindle-tablet.ru/components/com_virtuemart/assets/css
*

dmitroff

  • Осваиваюсь на форуме
  • 15
  • 3 / 1
в components/com_virtuemart/views/category/tmpl/default.php
можно поменять класс (в CSS прописана ширина классам от 0-100%)
Код
<div class="width80 floatleft">
Здравствуйте.
Можно детальней где найти CSS.
перерыл все, этого не могу найти.
Спасибо.
*

Дмитрий Ф.

  • Захожу иногда
  • 52
  • 3 / 0
Я решил это у себя следующим образом:
1. увеличил изображение с 90х90 до 200х200 (придется заново заливать все изображения)
2. уменьшил кол-во товаров в строке (судя по вашей картинке, у вас 3-4 в строке, сделайте например 2)
*

dmitroff

  • Осваиваюсь на форуме
  • 15
  • 3 / 1
У вас может стоит не VM 2, т.к. тут этими изменениями не поможешь. Это где-то в коде прописано.
*

Дмитрий Ф.

  • Захожу иногда
  • 52
  • 3 / 0
Стоит VirtueMart 2.0.2. все работает.
*

dmitroff

  • Осваиваюсь на форуме
  • 15
  • 3 / 1
Спасибо. Разобрался, а то ковырял не там, а оказалось все намного проще.
*

Vaocha

  • Новичок
  • 3
  • 1 / 0
Спасибо. Разобрался, а то ковырял не там, а оказалось все намного проще.
Уважаемый Dmitroff,разобрался?поделись,пожалуйста..такая же история:после того как открываешь категорию-отображается малипусенькое изображение...   если не сложно,распиши что и где поменять......   пожалуйста))
*

dmitroff

  • Осваиваюсь на форуме
  • 15
  • 3 / 1
Уважаемый Dmitroff,разобрался?поделись,пожалуйста..такая же история:после того как открываешь категорию-отображается малипусенькое изображение...   если не сложно,распиши что и где поменять......   пожалуйста))

В настройках магазина изменить кол-во товаров в строке, у меня тогда было 4 были маленькие, изменил на 2, размер меня порадовал. Думал где-то в коде, оказалось все проще.
*

Vaocha

  • Новичок
  • 3
  • 1 / 0
Не,спасибо,конечно но у меня не прокатывает..   :(
*

Vaocha

  • Новичок
  • 3
  • 1 / 0
Не,спасибо,конечно но у меня не прокатывает..   :(
Ура!Метод тыка помог!$Browsecellwidth = ' width'.floor ( 150 / $BrowseProducts_per_row ); вот в этой строке вместо 100 пишем 150 ну или 200 чтобы еще больше стало..   путь к строке  \components\com_virtuemart\views\category\tmpl\default.php
*

WGT

  • Новичок
  • 8
  • 1 / 0
В стилях файла шаблона пропишите

.browse-view .row .product .spacer img, .related-products-view .row .product .spacer img {height: auto; width: нужная ширина картинки;}
*

Sable

  • Захожу иногда
  • 95
  • 0 / 0
а в обратную сторону работает ? Уменьшить картинку можно ? В карточке товара у меня ОЧЕНЬ большая картинка , даже не влазит в поле и ее обрезает по краю ( т.е.  ее даже целиком не видно )
*

dmitroff

  • Осваиваюсь на форуме
  • 15
  • 3 / 1
а в обратную сторону работает ? Уменьшить картинку можно ? В карточке товара у меня ОЧЕНЬ большая картинка , даже не влазит в поле и ее обрезает по краю ( т.е.  ее даже целиком не видно )

Вставте в
components/com_virtuemart/assets/css/vmsite-ltr.css
вот это
.medium-image{height:100%; width:100%;}
должно помочь.
*

Sable

  • Захожу иногда
  • 95
  • 0 / 0
Можно уточнить : втавить вместо чего-то? просто добавить ?  в любое место?
*

dmitroff

  • Осваиваюсь на форуме
  • 15
  • 3 / 1
Просто вставьте в любое место, только height можете поставить auto, а то в хроме у меня в высоту фото было всего размера.
*

Sable

  • Захожу иногда
  • 95
  • 0 / 0
ура  :D  помогло ...спасибо
*

Sable

  • Захожу иногда
  • 95
  • 0 / 0
После обновления VM2 все слетело. Как бы сделать ,чтоб эта правка размеров картинок не зависила от обновлений ? Поправить 1 раз и забыть.
*

Galina23

  • Новичок
  • 2
  • 0 / 0
подскажите как в  VirtueMart 2 в категории когда картинки выводятся с делать название товара над картинкой а цену и кнопку подробная инфа под картинкой
*

lakshmi

  • Захожу иногда
  • 188
  • 5 / 0
подскажите как в  VirtueMart 2 в категории когда картинки выводятся с делать название товара над картинкой а цену и кнопку подробная инфа под картинкой
Вам необходимо править файл /components/com_virtuemart/views/category/tmpl/default.php и также еще CSS стили.
*

sandman81

  • Новичок
  • 7
  • 0 / 0
Скажите кто знает как сделать чтобы в категории при нажатии на фото товара срабатывал не lightbox а просто была ссылка на вход в товар, смотрел в шаблоне там вместо ссылок стоят ПХП-операторы:(
*

jouser

  • Захожу иногда
  • 124
  • 9 / 0
присоединяюсь к предыдущему вопросу
*

alexj69

  • Захожу иногда
  • 244
  • 28 / 0
  • Думать надо!!!
Так же интересует, как убрать Lightbox из категории и наоборот, добавить его к изображению в карточке товара.
*

milan

  • Новичок
  • 4
  • 0 / 0
Внесу изменения в файл категории, а изменения на сайте не появляются  :o Что только не делаю.
Помогите, пожалуйста.
*

qwaker

  • Новичок
  • 2
  • 1 / 0
Добрый день, по теме о том, как сделать изображение товара в категории ссылкой.
Сам этим озадачился, сделал , но проблема в том, что при каждом обновлении Вирта приходится это(да и ещё много чего) допиливать.
components\com_virtuemart\views\category\tmpl\default.php
Код:
      // Show Products ?>
      <div class="product floatleft<?php echo $Browsecellwidth . $show_vertical_separator ?>">
         <div class="spacer">
            <div class="width100 floatleft center">
               <?php /** @todo make image popup */
                     echo $product->images[0]->displayMediaThumb('class="browseProductImage" border="0" title="'.$product->product_name.'" ',true,'class="modal"');
                  ?>
Меняем на
Код:
      // Show Products ?>
      <div class="product floatleft<?php echo $Browsecellwidth . $show_vertical_separator ?>">
         <div class="spacer">
            <div class="width100 floatleft center">
<a href="<?php echo $product->link; ?>"a>
  <?php /** @todo make image popup */
    echo $product->images[0]->displayMediaThumb('class="browseProductImage" border="0" title="'.$product->product_name.'" ',false,'class="modal"');
  ?>
Вот и всё, всем спасибо
*

onyeami

  • Захожу иногда
  • 59
  • 0 / 0
перепробовала все вышеизложенные способы, но поменять размер картинок не получается. Подскажите, пожалуйста, что исправить в коде? Хочется, чтобы картинки были по 300 шириной. Вот код из файла default.php для категории

Код
<h2 class="contentheading"><span class="title"><?php echo $this->category->category_name; ?></span></h2>
<?php
/* Show child categories */

if ( VmConfig::get('showCategory',1) ) {
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 -->
<?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 ) {



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



// Show Products ?>
<div class="product floatleft<?php echo $Browsecellwidth . $show_vertical_separator ?>">
<div class="spacer">
<div class="width30 floatleft center">
<h3 class="browseProductTitle"><?php echo JHTML::link($product->link, $product->product_name); ?></h3><br />
<?php /** @todo make image popup */
echo JHTML::link($product->link, $product->images[0]->displayMediaThumb('class="browseProductImage" border="0" title="'.$product->product_name.'" ',false,'class="modal"'));
?>


<!-- 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">



<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>

</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 -->

а это ссылка на страничку http://suportar.bplaced.net/index.php/krossovki
*

onyeami

  • Захожу иногда
  • 59
  • 0 / 0
и еще подскажите, как сделать, чтобы при наведении мыши страница не ерзала противно....

*

onyeami

  • Захожу иногда
  • 59
  • 0 / 0
вопрос решен. в админке надо было убрать галку с
Использовать VirtueMart CSS
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как убрать в производителях (модуль manufacturer) категории сверху

Автор sm_ph

Ответов: 7
Просмотров: 5956
Последний ответ 21.07.2025, 11:41:02
от Елeна
Не открываются некоторые карточки товаров

Автор Vatag

Ответов: 5
Просмотров: 4035
Последний ответ 04.12.2022, 13:26:04
от Evgen Kulibin
Модуль SJ Filter for VirtueMart - только 30 custom fields

Автор Alex_gs

Ответов: 0
Просмотров: 2424
Последний ответ 08.08.2022, 15:09:59
от Alex_gs
Как вывести категории с фото и подкатегориями?

Автор sergspb

Ответов: 0
Просмотров: 2429
Последний ответ 18.05.2022, 15:01:55
от sergspb
Вывод всех товаров на Главную

Автор Akeksandr

Ответов: 1
Просмотров: 2619
Последний ответ 28.12.2021, 14:48:23
от Akeksandr