VM 2.x Настраиваемые поля на странице категории.

в файле administrator\components\com_virtuemart\helpers\html.php
в строчке public static function input($name,$value,$class='class="inputbox"',$readonly='',$size='37',$maxlength='255',$more=''){
изменить значение 255 на нужное Вам! (255 - ограничение символов)
Сделал как здесь указано. Поле увеличилось, но при сохранении обрезается текст, такое ощущение, что где то еще ограничение, не подскажите в каком файле, все облазил уже...
 
Сделал как здесь указано. Поле увеличилось, но при сохранении обрезается текст, такое ощущение, что где то еще ограничение, не подскажите в каком файле, все облазил уже...
Я уже точно не помню, но видимо нужно увеличить размер еще и в самой базе данных VM.
 
а мне, вот это решение помогло:
Правда, есть вопросы по отображению нескольких однотипных доп. полей с разными значениями и поля "Изображение". Так же, данный метод, не работает для вывода списков... :(

Люди, кто как выводит списки, однотипные поля и изображения?
 
Подскажите пожалуйста!, как увеличить количество символов в поле в настраиваемых полях? Поменял как советовали
в файле administrator\components\com_virtuemart\helpers\html.php
в строчке public static function input($name,$value,$class='class="inputbox"',$readonly='',$size='37',$maxlength='255',$more=''){
изменить значение 255 на нужное Вам! (255 - ограничение символов)
Количество символов которое можно ввести действительно изменилось,только при сохранении все равно остается ограниченное количество символов?!!
 
Подскажите пожалуйста!, как увеличить количество символов в поле в настраиваемых полях? Поменял как советовали
Количество символов которое можно ввести действительно изменилось,только при сохранении все равно остается ограниченное количество символов?!!

Значит в базе данных поле значения "настраивамого поля" ограничено в 255 символов (или менее)
Соответственно нужно еще в базе найти это поле и увеличить значение количества сохраняемых символов
 
Добрый день. Немножко оффтоп, но все же вопрос касаемый проверки кастомных полей. Выводятся 2 кастомных поля, которые пользователь должен заполнить. Как сделать эти поля обязательными? Т.е. если поле не заполнено, то товар бы в корзину не добавлялся, ну и выделялось бы цветом где нужно заполнить.
Не все товары имеют эти кастомные поля.

Проблему решил, нашел небольшой плагинчик который расширяет возможности стандартного inputtext
Для просмотра ссылки Войди или Зарегистрируйся, может кому поможет.
 
Последнее редактирование:
а мне, вот это решение помогло:
Правда, есть вопросы по отображению нескольких однотипных доп. полей с разными значениями и поля "Изображение". Так же, данный метод, не работает для вывода списков... :(

Люди, кто как выводит списки, однотипные поля и изображения?
Я сделал через позиции для custom field

Код:
 <?php if ($product->customfields) {
  foreach ($product->customfields as $field){
        if( $field->layout_pos=='fuel'){ //вывод позиции "fuel" ?>
    <div class="fuel">
    <?php echo $field->display; ?>
    </div>
  <?php  }
}

?>
в настройках полей указываю позицию по умолчанию в данном примере fuel
 
Вывел дочерние товары таблицей по способу, указанному здесь Для просмотра ссылки Войди или Зарегистрируйся. На странице товара все вывелось хорошо. На странице категории таблица с дочерними товарами правильная только для первого товара в списке, а для всех остальных дублируется первая. Пример - Для просмотра ссылки Войди или Зарегистрируйся (J 2.5, VM 2.0.20b).
Вот код из customfield.php
Код:
case 'A':
$options = array();
$session = JFactory::getSession();
$virtuemart_category_id =
  $session->get('vmlastvisitedcategoryid', 0, 'vm');
$productModel = VmModel::getModel('product');
$selected = JRequest::getInt('virtuemart_product_id');
$uncatChildren = $productModel->getUncategorizedChildren($selected);
foreach($uncatChildren as $k =>$child ){
$options[] = array( 'value' => JRoute::_
('index.php?option=com_virtuemart&view=productdetails&virtuemart_category_id=
'.$virtuemart_category_id.'&virtuemart_product_id='.$child['virtuemart_product_id']),
'id'=>$child['virtuemart_product_id'],
'text' =>$child['product_name'],
'desc' =>$child['product_desc'],
'articul' =>$child['product_sku'],
'tovarimage' =>$child['file_url_thumb'],
'tovarmodimage' =>$child['file_url'],
'tovarprice' =>$child['product_price'],
'NDS' =>$child['product_price']/100*20,
'tovarpriceNDS' =>$child['product_price']/100*20+$child['product_price'] );}
$res=array();
$table='<div class="yermak_cf"><table width="100%">
<tr>
<th align="center">Артикул</th>
<th align="left" colspan="2" width="40%" style="padding-left: 8px;">Наименование предложения</th>
<th align="center">Цена без НДС</th>
<th align="center">НДС (20%)</th>
<th align="center" style="border-right: none">Цена с НДС</th> 
<th align="center" style="border-left: none"></th>
</tr>';
foreach($options as $arr):
if ( $arr['value'] === JRoute::_
('index.php?option=com_virtuemart&view=productdetails
&virtuemart_category_id='.$virtuemart_category_id.
'&virtuemart_product_id='.$selected)) continue;
$res[]= '<tr>
<td class="sku" align="center">'.$arr['articul'].'</td>
<td width="20px" style="padding: 0 0 0 8px; border-right: none;"><img class="product-image" src='.JRoute::_('/').$arr['tovarimage'].'></a></td>
<td style="border-left: none;"><span class="child_product_name">'.$arr['text'].'</span>
<!--<br /><span class="child_product_desc">'.$arr['desc'].'</span>-->
</td>
<td class="price">'.$currency->priceDisplay((float)$arr['tovarprice']).'</td>
<td class="price">'.$currency->priceDisplay((float)$arr['NDS']).'</td>
<td class="price" style="border-right: none">'.$currency->priceDisplay((float)$arr['tovarpriceNDS']).'</td>
<td style="margin-right: 10px; padding-left: 10px; border-left: none;"><form method="post" class="product js-recalculate" action="index.php" >
<span class="quantity-box">
<input type="text" class="quantity-input js-recalculate" name="quantity[]" value="1" /></span>
<span class="quantity-controls js-recalculate">
<input type="button" class="quantity-controls quantity-plus" />
<input type="button" class="quantity-controls quantity-minus" /></span>
<span class="addtocart-button"><input type="submit" name="addtocart" 
class="addtocart-button" value="" /></span>
<input class="pname" type="hidden" value='.$arr['text'].'>
<input type="hidden" value="com_virtuemart" name="option">
<input type="hidden" value="cart" name="view">
<noscript><input type="hidden" name="task" value="add" /></noscript>
<input type="hidden" value='.$arr['id'].' name="virtuemart_product_id[]">
<input type="hidden" value="0" name="virtuemart_category_id[]"></form></td></tr>';
endforeach;
$str = implode($res);
return '<br>'.$table.''.$str.'</table></div>';
break;
Как можно решить вопрос с отображением дочерних товаров таблицей в категории?
 
Если надо вывести только определённое поле или все поля кроме определенного(ных) можно поставить исключение на название поля или его, делается это так:
PHP:
<?php $custom_title = null;
if (!empty($product->customfields)) {
foreach ($product->customfields as $field) { if ($field->title == 'Картинка'):
if ($field->is_hidden )
if ($field->display) { ?>
<span class="product-field-display"><?php echo $field->display ?></span>
<?php } ?> <?php endif; } ?> <?php } ?>
в этом коде будет выводиться только поле сназванием Картнка,
не забываем перевести кодеровку в ANSI (без BOM) чтоб заработал код.

Столкнулся с такой ситуацией:
В категории выводится несколько одинаковых товаров разного цвета друг за другом - например :
- "Продукт синий" - "Продукт черный" - "Продукт красный" -

В категории для каждого товара выводится настраиваемое поле "изображение" по этому коду.
Но если, например, в админ-панели к "Продукт синий" в "Сопутствующие товары" добавить "Продукт черный" и "Продукт красный", то у этих товаров ("Продукт черный", "Продукт красный") не выводится в категории настраиваемое поле "изображение".
В карточке товара все выводится нормально
А если удалить их из списка "Сопутствующие товары" в товаре "Продукт синий", то все поля у этих товаров выводятся нормально.
Вот такая беда.
Как побороть?
 
Но если, например, в админ-панели к "Продукт синий" в "Сопутствующие товары" добавить "Продукт черный" и "Продукт красный", то у этих товаров ("Продукт черный", "Продукт красный") не выводится в категории настраиваемое поле "изображение".
Как побороть?
Решение найдено:
1. Закидываем файл из аттача в папку:
/components/com_virtuemart/helpers
2. Подключаем хэлпер в файле
/templates/[template_name]/html/com_virtuemart/category/default.php
Код:
defined('_JEXEC') or die('Restricted access');
if(!class_exists("VmSmallHelper"))
    require(JPATH_VM_SITE.DS.'helpers'.DS.'vmsmallhelper.php');
3. Там, где нужно вывести дополнительное поле вставляем:
Код:
echo VmSmallHelper::getCustomFieldValue($product, ID_нужного_поля);

Решение было найдено Для просмотра ссылки Войди или Зарегистрируйся
 

Вложения

  • vmsmallhelper.zip
    893 байт · Просмотры: 21
Назад
Сверху