Новости Joomla

Вышли релизы безопасности Joomla 6.1.4 и Joomla 5.4.9

Релиз безопасности Joomla 6.1.4 и Joomla 5.4.9

Проект Joomla! рад сообщить о выходе Joomla 6.1.4 и Joomla 5.4.9. Это релизы безопасности и исправления ошибок для серий 5.x и 6.x.

JoomShift - компонент переноса контента между Joomla сайтами.

‍ JoomShift - компонент переноса контента между Joomla сайтами.

JoomShift - компонент переноса контента между Joomla сайтами.Он позволяет экспортировать модули, меню, материалы, категории, пользовательские поля и пользователей в виде переносимых JSON/ZIP-файлов, а затем импортировать их в любую другую установку Joomla.

Возможности компонента:- Модули — полная настройка, назначение пунктов меню, позиционирование и содержимое SP Page Builder.
-Меню — иерархия родительских/дочерних элементов, типы элементов, ссылки, уровни доступа и параметры. Отсутствующие типы меню создаются автоматически, а элементы, указывающие на неустановленные компоненты, пропускаются с предупреждением.
-Статьи и категории — контент, метаданные, изображения и иерархия категорий.
-Пользовательские поля — группы полей, определения, ограничения по категориям и значения (включая поля с несколькими значениями) — экспортируются и автоматически создаются заново на целевом сайте.
-Пользователи — данные профиля, назначения групп и хэши паролей, чтобы учетные записи работали сразу после импорта.
-Кросс-версииJoomla - компонент адаптируется к различиям в схеме базы данных между версиями Joomla.
-Создан для крупных сайтов — постраничные списки (20/50/100/250строк) и автоматический пакетный экспорт для сайтов с более чем 500 элементами, поэтому он продолжает работать на обычном хостинге.
-Опция перезаписи — обновляет совпадающие элементы при повторном импорте вместо создания дубликатов.
-Drag-n-drop импорт с подробным отчетом о том, что было импортировано, обновлено или пропущено, и почему.

На момент написания заметки для скачивания необходима регистрация/логин на сайте разработчика.

-Joomla Extensions Directory-Страница расширения#joomla#расширения

Модуль joomLab JS Ajax Cart позволит организовать в Вашем интернет-магазине на компоненте JoomShopping удобную AJAX корзину с возможностью добавлять товары и изменять их количество без перезагрузки страницы.

Модуль joomLab JS Ajax Cart позволит организовать в Вашем интернет-магазине на компоненте JoomShopping удобную AJAX корзину с возможностью добавлять товары и изменять их количество без перезагрузки страницы.

Кроме этого, в состав пакета установки входит плагин, который позволяет выводить атрибуты товара в список всех товаров, менять эти атрибуты и добавлять товар в корзину из списка товаров. Если атрибутов много, то их можно выводить в всплывающем (модальном окне).

В модуле предусмотрено 2 макета дизайна для Bootstrap и UIkit и максимальная кастомизация для переопределения макетов в шаблон.Демо расширенияСтраница расширения

Видео в Telegram

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

ninth

  • Захожу иногда
  • 59
  • 0 / 0
  • [ 9 ]
Доброго времени суток.

Подскажите пример или ссылку, где можно посмотреть для Joomla ajax пагинацию.

В данный момент пытаюсь сделать сам, но немного не получается...(((

пагинация подключена...
Код: javascript
	var flag=true;
var step = 10;
var limit = <?=$this->pagination->limit;?>;
var total = <?=$this->pagination->total;?>;

function AjaxitemsForm() {

if(limit+step < total){
limit = limit+step;
}
else
{
limit = total;
}

if(flag)
{
jQuery.ajax({
url: '<?php echo JURI::root();?>index.php?option=com_myworks&view=myworks',
type: "POST",
dataType: "html",
data: "limit="+limit+"&limitstart=0",
cache: false,
success: function(msg) {
alert(msg);
},
error: function(response) {
alert("vitaminov malo... v golove");
}
});
}

if(limit == total)
{
flag=false;
}
else
{
flag=true;
}
}

"Немного" не понимаю как достать и подставить полученный результат, и почему "alert(msg);" выдаёт код аж всей страницы(((
Какой адрес тогда писать - "url:"?
« Последнее редактирование: 18.08.2014, 02:16:35 от ninth »
*

Hishchnik

  • Захожу иногда
  • 253
  • 19 / 1
  • ©
если я правильно понял то:
Вот
Вот
или Вот
1. Помог? Благодарность выражается кнопочкой "+" ;)
2. Остановите землю я сойду!
3.
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
У вас пагинация выводится стандартным JPagination ?
*

ninth

  • Захожу иногда
  • 59
  • 0 / 0
  • [ 9 ]
да, стандартная.
Чтоб не быть голословным...

Модель:
Код: php
jimport('joomla.application.component.modelitem');

class MyworksModelMyworks extends JModelList
{
     public function getMycategories()
    {

$db = $this->getDbo();
$query = $db->getQuery(true);

$query->select(array('title', 'id', 'params'));
$query->from('#__categories');

$query->where('extension = "com_myworks"');
$query->order('rgt');

$db->setQuery($query);
$query = $db->loadObjectlist();

        return $query;
}
     public function getMyworks()
    {

$db = $this->getDbo();
$query = $db->getQuery(true);

$query->select(array(/*'name', 'id', 'params', */'catid'));
$query->from('#__myworks');

$query->where('state = '.(int)1);
$query->order('created DESC');

$db->setQuery($query);
$query = $db->loadObjectlist();

        return $query;
}

    protected function getListQuery()
    {
        $query = $this->getDbo()->getQuery( true );

        $query->select(array('name', 'id', 'params'))->from('#__myworks');
        return $query;
    }
}

Вид view.html.php:
Код: php
jimport('joomla.application.component.view');

class MyworksViewMyworks extends JViewLegacy
{
    protected $mycategory;
    protected $mywork;
    protected $pagination;
    protected $items;

    public function display($tpl = null)
    {
        $this->mycategory = $this->get('Mycategories');
$this->mywork = $this->get('Myworks');

        $this->items = $this->get( 'Items' );

        $this->pagination = $this->get( 'Pagination' );

        parent::display($tpl);
    }
}

Саму форму пагинации не стал выводить... все данные и так получить можно если не ошибаюсь.
« Последнее редактирование: 17.08.2014, 17:54:59 от ninth »
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Можно попробовать сделать так:
1. повесить обработчик на пагинацию
Код: javascript
<script type="text/javascript">
jQuery(document).ready(function ($) {
$(document).on('click', 'ul.pagination a', function () {
$.get($(this).attr('href') + '&format=raw', function (responce) {
$('.content').html(responce)
});
return false;
});
})
</script>
2. Для вида с которого идет пагинация скопировать файл view.html.php положить его в эту же папку где у вас ваш view.html.php только с именем view.raw.php
*

ninth

  • Захожу иногда
  • 59
  • 0 / 0
  • [ 9 ]
Hishchnik, большое спасибо. Всё это ещё раз внимательно перечитал )))

Istaan, вы снова меня выручили!
Можно немного поподробнее узнать о принципе действия волшебного "format=raw".
Подставил в строку с параметрами - data: "limit="+limit+"&limitstart=0&format=raw" в своём примере, все работает отлично.
И заменил адрес на url: '<?php echo JRoute::_("index.php"); ?>'. (Кажется так удобнее)
« Последнее редактирование: 17.08.2014, 19:41:41 от ninth »
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Можно немного поподробнее узнать о принципе действия волшебного "format=raw".
А что узнавать? Просто подключает из вида файл с именем view.raw.php и отдает все то что и view.html.php(ну точнее отдает то что прописано как и в этом файле но вывод и шаблон для вывода можно изменить) и без шаблона..
« Последнее редактирование: 17.08.2014, 19:48:10 от Istaan »
*

ninth

  • Захожу иногда
  • 59
  • 0 / 0
  • [ 9 ]
Ещё раз спасибо.
Немного допилил код, выглядит теперь так.

Код: javascript
<script>
var flag=true;
var step = 10; // количество подгружаемых позиций
var limit = <?=$this->pagination->limit;?>;
var total = <?=$this->pagination->total;?>;

if(limit >= total)
{
flag = false;
}

function AjaxitemsForm()
{
if(limit+step < total)
{
limit = limit+step;
}
else
{
limit = total;
}

if(flag==true)
{
jQuery.ajax({
url:      '<?php echo JRoute::_('index.php'); ?>', //Адрес подгружаемой страницы
type:     "POST", //Тип запроса
dataType: "html", //Тип данных
data: "limit="+limit+"&limitstart=0&format=raw", //Данные
cache: false,
success: function(responce) { //Если все нормально
$('.content').html(responce);
},
error: function(response) { //Если ошибка
alert("vitaminov malo... v golove");
}
});
}

if(limit == total)
{
flag=false;
}
else
{
flag=true;
}
}
</script>

<div id="asd" onclick="AjaxitemsForm();">Загрузить ещё 10</div>
« Последнее редактирование: 17.08.2014, 22:34:44 от ninth »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
ninth, так Неправильно, зачем ты загружаешь по новой всю страницу, если тебе нужен только блок с материалами. Нет тогда разницы если ты откроешь страницу с нужной ссылкой
Здесь надо писать плагин или дописывать в контроллер, чтобы он отдавал нужный контент
*

ninth

  • Захожу иногда
  • 59
  • 0 / 0
  • [ 9 ]
Святые кошки! Только за "Правильность")))

Только вот с написанием компонентов не очень. Путаюсь ещё... особенно в контролерах (их там один controller.php и папка controller). Может подскажите где пример подходящий посмотреть можно?

И ещё такой момент:
Тут действительно понял что можно излишки по убирать. Можно это сделать таким образом?
Код: javascript
url:'<?php echo JRoute::_("index.php"); ?>', 
data: "limit="+limit+"&limitstart=0&format=raw&layout=items",

в view.raw.php оставить только
Код: php
    protected $items;

    public function display($tpl = null)
    {
        $this->items = $this->get( 'Items' );
        parent::display($tpl);
    }

Создать файлик items.php, и прописать вывод необходимого блока.
Или по сути всёравно загружаю всю страницу по новой?
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Зачем? Я же вам предоставил полный код на JS как должно все работать!
Зачем вы написали эту простыню?
и в view.raw.php все оставьте копия view.html.php
только в  скрипте где $('.content') вместо .content поставить тот блок в котором лежит <jdoc:include type="component" />!
Пример что я предоставил на 100% рабочий! Тестировал перед тем как сюда выложить!
*

ninth

  • Захожу иногда
  • 59
  • 0 / 0
  • [ 9 ]
Istaan, извините.

Тут сам туплю. Немного неправильно (не полно) наверно написал заголовок в теме.
Нужна подгрузка контента при нажатии на кнопку - "загрузить ещё столько-то ..."



Вот в зелёной рамке, это то, куда должно подгружаться... принцип как "Вконтакте", только не при скролинге.
Поэтому ваш вариант немного не подходил. Мне саму пагинацию в шаблоне выводить нет необходимости, даже если вывести и скрыть всё равно не то.
Механизм работает по принципу увеличения переменной limit, чтоб при обновлении страницы или возврате не пришлось подгружать все заново (хотя может это Неправильно).
Fedor Vlasenko прав. Перезагружать весть контент действительно неправильно, там ещё список категорий (такой же нелепый но свой велосипед),
поэтому и сделал как дошло... файлик items.php, чоб брать результат из него.
За простыню уж простите... Тут вариантов и так и этак, знать бы ещё, что это вот точно оно самое... блин я запутался (((
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Я бы сделал так загребать вот все это:
Спойлер
[свернуть]
Использовать туже пагинацию что и была, но не выводить её!
Если мы сделаем print_r($this->pagination) то увидим такое:
Цитировать
JPagination Object
(
    [limitstart] => 0
    [limit] => 10
    [total] => 63
    [prefix] =>
    [pagesStart] => 1
    [pagesStop] => 7
    [pagesCurrent] => 1
    [pagesTotal] => 7
    [viewall:protected] =>
    [additionalUrlParams:protected] => Array
        (
        )

)

А дальше все просто в шаблоне там где у вас вывод кнопки "Загрузить следующие 20 работ"
повесить ссылку <?php echo JRoute::_('&limit=' . ( ($this->pagination->pagesCurrent + 1) * $this->pagination->limit) ); ?>
Дальше на этот код вешаете код который я предоставлял, только перегружаете только тот блок который я выделил красным!

Не забыть добавить условие:
if(($this->pagination->pagesCurrent + 1) > $this->pagination->pagesCurrent){
//Не выводим кнопку "Загрузить следующие 20 работ"
}

там где [5 из 37] делается элементарно
echo '[' . $this->pagination->pagesCurrent . ' из '. $this->pagination->pagesTotal. ']';

Что бы не грабать лишнее в view.raw.php в методе display() добавьте такой код $this->setLayout('ajax');
и в папке /tmpl/ вашего вида создайте файл AJAX.php в котором сделать вывод нужного контента
*

ninth

  • Захожу иногда
  • 59
  • 0 / 0
  • [ 9 ]
Istaan, спасибо.

Всё получилось.

Только <?php echo JRoute::_('&limit=' . ( ($this->pagination->pagesCurrent + 1) * $this->pagination->limit) ); ?> всё время будет умножать limit на 2. в результате если лимит 10, то получим 20... 40... 80...
Прописал жёстко <?php echo JRoute::_('&limit=' . ($this->pagination->limit + 20) ); ?> . (хотя можно и переменной, которую можно и в кнопке вывести).

И
if(($this->pagination->pagesCurrent + 1) > $this->pagination->pagesCurrent){
//Не выводим кнопку "Загрузить следующие 20 работ"
}
лучше
if($this->pagination->limit < $this->pagination->total)){
//выводим пока меньше
}

Цитировать
ам где [5 из 37] делается элементарно
echo '[' . $this->pagination->pagesCurrent . ' из '. $this->pagination->pagesTotal. ']';
Это тоже не то, нужно - echo '[' .$this->pagination->limit.' из '.$this->pagination->total. ']';, тоесть количество выведенных работ и общее количество.

Может опять неправильно описал задачу... Предыдущие работы должны оставаться.... Тесть выводится 20 потом 40 потом 60... на странице.
« Последнее редактирование: 18.08.2014, 19:52:19 от ninth »
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
ну я тоже  не особо ваше тз знаю.. сказал просто как вариант сделать... как и не знал что выводиться должно.. я думал что [5 из 37] это страница 5 страница из 37.. вообщем $this->pagination вам предоставляет все нужные вам данные!
*

ghostcom

  • Захожу иногда
  • 103
  • 1 / 0
Расскажите пожалуйста по подробней про последний способ и что должно быть в AJAX.php
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Отправка файлов через ajax в модуль Joomla

Автор hemicide

Ответов: 19
Просмотров: 3662
Последний ответ 11.04.2022, 08:44:33
от sivers
[РЕШЕНО] Дублирование при создании

Автор platonische

Ответов: 7
Просмотров: 1725
Последний ответ 12.02.2021, 11:24:26
от platonische
[РЕШЕНО] onChange в админке на field modal

Автор platonische

Ответов: 1
Просмотров: 1035
Последний ответ 30.01.2021, 16:40:45
от platonische
Документация по разработки компонента для Joomla 3.x

Автор Aspik

Ответов: 9
Просмотров: 4195
Последний ответ 23.01.2021, 07:55:56
от hmr
Применение ajax (Аякс) в модуле Joomla

Автор tm2010

Ответов: 34
Просмотров: 6754
Последний ответ 26.09.2020, 09:38:35
от b2z