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

Undorik

  • Осваиваюсь на форуме
  • 27
  • 1 / 0
Тема переименована.

^^^^^^^^^^^^^^^

Здравствуйте.
Подскажите пожалуйста, я где-то видел реализацию, но никак найти не могу, чтобы модуль доставки добавлял % к сумме заказа, а не фиксированное число.

Т.е. первый вариант - самовывоз, по нулям, это работает,
второй вариант, курьер - 10% от ИТОГО.

Спасибо.
« Последнее редактирование: 06.01.2013, 21:24:44 от Undorik »
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Если плагин доставки стандартный т.е. weight_countries
То
1 Налоги и правила расчета

   Вид расчета  наценка
   Операция +%
   Значение 10

2 в способе доставки
   Налог   название правила налогов

Для VM 2.0....
Думаю работать будет..) ;)
       
*

Undorik

  • Осваиваюсь на форуме
  • 27
  • 1 / 0
Если плагин доставки стандартный т.е. weight_countries
То
1 Налоги и правила расчета

   Вид расчета  наценка
   Операция +%
   Значение 10

2 в способе доставки
   Налог   название правила налогов

Для VM 2.0....
Думаю работать будет..) ;)
       
пробовал, берет налог только с минимальной стоимости доставки (если ее указывать) или просто ноль, если нет даже минимальной. Пробовал ставить другие типы налогов. Не помогает :(
*

Undorik

  • Осваиваюсь на форуме
  • 27
  • 1 / 0
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Значит так

/vmshipment/weight_countries/weight_countries.xml
После 25 строки ставим это :
Код
<param name="shippingCost" type="text" size="10" default="" label="shipping cost"/>

Далее
/vmshipment/weight_countries/weight_countries.php
После 165 строки есть функция  :function getCosts
Меняем на мою

Код
 

function getCosts(VirtueMartCart $cart, $method, $cart_prices) {
if ($method->free_shipment && $cart_prices['salesPrice'] >= $method->free_shipment) {
return 0;
} else {
if (preg_match('/%$/', $method->shippingCost)) {
    $method->shippingCost = substr($method->shippingCost, 0, -1);
return $method->cost + $method->package_fee+($cart_prices[salesPrice]*0.01*$method->shippingCost);
}else{
return $method->cost + $method->package_fee+$method->shippingCost;
}
}
    }// end function getCosts


Все сохраняем и в настройке способа доставки в поле  shipping cost
Можем ставить такое
10% наценка или наоборот -10% скидка
или просто 10 наценка 10 в твоей валюте ну или -10

Все Ура!
Пользуйся!
PS Да к с тате толь что придумал ;D
« Последнее редактирование: 06.01.2013, 02:50:55 от gartes »
*

Undorik

  • Осваиваюсь на форуме
  • 27
  • 1 / 0
Выпадает в ошибку 500 при попытке зайти в товар на сайте или в настройки доставки в админке. Но, чую, истина где-то рядом.
Что делает
Код
if (preg_match('/%$/', $method->shippingCost))
?
« Последнее редактирование: 06.01.2013, 10:49:44 от Undorik »
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
ищет знак проценты "%"       в строке параметров шип кост
« Последнее редактирование: 06.01.2013, 11:26:09 от gartes »
*

Undorik

  • Осваиваюсь на форуме
  • 27
  • 1 / 0
ищет проценты в строке параметров шип кост

А все, нашел! Мой косяк был, скобочку недокомментил от старого скрипта!
ура ура ура!
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Круть это модуль Новой почты.... ;D тут темка есть зайди глянь что может но только для Украины
*

Undorik

  • Осваиваюсь на форуме
  • 27
  • 1 / 0
Ой
« Ответ #12 : 06.01.2013, 20:58:06 »
Запил стандартного модуля под УНИВЕРСАЛЬНУЮ доставку Почтой России. Может и пригодится кому.
Выражаю огромную благодарность gartes. Собственно переписка выше.

Просьба еще раз проверить и, если возможно, оптимизировать алгоритм (сижу с самого утра без обеда и сна :) ).

Требования: посылки от 1 грамма до 10 килограмм и фиксированная минимальная сумма (стандартный модуль умеет). У меня товар вбит в килограммах везде и я не уверен как себя поведет доставка, если у вас стоят другие величины.

О тарифах почты (на сайте черт ногу сломит, мучайте 8-800, но тоже не панацея). Расскажу коротко о тех, которые (вроде бы) подходят мне, в принципе допиливаемо под что угодно.
1 тариф, бандероль с объявленной стоимостью. Эта стоимость необходима для использования наложенного платежа.
мы платим 78.82 за первые 500 грамм и последующие так же, округляется в бОльшую сторону +4% за объявленную стоимость.
от 0 до 2 кг
2 тариф, посылка, там зоны, с зонами не разбирался, и на их сайте тоже вырвиглаз, брал по максимуму пока что.
199 рублей за первые 500г и 33.70 за следующие и 4% за объявленную стоимость
3 тариф отправления 1го класса (на 8-800 говорят быстрее идет, ага :D )
154,58 за первые 100 грамм 17.11 за следующие и 4% за объявленную стоимость.

вся задача сводится к:
если стоимость доставки вышла небольшой - выставить минимум, учитывая в принципе транспортный_расход/лень_идти_до_почты/упаковку (далее "жадность")
если стоимость доставки вышла относительно большой (а значит продается товар с хорошим ценником), то забить на жадность и считать по минималке, лишь бы не спугнуть покупателя.

переменные
в файле /vmshipment/weight_countries/weight_countries.xml после 25й строки

Код
	<param name="shippingCost" type="text" size="10" default="" label="наценка почты от стоимости (% или рубли)"/>
<param name="shippingAddWeight" type="text" size="10" default="" label="вес первой или последующей полной или неполной единицы веса (грамм) "/>
<param name="shippingFirstCostCount" type="text" size="10" default="" label="тариф почты за первую единицу веса (рубли)"/>
<param name="shippingNextCostCount" type="text" size="10" default="" label="тариф почты за последующие единицы веса (рубли)"/>
<param name="shippingGreed" type="text" size="10" default="" label="жадность (рубли)"/>

Функция /vmshipment/weight_countries/weight_countries.php
После 165 строки есть функция  :function getCosts

Тут все как у gartes`а.
Код
function getCosts (VirtueMartCart $cart, $method, $cart_prices) {
if ($method->free_shipment && $cart_prices['salesPrice'] >= $method->free_shipment) {
return 0;
} else {
if (preg_match('/%$/', $method->shippingCost)) {                                                        // % или фиксированная сумма           
    $method->shippingCost = substr($method->shippingCost, 0, -1);     


Потом страшное условие. Коротко: если фактическая цена доставки слишком мала то лепим минималку
Код
if (($method->package_fee  												// если, налоги (рубли, кому нужно)
+($cart_prices[salesPrice]*0.01*$method->shippingCost)              // плюс процентная наценка от стоимости товара (рубли)
+$method->shippingFirstCostCount // плюс цена за первую единицу веса
+(ceil(                                                            //               
(($this->getOrderWeight($cart, $method->weight_unit)*1000 -     // плюс оставшийся вес (у меня в килограммах!) переведенный в граммы!                                 
$method->shippingAddWeight)) /                                  // деленный на зачение последующих тарифицируемых значений массы посылки
$method->shippingAddWeight))              // округленный в большую сторону (по правилам почты)
*$method->shippingNextCostCount) <=                                 // и уможенный на тариф за следующие единицы веса (рубли), меньше или равен
($method->cost - $method->shippingGreed) ) {                        //минимальной стоимости доставки за вычетом(!) нашей жадности
return $method->cost + $method->package_fee;

иначе пишем обычную стоимость доставки

Код
} else {			
return $method->package_fee  // если, налоги (рубли, кому нужно)
+($cart_prices[salesPrice]*0.01*$method->shippingCost)              // плюс процентная наценка от стоимости товара (рубли)
+$method->shippingFirstCostCount // плюс цена за первую единицу веса
+(ceil(                                                            //               
(($this->getOrderWeight($cart, $method->weight_unit)*1000 -     // плюс оставшийся вес (у меня в килограммах!) переведенный в граммы!                                 
$method->shippingAddWeight)) /                                  // деленный на зачение последующих тарифицируемых значений массы посылки
$method->shippingAddWeight))              // округленный в большую сторону (по правилам почты)
*$method->shippingNextCostCount;
}

и вот в этом "иначе" можно добавить свою "жадность", но я решил так не делать.


конец доделывать не стал
Код
// если у нас не % от товара а фиксированное число   далее функционал недописан!
}else{
return $method->cost + $method->package_fee + $method->shippingCost +
+$method->shippingFirstCostCount // плюс цена за первую единицу веса
+(ceil(                                                            //               
(($this->getOrderWeight($cart, $method->weight_unit)*1000 -     // плюс оставшийся вес (у меня в килограммах!) переведенный в граммы!                                 
$method->shippingAddWeight)) /                                  // деленный на зачение последующих тарифицируемых значений массы посылки
$method->shippingAddWeight))              // округленный в большую сторону (по правилам почты)
*$method->shippingNextCostCount;




}
}
    }// end function getCosts

запиливать вариант, когда вместо % в доставке идет фиксированное число, я не стал, у меня нет такой доставки, но в принципе делается по аналогии.

В принципе удобно манипулировать теми же %тами и убрать жадность в ноль и поставить 5,6,7 процентов, в общем кому как удобнее. Возможно запиливаемо под EMS и что там у нас еще бывает.
Вот так это выглядит у меня в VM
Спойлер
[свернуть]

Вопросы, может кто знает, но проверять сил нет уже
1. Если VirtueMart обновится слетит или нет?
2. Если все-таки встретятся товары с граммами/фунтами что будет?
3. Если кто знает как запилить сюда какие-то почтовые зоны для посылок - будет интересно по слушать.
4. Оптимизация. Я не программист, но чую можно как-то попроще сделать.
*

Undorik

  • Осваиваюсь на форуме
  • 27
  • 1 / 0
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Цитировать
Вопросы, может кто знает, но проверять сил нет уже
1. Если VirtueMart обновится слетит или нет?
2. Если все-таки встретятся товары с граммами/фунтами что будет?
3. Если кто знает как запилить сюда какие-то почтовые зоны для посылок - будет интересно по слушать.
4. Оптимизация. Я не программист, но чую можно как-то попроще сделать.


1 не не слетит VM при обновлении папку plugins не трогает слетит все то что в ядре менялось но там лучше не че не трогать
  Вот что подумал если AIO Обновить то наверное грохнит...
  Модулю имя другое и и каталог...
2 думаю тоже не чего если ручки у пользователя не корявые и поставит в настройках модуля свои единицы и все.
     А вообще подумать надо и наверное если не КГ то функцию написать перевода величин... Думаю что в VM уже где то это есть просто подключить и отдать
3 зоны для посылок-- Вот тут вопрос не понял что именно.... Можно в БД базу индексов всей РФ загнать и когда клиент в ведет индекс его город область автоматом станет в регистрацию....  

4 так ты весь код кинь будем - делать - посмотреть )) а то я пока прочитал глаза чуть не сломал

Удачи тебе!
« Последнее редактирование: 07.01.2013, 00:41:08 от gartes »
*

Undorik

  • Осваиваюсь на форуме
  • 27
  • 1 / 0
3 зоны для посылок-- Вот тут вопрос не понял что именно.... Можно в БД базу индексов всей РФ загнать и когда клиент в ведет индекс его город область автоматом станет в регистрацию.... 
Я к тому, что у меня условий задачи нет. Я хз какие индексы к какой зоне как относить. Реализовать можно так же условиями и не забивать в бд ничего лишнего.

4 так ты весь код кинь будем - делать - посмотреть )) а то я пока прочитал глаза чуть не сломал
это и есть весь код, просто кусками.

вот склееный
Код
	function getCosts (VirtueMartCart $cart, $method, $cart_prices) {
if ($method->free_shipment && $cart_prices['salesPrice'] >= $method->free_shipment) {
return 0;
} else {
if (preg_match('/%$/', $method->shippingCost)) {                                                        // % или фиксированная сумма           
    $method->shippingCost = substr($method->shippingCost, 0, -1);                                                 


if (($method->package_fee  // если, налоги (рубли, кому нужно)
+($cart_prices[salesPrice]*0.01*$method->shippingCost)              // плюс процентная наценка от стоимости товара (рубли)
+$method->shippingFirstCostCount // плюс цена за первую единицу веса
+(ceil(                                                            //               
(($this->getOrderWeight($cart, $method->weight_unit)*1000 -     // плюс оставшийся вес (у меня в килограммах!) переведенный в граммы!                                 
$method->shippingAddWeight)) /                                  // деленный на зачение последующих тарифицируемых значений массы посылки
$method->shippingAddWeight))              // округленный в большую сторону (по правилам почты)
*$method->shippingNextCostCount) <=                                 // и уможенный на тариф за следующие единицы веса (рубли), меньше или равен
($method->cost - $method->shippingGreed) ) {                        //минимальной стоимости доставки за вычетом(!) нашей жадности

// выше в условии реальная стоимость почтовой отправки, но нам этого мало!
// в данном случае, если реальная стоимость отправки через почту, например 30 рублей
// наш минимальный заданный тариф нашего магазина для почтовый отправлений 60 рублей и жадность 20 (60-20 = 40)

return $method->cost + $method->package_fee; // тогда делаем стоимость доставки по нашему минимальному тарифу (цена+налог кому нужно)

//иначе, когда реальная стоимость почтовой отправки например 100 привышает тариф минимальной отправкки нашего магазина 60 за вычетом жадности 20
// считаем по полной

} else {
return $method->package_fee  // если, налоги (рубли, кому нужно)
+($cart_prices[salesPrice]*0.01*$method->shippingCost)              // плюс процентная наценка от стоимости товара (рубли)
+$method->shippingFirstCostCount // плюс цена за первую единицу веса
+(ceil(                                                            //               
(($this->getOrderWeight($cart, $method->weight_unit)*1000 -     // плюс оставшийся вес (у меня в килограммах!) переведенный в граммы!                                 
$method->shippingAddWeight)) /                                  // деленный на зачение последующих тарифицируемых значений массы посылки
$method->shippingAddWeight))              // округленный в большую сторону (по правилам почты)
*$method->shippingNextCostCount;
}







// вес покупки в граммы           
 // минус вес первой полной единицы, т.к. мы ее уже посчитали   



// если у нас не % от товара а фиксированное число   далее функционал недописан!
}else{
return $method->cost + $method->package_fee + $method->shippingCost +
+$method->shippingFirstCostCount // плюс цена за первую единицу веса
+(round(                                                            //               
(($this->getOrderWeight($cart, $method->weight_unit)*1000 -     // плюс оставшийся вес (у меня в килограммах!) переведенный в граммы!                                 
$method->shippingAddWeight)) /                                  // деленный на зачение последующих тарифицируемых значений массы посылки
$method->shippingAddWeight, 0, PHP_ROUND_HALF_UP))              // округленный в большую сторону (по правилам почты)
*$method->shippingNextCostCount;




}
}
    }// end function getCosts
*

Undorik

  • Осваиваюсь на форуме
  • 27
  • 1 / 0
  Вот что подумал если AIO Обновить то наверное грохнит...

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

Модуль ЮMoney для для VirtueMart 4 существует?

Автор lolitma3

Ответов: 5
Просмотров: 3706
Последний ответ 11.08.2022, 19:07:23
от lolitma3
Модуль доставки: СДЭК, Boxberry, Ozon, 5post, Почта, пэк, gtd, iml, Байкал и др

Автор eshoplogistic

Ответов: 0
Просмотров: 2739
Последний ответ 06.04.2022, 16:43:13
от eshoplogistic
Добавить выбор города в плагин доставки?

Автор warlocksp

Ответов: 3
Просмотров: 3523
Последний ответ 13.02.2022, 15:48:14
от Evgen Kulibin
Vituemart платёжный модуль tinkoff

Автор PavelK

Ответов: 2
Просмотров: 3066
Последний ответ 24.10.2020, 12:02:32
от draff
Пропали способы доставки и оплаты

Автор Orfei

Ответов: 3
Просмотров: 2908
Последний ответ 01.10.2020, 21:00:44
от AlexB