Новости Joomla

Joomla 6: Автоматические обновления ядра в Joomla

Joomla 6: Автоматические обновления ядра в Joomla

👩‍💻 Joomla 6: Автоматические обновления ядра в Joomla. В октябрьском номере официального журнала Joomla - Joomla Community Magazine вышла статья David Jardin, где рассказывается о внедрении функционала автоматического обновления ядра Joomla.❓Почему сейчас? Joomla же жила как-то 20 лет без автоматических обновлений?Это оказалась самая востребованная за последнее время от пользователей Joomla функция. Но, основная причина внедрения - проблемы безопасности. Всякий раз, когда в новой версии Joomla устраняется уязвимость, злоумышленники начинают анализировать код, чтобы выяснить, какая именно уязвимость была исправлена. И как только они это выясняют - начинается разработка автоматизированных скриптов для взлома как можно большего количества сайтов. Затем доступы к автоматически взломанным сайтам продаются в профильных чатах и ресурсах "пачками" по несколько сотен тысяч или миллионов сайтов. Ваш сайт могли взломать несколько лет назад, но воспользоваться уязвимостью могут не сразу, а тогда, когда у злоумышленников возникнет необходимость. И только после этого вы может быть узнаете об этом.Анализ патча, понимание проблемы и разработка скрипта требуют времени. И если владелец сайта не обновит его до истечения этого срока, сайт может быть взломан. А хакеры действуют быстро! Для критических, легко эксплуатируемых уязвимостей речь идёт о временном окне в 10–12 часов — и этого времени явно недостаточно, чтобы все успели обновить свои сайты.Здесь выходят на первый план автоматизированные обновления: проект Joomla теперь может активно устанавливать обновления (и, следовательно, исправления безопасности) на сайты, чтобы гарантировать, что сайты действительно обновляются вовремя.🕘 От первых идей до реализации прошло 5 лет. И здесь можно вспомнить, как в Joomla 5.1 внедрили TUF - The Update Framework, позволяющий устанавливать защищённое соединение между сайтом и сервером обновлений и исключает возможность supply chain attack (атаки на цепочку поставок).Об особенностях реализации и требованиях к сайту читаем подробнее в статье на JCM.@joomlafeed#joomla #secutiry #jcm

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™

Первый выпуск журнала NorrNext в честь 20-й годовщины Joomla™. Интервью с волонтёрами 🎈Ну что, друзья, вот и настал этот долгожданный момент. Мы выпустили первое издание собственного журнала под эгидой NorrNext, который включает в себя интервью с видными деятелями сообщества из разных стран и континентов.Общий нарратив: показать, что нас объединяет (Joomla) и узнать больше о людях, которые вносят свой вклад в развитие платформы в своих сообществах. 20 лет — это много. Давайте же узнаем о коллегах 🎁 Первый цикл включает такие страны, как Австрия, Испания, Латвия, Россия, Румыния, Тайланд, Черногория, Чехия.⚙️ С кем интервью: ✔️ Владимир Елисеев 🇷🇺✔️ Дмитрий Рекун 🇱🇻✔️ Дмитрий Цымбал 🇷🇺✔️ Евгений Сивоконь 🇷🇺 ✔️ Сергей Толкачёв 🇷🇺✔️ Dénes Székely 🇷🇴✔️ Jan Pavelka 🇨🇿✔️ Miljan Vujosevic 🇲🇪✔️ Sergio Iglesias 🇪🇸✔️ Sigrid Gramlinger 🇦🇹✔️ Pisan Chueatchatchai 🇹🇭‼️ Новые интервью будут добавляться до конца декабря 2025. Заходите по ссылке время от времени💡👉 Читать далее

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

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Обратились ко мне с просьбой помочь вот в таком вопросе.

Цитировать
Мне требуется доработать VirtueMart 3, на стандартном шаблоне.
Есть необходимость отобразить в категории товаров, в каждой карточке, количество этого товара, которое лежит в корзине.

Ну что же давайте.. ))

1. Открываем шаблон вывода категории.
/templates/ВАШ_ШАБЛОН/html/com_virtuemart/category/default.php
В нем где то в начале документа после строки defined ('_JEXEC') or die('Restricted access');
пишем следующий код:
Код: php
if(!class_exists('VirtueMartCart')) 
require(VMPATH_SITE.DS.'helpers'.DS.'cart.php');
$cartData = VirtueMartCart::getCart()->cartProductsData;
$cartInfo = array ();
foreach ( $cartData as $prodInCar ){
$cartInfo[$prodInCar->virtuemart_product_id] = $prodInCar->quantity;
}//foreach


за тем в этом же файле опускаемся ниже и ищем вот такую строчку.
echo shopFunctionsF::renderVmSubLayout($this->productsLayout, array('products'=>$products,'currency'=>$this->currency,'products_per_row'=>$this->perRow,'showRating'=>$this->showRating ));

Эта строка выводит под слой карточки товара который определен в переменной  $this->productsLayout
По умолчанию VirtueMart имеет только два таких слоя которые могут использоваться.
Вот они.
  • /templates/ВАШ_ШАБЛОН/html/com_virtuemart/sublayouts/products.php
  • /templates/ВАШ_ШАБЛОН/html/com_virtuemart/sublayouts/products_horizon.php
Для того что бы понять какой файл Вам нужно править из перечисленных выше. Вы можете временно вставить перед конструкцией
echo shopFunctionsF::renderVmSubLayout( $this->productsLayout, array(......

Следующий код
Код: php
echo '<pre>'; print_r ($this->productsLayout); echo '</pre>'.__FILE__.' in line:  '.__LINE__ ;
die(__FILE__.'in line: '.__LINE__);

Что бы получилось как на скрине


Сохраняем этот файл.
Соответственно зайти на страницу категорий и обновить.
Не пугайтесь. но вид будет примерно следующим.



В красной рамке я выделил SUBLAYOUTS - тот который нам нужен. Значит это файл.
/templates/ВАШ_ШАБЛОН/html/com_virtuemart/sublayouts/products_horizon.php


Перед тем как перейти к выводу количества товаров находящихся в корзине. Нужно передать в файл products_horizon.php
данные которые вытащили из данных корзины.
Делаем это так .
Заменяем строку.
Код: php
echo shopFunctionsF::renderVmSubLayout($this->productsLayout,array('products'=>$products,'currency'=>$this->currency,'products_per_row'=>$this->perRow,'showRating'=>$this->showRating ));
на строку
Код: php
echo shopFunctionsF::renderVmSubLayout($this->productsLayout,array(	'products'=>$products,'currency'=>$this->currency,'products_per_row'=>$this->perRow,'showRating'=>$this->showRating        , 'cartInfo' => $cartInfo   ));


т.е. просто добавили в массив эту пару - (ключ => значение)   'cartInfo' => $cartInfo

Теперь давайте разберемся с самим выводом.
Открываем файл /templates/ВАШ_ШАБЛОН/html/com_virtuemart/sublayouts/products_horizon.php
И первым дел то что нам нужно это определить переменную  с полученными данными.
Где то после строки defined('_JEXEC') or die('Restricted access'); напишем такой код:

Код: php
$cartInfo = $viewData['cartInfo'];

Теперь нам нужно только вывести.
Для этого определяем место где будем выводить (я предлагаю это количество вывести рядом с кнопкой КУПИТЬ):
В моем случае кнопка добавить в корзину выводиться через SubLayout и код выглядит так:
Код: php
...................
<td class="prodtab3">
   <div class="vm3pr-<?php echo $rowsHeight[$row]['customfields'] ?>">
        <?= shopFunctionsF::renderVmSubLayout('addtocart',array('product'=>$product,'rowHeights'=>$rowsHeight[$row])); ?>
   </div>
</td>
................



Я не стал заморачиваться с таблицами. И вставил код после закрытия таблиц. т.е. после тэга </table>  
Код следующий.
Код: php
 <?php 
   if( array_key_exists($product->virtuemart_product_id, $cartInfo)  ){?>
        <div class="csrtInfo" style="float:right; margin-right:10px; color:red;">
           This product in cart :
          <span style="color:red;"><?= $cartInfo[$product->virtuemart_product_id] ?></span>
          <span style="color:red;"> pcs.</span>
       </div>
    <?php  
    } // end if  ?>

На скрине это выглядит так.



Вот пока и все. В теле страницы это выглядит так.



« Последнее редактирование: 26.11.2016, 22:15:16 от gartes »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться