Новости Joomla

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором представлены новости, интервью, рецензии и есть небольшой магазин на JoomShopping. Возникла необходимость внутри Joomla статей вставлять упоминание релиза и кнопочку «добавить в корзину». Я взял плагин WT JShopping products anywhere Сергея Толкачева (@webtolkru). Плагин отображает название товара и ссылку. При помощи напильника, ИИ и навыков вёрстки появился Uikit макет для шаблонов на базе Yootheme Pro.Учитываается мобильная версия - телефоны и ipad.Кнопка добавления в корзину работает по Ajax и появляется всплывающее окно (Notification Bar от Uikit) с информацией.Пока это базовый вариант, требующий доведения до лоска, однако он уже работает и его можно применять на проектах.Взять макет можно здесь.А плагин вставки товаров в материалы можно забрать здесь.Приветствуется доведение до ума и оформление в виде PR.

WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla

WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla

👩‍💻 WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla.Пакет плагинов галереи изображений и видео для вставки в материалы и модули Joomla, а так же везде, где работают плагины группы content. Поддержка собственных макетов вывода для галерей. Смешанные фото+видео галереи. Плагин создан как замена Simple Image Gallery и поддерживает синтаксис {gallery}{/gallery}.👩‍💻 v.1.2.3. Что нового?- Обработка вступительного и полного текста для материалов Joomla. Добавлена обработка шорткодов в полном и вступительном текстах материалов Joomla.- Системные требования. Повышены минимальные требования до Joomla 5 и PHP 8.1.- Мелкие правки. Исправлена ошибка работы макета по умолчанию в плагине контента.- Joomla 6. Пакет плагинов успешно протестирован на Joomla 6.Страница расширения.GitHub расширенияJoomla Extensions Directory@joomlafeed#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 Гость просматривают эту тему.
  • 6 Ответов
  • 8039 Просмотров
*

zafarkhon

  • Осваиваюсь на форуме
  • 14
  • 2 / 0
1. Изменить файл – /administrator/components/com_virtuemart/classes/currency/convertECB.php.
Код
var $document_address = 'http://<URL вашего сайта>/eurofxref-daily.xml';
var $info_address = 'http://<URL вашего сайта>/';
2. Скачать файл с валютами. Я этот файл для себя настроил. Данные изменить не трудно. Этот файл нужно поставить в корен сайта.
3. В файле /administrator/components/com_virtuemart/classes/currency/convertECB.php после function add вставить:
Код
function add_curr(&$d) {
global $VM_LANG;

$today = date("y-m-d");
    $newcontent = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<gesmes:Envelope xmlns:gesmes=\"\" xmlns=\"\">
<gesmes:subject>Reference rates</gesmes:subject>
<gesmes:Sender>
<gesmes:name>European Central Bank</gesmes:name>
</gesmes:Sender>
<Cube>
<Cube time='".$today."' >
<Cube currency='USD' rate='1'/>
<Cube currency='UZS' rate='".vmGet($d, 'uzs_rate' )."'/>
<Cube currency='UZB' rate='".vmGet($d, 'uzb_rate' )."'/>
</Cube>
</Cube>
</gesmes:Envelope>";
$filename = "../eurofxref-daily.xml";
if (is_writable($filename)) {

if (!$handle = fopen($filename, 'w+')) {
echo $VM_LANG->_('PHPSHOP_CURR_ERROR_1')." ".$filename;
exit;
}
if (fwrite($handle, $newcontent) === FALSE) {
echo $VM_LANG->_('PHPSHOP_CURR_ERROR_2')." ".$filename;
exit;
}
fclose($handle);
} else {
echo $VM_LANG->_('PHPSHOP_CURR_ERROR_3')." ".$filename." ".$VM_LANG->_('PHPSHOP_CURR_ERROR_4'); exit;
}
@unlink ("../cache/daily.xml");

return false;

}
4. В файле /administrator/components/com_virtuemart/languages/product/russian.php вставить:
Код
'PHPSHOP_CURR_UZS' => 'Сум (наличный)',
'PHPSHOP_CURR_UZB' => 'Сум (безналичный)',
'PHPSHOP_CURR_TITLE' => 'Ручное добавление курс валют',
'PHPSHOP_CURR_MSG_TITLE' => 'Успешно добавлен',
'PHPSHOP_CURR_ERROR_1' => 'Не могу открыть файл',
'PHPSHOP_CURR_ERROR_2' => 'Не могу произвести запись в файл',
'PHPSHOP_CURR_ERROR_3' => 'Файл',
'PHPSHOP_CURR_ERROR_4' => 'недоступен для записи',
'PHPSHOP_CURR_VALUE' => 'Добавить/изменить курс валют',
5. В файле /administrator/components/com_virtuemart/html/admin.curr_list.php после всего текста вставить:
Код
$path = defined('_VM_IS_BACKEND' )? '/administrator/' : '/';
?>
<script type="text/javascript">
var priceDlg = null;
function showCurrForm(prodId) {
   
    // define some private variables
    var showBtn;
sUrl = '<?php $sess->purl( $mm_action_url .'index3.php?page=product.ajax_tools&task=getcurrform&no_html=1', false, false, true )?>&product_id=' + prodId;
callback = { success : function(o) {

        priceDlg = Ext.Msg.show({
                    width:300,
                    height:250,
           title:'<?php echo $VM_LANG->_('PHPSHOP_CURR_TITLE')?>',
           msg: o.responseText,
           buttons: Ext.Msg.OKCANCEL,
           fn: handleResult
       });
}};
Ext.Ajax.request({method:'GET', url: sUrl, success: callback.success });
}

function handleResult( btn ) {
switch( btn ) {
case 'ok':
submitCurrForm( 'currForm' );
break;
case 'cancel':
break;
}
}
function submitCurrForm(formId) {
    // define some private variables
    var dialog, showBtn, hideTask;
   
    function showDialog( content ) {
    var msgbox = Ext.Msg.show( {
            title: '<?php echo $VM_LANG->_('PHPSHOP_CURR_MSG_TITLE')?>',
            msg: content,
            autoCreate: true,
                    width:300,
                    height:150,
                    fn: msgBoxClick,
                    modal: false,
                    resizable: false,
                    buttons: Ext.Msg.OK,
                    shadow:true,
                    animEl:Ext.get( 'vm-toolbar' )
            });
    // This Dialog shows the result of the price update. We want it to autohide after 3000 seconds
    // Here we need to use "DelayedTask" because we need to cancel the autohide function if the user clicked
    // the dialog away
    hideTask = new Ext.util.DelayedTask(msgbox.hide, msgbox);
    hideTask.delay( 3000 );
    }

    var msgBoxClick = function(result) {
    if( result == 'ok' ) {
    hideTask.cancel();
    }
    };
    // return a public interface
    var callback = {
    success: function(o) {
    //Ext.DomHelper.insertHtml( document.body, o.responseText );
   
    showDialog( o.responseText );
    },
    failure: function(o) {
    Ext.Msg.alert('Error!', 'Something went wrong while posting the form data (possibly 404 error).');
    },
        upload : function(o){
            //Ext.DomHelper.insertHtml( 'beforeEnd', document.body, o.responseText );
    showDialog( o.responseText );
        }
    };
   
    Ext.Ajax.request({method:'POST', url: '<?php echo $_SERVER['PHP_SELF'] ?>', success: callback.success, failure: callback.failure, form: formId});

}
function cancelCurrForm(id) {
updateCurrField( id );
}
function updateCurrField( id ) {
sUrl = '<?php  $sess->purl( $mm_action_url .'index3.php?option=com_virtuemart&no_html=1&page=product.ajax_tools&task=getcurrform', false, false, true )?>&product_id=' + id;
callback = { success : function(o) { Ext.get("priceform-dlg").innerHTML = o.responseText; }};
Ext.Ajax.request({method:'GET', url: sUrl, success:callback.success });
}
function reloadForm( parentId, keyName, keyValue ) {
sUrl = '<?php  $sess->purl( $mm_action_url .'index3.php?option=com_virtuemart&no_html=1&page=product.ajax_tools&task=getcurrform', false, false, true )?>&product_id='+parentId+'&'+keyName+'='+keyValue;
callback = { success : function(o) { priceDlg.updateText( o.responseText) }};
Ext.Ajax.request({method:'GET', url: sUrl, success:callback.success });
}
</script>
<?php
$formName = uniqid('currForm');
?>
<div id="priceform-dlg"></div>
<br /><br />
<div align="center"><input style="padding:6px; cursor:pointer;" type="button" style="button" onclick="showCurrForm(1)" value="<?php echo $VM_LANG->_('PHPSHOP_CURR_VALUE'); ?>" /></div>
6. В файле /administrator/components/com_virtuemart/classes/html/product.ajax_tools.php после case 'getshoppergroups': вставить:
Код
case 'getcurrform':
$dom = new DomDocument();
$dom->load('http://<URL вашего сайта>/eurofxref-daily.xml');
$items = $dom->getElementsByTagName("Cube");
foreach ($items as $node)
{
  $_currency = $node->getAttribute("currency");
  $_rate = $node->getAttribute("rate");
  if($_currency == "UZS") { $uzs_rate = $_rate; }
  if($_currency == "UZB") { $uzb_rate = $_rate; }
}
$formName = 'currForm';
$content = '<form id="'.$formName.'" method="post" name="currForm">';
$content .= '<table class="adminform"><tr><td><strong>'.$VM_LANG->_('PHPSHOP_CURR_UZS').':</strong></td><td><input type="text" name="uzs_rate" value="'.$uzs_rate.'" class="inputbox" id="uzs_rate_'.$formName.'" size="11" /></td></tr>';
$content .= '<tr><td><strong>'.$VM_LANG->_('PHPSHOP_CURR_UZB').':</strong></td><td><input type="text" name="uzb_rate" value="'.$uzb_rate.'" class="inputbox" id="uzb_rate_'.$formName.'" size="11" /></td></tr></table>';
$content .= '<input type="hidden" name="func" value="'. ('currAdd'). '" />';
$content .= '<input type="hidden" name="ajax_request" value="1" />';
$content .= '<input type="hidden" name="no_html" value="1" />';
$content .= '<input type="hidden" name="vmtoken" value="'.vmSpoofValue($sess->getSessionId()).'" />';
$content .= '<input type="hidden" name="option" value="'.$option.'" />';
$content .= '</form>';
vmConnector::sendHeaderAndContent( 200, $content );
break;


[вложение удалено Администратором]
« Последнее редактирование: 24.10.2009, 20:24:51 от zafarkhon »
*

pikachu

  • Осваиваюсь на форуме
  • 46
  • 7 / 0
Пункт №2, function add нет в данном файле в 1.1.4 версии.
Пункт №5, что значит "после всего текста"?

Вообще у меня пока не завелось. При нажатии на кнопку изменения курса валют - ничего не происходит. Рою дальше.
*

cosmos_ss

  • Новичок
  • 7
  • 0 / 0
А ведь действительно "не стартует", кнопка появляется, но когда нажимаешь ничего не происходит. Версия как положено 1.1.4
*

Dronia

  • Новичок
  • 6
  • 1 / 0
Есть очень хороший компонент. Глянуть можно на сайте производителя http://kdt.biz.ua/joomla-virtuemart-extensions/priceinfo
Перепробовал кучу всего и это лучшее что есть в инете. Купил за 10 WMZ. могу поделится за 5 WMZ Только двоим... чтоб отбить расходы и не обидеть производителя.... пишите на мыло Dronia@email.ua

Всем доброго времени суток.
Подскажите пожалуйста есть ли возможность сделать VirtueMart мультивалютным?
Просто изменять набор валют на сайте я умею, но задача стоит следующая:
1. Хранить исходные цены всех товаров на сайте в долларах (в админке)
2. Показывать цены для покупателей в гривнах
3. Регулировать каждый день изменения цен благодаря установке курса доллара

Объяню причину - цены в связи с изменением курса доллара очень часто меняются и приходится каждый раз выгружать их из 1С с измененными значениями. Однако цены в долларах фиксированы постоянно и в этом случае для изменения цен надо всего навсего корректировать курс валюты. Подскажите пожалуйста как лучше всего решить данную проблему.
 !
*

MixaJI

  • Новичок
  • 3
  • 0 / 0
У меня при нажатии на кнопку Сохранить курсы видает
Файл http://caraudiotuning.com.ua/eurofxref-daily.xml недоступен для записи
хотя на хостинге у файла eurofxref-daily.xml атрибут 0777
в чём грабли? хелп
*

MixaJI

  • Новичок
  • 3
  • 0 / 0
У меня при нажатии на кнопку Сохранить курсы видает
Файл http://caraudiotuning.com.ua/eurofxref-daily.xml недоступен для записи
хотя на хостинге у файла eurofxref-daily.xml атрибут 0777
в чём грабли? хелп
Сори не туда
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

AJAX проверка e-mail и имени пользователя.

Автор Silent_Breeze

Ответов: 60
Просмотров: 21667
Последний ответ 09.06.2013, 17:13:36
от tiptopvkr
PDF и Virtuemart

Автор TrOn

Ответов: 37
Просмотров: 21501
Последний ответ 06.08.2012, 04:44:56
от Fire_Anton
[Решено] highslide в Virtuemart 1.1.2 и 1.0.15 - красивые всплывающие окна

Автор PaLyCH

Ответов: 86
Просмотров: 59588
Последний ответ 28.04.2012, 09:32:18
от nevigen
Перенаправление на /index.php vm 1.1.3

Автор Wester

Ответов: 22
Просмотров: 36087
Последний ответ 08.03.2012, 16:12:53
от phaeton480
Удаление банера Virtuemart 1.1.2 с корзины

Автор galemus

Ответов: 9
Просмотров: 16107
Последний ответ 15.08.2010, 03:49:55
от турист