Новости 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 Гость просматривают эту тему.
  • 224 Ответов
  • 80465 Просмотров
*

kolyan-xerox

  • Осваиваюсь на форуме
  • 35
  • 1 / 0
Такая штука выскакивает, когда вы указываете скидку на данный товар от объема.

У меня при выгрузке товара генерируется две розничных цены. скидок у меня нет я проверял. мне нужно как-то в коде выключить это сообщение.
*

Gremlin

  • Захожу иногда
  • 293
  • 11 / 0
Ну проще всего у этих товаров убрать лишние цены, если они вам не нужны. Этот механизм нужен для установки разных цен от объема или для разных цен для разных категорий покупателей. В принципе конечно можно это и в движке прибить, но если у вас несколько цен для одной и той же категории покупателей, то какую цену вы хотите видеть на сайте?
*

kolyan-xerox

  • Осваиваюсь на форуме
  • 35
  • 1 / 0
Я просмотрел весь товар. Просто отключить не поможет потому что иногда первая цена правильная, иногда вторая. Выгрузку произвожу из 1с напрямую в VirtueMart. Была мысль что это проблема в модуле выгрузки из 1с, но вряд ли так как такая проблема у меня и в другом магазине , а там выгрузка производится при помощи импорта csv файла и тоже появляется две цены. Я уже голову сломал... у двух магазинов разные движки (Jomala 1.0.15 и Joomla 1.5.22) и VirtueMart соответственно имеют разную версию, а проблема такая же.
*

Gremlin

  • Захожу иногда
  • 293
  • 11 / 0
Это не трабл - это фича! Т.е. если есть 2 и более цены для товара для одной группы покупателей, то рядом с ценой выводится тултип, для информирования покупателя о возможности приобрести товар по разным ценам. Тут или прибивать в движке эту фичу (с возможностью всплывания косяков в последствии) или ставить одну цену на товар.
*

kolyan-xerox

  • Осваиваюсь на форуме
  • 35
  • 1 / 0
Это не трабл - это фича! Т.е. если есть 2 и более цены для товара для одной группы покупателей, то рядом с ценой выводится тултип, для информирования покупателя о возможности приобрести товар по разным ценам. Тут или прибивать в движке эту фичу (с возможностью всплывания косяков в последствии) или ставить одну цену на товар.

Я это изначально понял. Просто из-за того что у меня появилось две розничных цены появилось информационное окно для покупателей. Я вроде отследил эту проблему. Она находится в 1с.
Спасибо за помощь ;).
*

kolyan-xerox

  • Осваиваюсь на форуме
  • 35
  • 1 / 0
Gremlin
Все хорошо, но заметил такую штуку. Когда товар один то пропадает куда-то шапка таблицы и сама таблица, остается только содержимое ее http://magazin.kcerokc.net/index.php?option=com_virtuemart&Itemid=181

Вот код
Это шапка
Код: php
<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
mm_showMyFileName(__FILE__); ?>
 
<!-- ORDER BY .... FORM -->
<form action="<?php echo $mm_action_url."index.php" ?>" method="get" name="order">
 
<?php
if( !empty( $VM_BROWSE_ORDERBY_FIELDS )) {
echo $this->fetch( 'browse/includes/browse_orderbyfields.tpl.php');
 
// This is the toggle button for Descending / Ascending Order
// It is wrapped into a JS function with a noscript area to keep it accessible
echo mm_writeWithJS('&nbsp;<input type="hidden" name="DescOrderBy" value="'.$asc_desc[0].'" /><a href="javascript: document.order.DescOrderBy.value=\''.$asc_desc[1].'\'; document.order.submit()"><img src="'. $mosConfig_live_site."/images/M_images/$icon"  .'" border="0" alt="'. $VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_'.$asc_desc[0].'ENDING_ORDER').'" title="'.$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_'.$asc_desc[0].'ENDING_ORDER').'" width="12" height="12" /></a>',
      '<select class="inputbox" name="DescOrderBy">
            <option '.$selected[0].' value="DESC">'.$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_DESCENDING_ORDER').'</option>
            <option '.$selected[1].' value="ASC">'.$VM_LANG->_('PHPSHOP_PARAMETER_SEARCH_ASCENDING_ORDER').'</option>
        </select>
        <input class="button" type="submit" value="'.$VM_LANG->_('PHPSHOP_SUBMIT').'" />');
}
?>
    <input type="hidden" name="Itemid" value="<?php echo $Itemid ?>" />
    <input type="hidden" name="option" value="com_virtuemart" />
    <input type="hidden" name="page" value="shop.browse" />
    <input type="hidden" name="category_id" value="<?php echo $category_id ?>" />
    <input type="hidden" name="manufacturer_id" value="<?php echo $manufacturer_id ?>" />
    <input type="hidden" name="keyword" value="<?php echo $keyword ?>" />
    <input type="hidden" name="keyword1" value="<?php echo $keyword1 ?>" />
    <input type="hidden" name="keyword2" value="<?php echo $keyword2 ?>" />
 
<?php
if( !empty( $product_type_id )) {
echo '<input type="hidden" name="product_type_id" value="'.$product_type_id.'" />';
echo $ps_product_type->get_parameter_form($product_type_id);
}
 
if( $show_top_navigation ) {
?>
&nbsp;&nbsp;&nbsp;&nbsp;<?php echo $VM_LANG->_('PN_DISPLAY_NR')?>&nbsp;&nbsp;
 
<?php $pagenav->writeLimitBox(); ?>
<noscript><input type="submit" value="<?php echo $VM_LANG->_('PHPSHOP_SUBMIT')?>" /></noscript>
 
    <!-- PAGE NAVIGATION AT THE TOP -->
    <br/>
    <div style="text-align:center;"><?php
    $pagenav->writePagesLinks( $search_string );
    echo '<br />';
    $pagenav->writePagesCounter();
      ?>
    </div>
 
<?php
 
}
?>
</form>

<style type="text/css">
  #shapka TH {
     background: url(images/bar_bl.jpg); /*? ?*/
     color: white; /* ? ? */
     padding: 3px; /* ? ? ? ? */
     font-weight: bold;
     border-left: 1px solid #4B647E;
     border-right: 1px solid #4B647E;
     
   }
  #playlist TD {
     background: #FFFFFF;
     border: 1px solid #E5E5E5; /* ? ? */
     padding: 3px; /* ? ? ? ? */
     border-left: 2px solid #E5E5E5;
     border-right: 1px solid #E5E5E5;
   }
  #playlist tbody tr.selected td { /*  ? ? ? ?  */
background-color: #ffffff;
color: #000000;
font-weight: bold;
border-left: 1px solid #E5E5E5;

   }
  #playlist tbody tr.selected1 td { /*  ? ? ? ?  */
background-color: #E4E4E4;
color: #000000;
font-weight: bold;
border-left: 1px solid #E4E4E4;

}
  #playlist tbody tr.selected:hover td { /*  ? ? ? ?  */
    color: red; /* ? ? */
    background: #E2E8F2;
}
  #playlist tbody tr.selected1:hover td { /*  ? ? ? ?  */
    color: red; /* ? ? */
    background: #E2E8F2;
}
</style> 
 
 <table id="shapka">
  <tr><th width="100"><div align="center">Артикул</div></th>
      <th width="700"><div align="center">Наименоване</div></th>
      <th width="110"><div align="center">Цена, р</div></th>
  </tr>
</table>

и сама таблица с товаром

Код: php
<table id="playlist">
<tbody>
<?php
 if ($GLOBALS[$zebra]==0){echo '<TR class="selected">';$GLOBALS[$zebra]=1;}else {echo '<TR class="selected1">';$GLOBALS[$zebra]=0;} ?>
     <td width="100"><div align="center"><?php echo $product_sku?></div></td>
     <td width="700"><div align="left"><?php echo $product_name ?></div></td>
     <td width="110"><div align="center"><?php echo $product_price ?></div></td>
     </tr>
</tbody>
</table>
*

novikov

  • Новичок
  • 6
  • 0 / 0
Здравствуйте. Помогите пожалуйста. Никак не могу разобраться с файлом browse_1.php для правильного вывода товаров в одну строку. Всё что смог сделать правильно, это переместить картинку налево. Вот что есть:

а нужно так:

То есть нужно растянуть текст процентов на 60 страницы, под ним краткое описание товара, слева картинка, справа цена, между товарами линия разделения. Понимаю что задачка простая, но я в CSS и HTML не силён, обычно по примеру других вношу правки, в интернете различных вариантов оформления вывода категории не нашёл.
Причём если выбрать например browse_2.php, но с выводом одного товара в строку, то всё более менее прилично смотрится.

Присоединяюсь к просьбе KazaM, помогите пожалуйста, у меня такая же потребность в изменении вида
у меня так есть:

а так надо:

вроде бы понял, что надо отредактировать файл browse_listtable.tpl
находящийся по адресу /components/com_virtuemart/themes/ja-mesolite/templates/browse/includes
но как это сделать не догоняю, т.к. пока еще ламер в этом вопросе!
вот на всякий случай код файла browse_listtable.tpl для добрых людей:
Код
<?php if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );
mm_showMyFileName(__FILE__); ?>

<?php echo $buttons_header // The PDF, Email and Print buttons ?>
<?php echo $browsepage_header // The heading, the category description ?>
<?php echo $parameter_form // The Parameter search form ?>
<?php echo $orderby_form // The sort-by, order-by form PLUS top page navigation ?>

<?php
$data =array(); // Holds the rows of products
$i = 1; $row = 0; // Counters

// Table header
$tableheader[] = $VM_LANG->_('PHPSHOP_PRODUCT_FORM_THUMB_IMAGE');
$tableheader[] = $VM_LANG->_('PHPSHOP_CART_NAME');
//$tableheader[] = $VM_LANG->_('PHPSHOP_CART_SKU');
$tableheader[] = $VM_LANG->_('PHPSHOP_PRODUCT_DESC_TITLE');
if( _SHOW_PRICES && $auth['show_prices'] ) {
$tableheader[] = $VM_LANG->_('PHPSHOP_CART_PRICE');
}
if( _SHOW_PRICES && $auth['show_prices'] && USE_AS_CATALOGUE != '1' ) {
$tableheader[] = $VM_LANG->_('PHPSHOP_CART_ACTION');
}

// Creates a new HTML_Table object that will help us
// to build a table holding all the products
$table = new HTML_Table('width="100%"');

$table->addRow( $tableheader, 'class="sectiontableheader"', 'th', true );

foreach( $products as $product ) {

foreach( $product as $attr => $val ) {
// Using this we make all the variables available in the template
// translated example: $this->set( 'product_name', $product_name );
$this->set( $attr, $val );
}
$data[$row][] = '<a href="'.$product['product_flypage'].'" title="'.$product['product_name'].'">'
. ps_product::image_tag( $product['product_thumb_image'] )
. '</a>';
$data[$row][] = '<a href="'.$product['product_flypage'].'" title="'.$product['product_name'].'">'.$product['product_name'].'</a>';
//$data[$row][] = $product['product_sku'];
$data[$row][] = $product['product_s_desc'];
if( _SHOW_PRICES && $auth['show_prices'] ) {
$data[$row][] = $product['product_price'];
}
if( $product['has_addtocart'] ) {
$data[$row][] = $product['form_addtocart'];
}
else {
$data[$row][] = '<a href="'.$product['product_flypage'].'" title="'.$product['product_name'].'">'
. $product['product_details']
. '</a>';
}
$row++;
}


// Loop through each row and build the table
foreach($data as $key => $value) {

$table->addRow( $data[$key], 'class="sectiontableentry'.$i.'"', 'td', true );
$i = $i == 1 ? 2 : 1;
}
// Display the table
echo $table->toHtml();
?>
<br class="clr" /><br />
<?php echo $browsepage_footer ?>
<?php
// Show Featured Products
if( $this->get_cfg( 'showFeatured', 1 )) {
    /* featuredproducts(random, no_of_products,category_based) no_of_products 0 = all else numeric amount
    edit featuredproduct.tpl.php to edit layout */
    echo $ps_product->featuredProducts(true,10,true);
} ?>
<?php echo $recent_products ?>
*

novikov

  • Новичок
  • 6
  • 0 / 0
у меня так есть:

а так надо:

вроде бы понял, что надо отредактировать файл browse_listtable.tpl
находящийся по адресу /components/com_virtuemart/themes/ja-mesolite/templates/browse/includes
но как это сделать не догоняю, т.к. пока еще ламер в этом вопросе!
Не кто помочь не хочет, но может кто-то поможет за небольшую денежку?
Пожалуйста!
*

Gremlin

  • Захожу иногда
  • 293
  • 11 / 0
Ну чес-слово, ничего там мудрого нет! Методом проб и ошибок запросто все находится! А за такой пустяк заплатите денег... А потом будет еще что-то нужно и т.д. и т.п. Так уж проще вообще разработку магазине заказать.
*

novikov

  • Новичок
  • 6
  • 0 / 0
Методом проб и ошибок запросто все находится!
Полностью согласен! Когда припекло, сам сел и методом перестановки и подстановки все получилось!
Осталось только кнопку "купить" опустить вниз, но она видимо в другом файле прописана, а в каком пока не разобрался!
*

kolyan-xerox

  • Осваиваюсь на форуме
  • 35
  • 1 / 0
addtocart_form.tpl.php
*

novikov

  • Новичок
  • 6
  • 0 / 0
addtocart_form.tpl.php
Спасибо за подсказку!
Добавил <br /> и помогло ))
*

Trampypys

  • Захожу иногда
  • 132
  • 3 / 1
Может вопрос и баян, не смог найти ответа сам. Вопрос следующий. Есть категория, в ней подкатегории, при нажатии на ссылку категории товары не показываются, т.к. она пустая, можно ли как то вывести все товары подкатегорий в этой категории?
Заранее благодарю за ответ!
*

Gremlin

  • Захожу иногда
  • 293
  • 11 / 0
Может вопрос и баян, не смог найти ответа сам. Вопрос следующий. Есть категория, в ней подкатегории, при нажатии на ссылку категории товары не показываются, т.к. она пустая, можно ли как то вывести все товары подкатегорий в этой категории?
Заранее благодарю за ответ!
Смотрим сюда: http://joomlaforum.ru/index.php/topic,44112.0.html
*

xaocbozzz

  • Захожу иногда
  • 205
  • 8 / 0
  • Котэ просит! Не обижайте котэ!
Это не трабл - это фича! Т.е. если есть 2 и более цены для товара для одной группы покупателей, то рядом с ценой выводится тултип, для информирования покупателя о возможности приобрести товар по разным ценам. Тут или прибивать в движке эту фичу (с возможностью всплывания косяков в последствии) или ставить одну цену на товар.
Ну а все таки как убрать эту фичу из списка товаров и карточки товара одним махом?
*

Gremlin

  • Захожу иногда
  • 293
  • 11 / 0
Т.е. вы хотите, что бы у товара было несколько цен для одной и той же категории покупателей и при этом не было никакой информации о том как с этим богатством разобраться?
*

kolyan-xerox

  • Осваиваюсь на форуме
  • 35
  • 1 / 0
xaocbozzz
Скорее всего вы выгружаете товар через модуль выгрузки товара из 1с на сайт. У этого модуля есть проблема с созданием уникального кода к товару. Получается так:  в процесс выгрузки на место первого товара записывается второй(из-за не уникального кода), тем самым меняется его название, а цена дописывается как вторая розничная.
Просто удалить этот титл нет смысла, т. к. неизвестно, в оконцове после выгрузки, правильная ли цена у товара.
Лучше разберитесь с модулем выгрузки. ;)
*

jahcoozi

  • Захожу иногда
  • 77
  • 0 / 0
Подскажите, пожалуйста, как убрать со страницы Женское, Мужское, Аксессуары и т.д.:
http://lollypie.com/index.php/ru/test
Чтобы меню было только слева, а на самой странице не было меню.
*

xaocbozzz

  • Захожу иногда
  • 205
  • 8 / 0
  • Котэ просит! Не обижайте котэ!
А вместо Женское Мужское Аксессуары и т.д. хотите, что то другое разместить?
Зайдите в админку, затем посмотрите в настройках главного меню (скорее всего mainmenu) какая страница стоит по умолчанию. Нужно просто выбрать другую.
*

Gremlin

  • Захожу иногда
  • 293
  • 11 / 0
Подскажите, пожалуйста, как убрать со страницы Женское, Мужское, Аксессуары и т.д.:
http://lollypie.com/index.php/ru/test
Чтобы меню было только слева, а на самой странице не было меню.
У вас в главном меню первым пунктом стоит компонент VirtueMart. Соответственно убираете это дело, ну вывод какой-нить статьи на это место ставите, о магазине к примеру (тот текст который вы вводили в описание магазина в настройке Virtuemart)/
*

jahcoozi

  • Захожу иногда
  • 77
  • 0 / 0
Спасибо, помогло, сменила тип на стандартный шаблон материала.
*

Poseidon

  • Захожу иногда
  • 89
  • 0 / 0
подскажите где включить картинки категорий.
*

xaocbozzz

  • Захожу иногда
  • 205
  • 8 / 0
  • Котэ просит! Не обижайте котэ!
Панель администрирования VM (расширенный режим) - Товары - Список категорий - Выбираем категорию - Переходим на закладку "изображения". Вот тут настраиваем.
*

Poseidon

  • Захожу иногда
  • 89
  • 0 / 0
картинки категорий есть, но при выводе отображаются только названия категорий(((
*

Overmort

  • Захожу иногда
  • 91
  • 8 / 0
Не отображаются изображения категорий на главной или подкатегории?
*

xaocbozzz

  • Захожу иногда
  • 205
  • 8 / 0
  • Котэ просит! Не обижайте котэ!
картинки категорий есть, но при выводе отображаются только названия категорий(((
Для начало я бы проверил в самой базе данных. Занесены ли туда данные о картинках? Еще проверьте правильность пути.
Таблица в базе: jos_vm_category, ищем: category_thumb_image и category_full_image
В админке картинки сохраняются?
*

Poseidon

  • Захожу иногда
  • 89
  • 0 / 0
в админке картинки показывает, при выводе корневой категории картинок нет, только ссылки на категории.
*

xaocbozzz

  • Захожу иногда
  • 205
  • 8 / 0
  • Котэ просит! Не обижайте котэ!
Честно говоря не знаю какой файл отвечает за отображение категорий, но видимо загвоздка видимо в нем.
*

siregik

  • Захожу иногда
  • 65
  • 0 / 0
Всем привет!
У меня возник вопрос:
Где можно указать сколько категорий должно выводиться в строке категорий?
Дело в том, что у меня на главной странице выводятся категории, нужно, чтобы выводилось по 2 картинки (активные ссылки в виде картинок) в строку.
вывод категорий реализовывается созданием пункта меню.

Очень нужно, жду ответа! )
*

Overmort

  • Захожу иногда
  • 91
  • 8 / 0
Что бы изменить количество подкатегорий, отображаемых в одной строке (когда открываете категорию), необходимо поменять значение переменной $categories_per_row в файле
/components/com_virtuemart/themes/default/templates/common/categoryChildlist.tpl.php

По-умолчанию, стоит 4.

Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

VirtueMart -как убрать слово "КАТЕГОРИИ" на первой странице магазина

Автор stalker828

Ответов: 12
Просмотров: 9545
Последний ответ 30.07.2014, 11:51:16
от ZAIRA
Вывод подкатегорий на главную страницу магазина

Автор debugger

Ответов: 57
Просмотров: 26388
Последний ответ 18.05.2013, 23:18:55
от sania8585
[Решено] Удалить аттач лого магазина из уведомления

Автор niggatub

Ответов: 1
Просмотров: 1501
Последний ответ 17.04.2013, 14:08:16
от niggatub
Настройка внешнего вида подкатегории VirtueMart

Автор sergeys2

Ответов: 11
Просмотров: 8971
Последний ответ 18.03.2013, 17:30:08
от Vas80
Плавающая корзина для вашего магазина!

Автор xaocbozzz

Ответов: 32
Просмотров: 15594
Последний ответ 13.03.2013, 06:01:12
от xaocbozzz