Новости Joomla

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

JoomGallery 4.1.0 - компонент галереи изображений для Joomla

JoomGallery 4.1.0 - компонент галереи изображений для Joomla.Новая итерация компонента продолжает развиваться, ведь с v.4.x компонент был переписан практически с нуля.👩‍💻 v.4.1.0. Что нового?- Редактирование метаданных изображений. Теперь метаданные можно не только читать, но и напрямую редактировать и записывать обратно в изображение JPG. Поддерживаются данные EXIF ​​и IPTC.- Полная совместимость с Joomla! 4.x, 5.x и 6.x. Компонент почистили от устаревших методов в коде.- Заметно ускорили загрузку больших галерей. Списки в админке, особенно для очень больших галерей ( >30 000 изображений), теперь загружаются значительно быстрее.- Несколько сеток lightGallery на одной странице. Будь то плагины контента или модули изображений: теперь вы можете отображать несколько галерей или категорий на одной странице без каких-либо ограничений.- Множество мелких исправлений ошибок и оптимизаций.Сайт проектаGitHub расширенияСкачать#joomla #расширения

Вышел релиз Joomla 5.3.2

Релиз исправлений ошибок Joomla 5.3.2

Проект Joomla рад сообщить о выпуске Joomla 5.3.2. Это релиз исправлений ошибок для серии Joomla 5.3.

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

ninth

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

Можно ли вывести одним запросом предыдущую, текущую и следующую записи из БД?

К примеру в таблице:
id = 0
id = 2
id = 3
id = 5
id = 8
id = 11
id = 20


Например вывод текущей (5) и следующей записи:
$query->where('id>5 LIMIT 2');

выведет:
id = 5
id = 8


вывод предудущей щей записи:
$query->where('id<5 ORDER BY id DESC LIMIT 1');

выведет:
id = 3

Как правильно сделать запрос в одной строкой $query->where(...?...)

добавлено в 14:15
А если сортировать не по ID а вообще по другому полю даже так не получится (((
« Последнее редактирование: 02.09.2014, 14:51:25 от ninth »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
хмм.. вы вроде бы в методе where не можете использовать операторы order by и limit. Каждый раз при вызове метода на объекте query к запросу вроде бы добавляется оператор and. так что если Limit одинаковый и в ту и другую сторону то проблем не будет. В противном случае наверное проще всего воспользоватся оператором IN типа where id in (...).
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Никак у вас не получится, только три запроса...
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
А что ему мешает на php сначало сформировать список идешников а потом их вывести из базы?
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
А что ему мешает на php сначало сформировать список идешников а потом их вывести из базы?
Все равно два запроса, + неизвестно количество записей..
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Да если записей немного то лучше выбрать все и перебрать чем несколько запросов пулять
интернет-блог: http://websiteprog.ru
*

ninth

  • Захожу иногда
  • 59
  • 0 / 0
  • [ 9 ]
Да если записей немного то лучше выбрать все и перебрать чем несколько запросов пулять
Много... И "начинки" в записи много. Всё это тащить и перебирать... неее)))

В материалах же есть - "назад", "вперёд".. как-то же там это работает? Только что-то разобраться не могу. Как-то там на основе пагинации?
« Последнее редактирование: 02.09.2014, 15:32:44 от ninth »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Конечно там при каждом клике новая страница грузится и новая выборка происходит
интернет-блог: http://websiteprog.ru
*

prometheus

  • Захожу иногда
  • 84
  • 7 / 0
если текущая запись которую надо вывести id=5
то за прос будет выглядеть так
Код
$cursor = 5
$ids = array($cursor, $cursor-1, $cursor+1);
$clauses = array();
foreach ($ids as $id) {
    $clauses[] = '(id='.$db->quote($id).')';
}
$query->where('('.implode('OR', $clauses).')');
добавить сюда еще проверочки если курсор в конце или вначале списка
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Много... И "начинки" в записи много. Всё это тащить и перебирать... неее)))
А вам по сути надо тока идешники вытащить и их перебрать да и то не все. Потом вторым запросом уже выбирать можете что хотите.
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Много... И "начинки" в записи много. Всё это тащить и перебирать... неее)))
А зачем вам всю начинку записи тянуть? вы же ссылки вперед назад строите на основание id, alias, и возможно id категории

В материалах же есть - "назад", "вперёд".. как-то же там это работает? Только что-то разобраться не могу. Как-то там на основе пагинации?
Там работает на основе именно выбора всех записей и только нужных полей

Тоесть SELECT id, alias, catid FROM table WHERE ... ORDER BY ...
*

prometheus

  • Захожу иногда
  • 84
  • 7 / 0
В материалах же есть - "назад", "вперёд".. как-то же там это работает? Только что-то разобраться не могу. Как-то там на основе пагинации?
Да, правильней всего это делать создавая класс списка записей и имплементировать интерфейс iterrator который обязывает создать методы current, next, rewind - пагинаторы так и делаются
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
prometheus, тогда уж нверное так лучше:
Код: php
foreach ($ids as $id) {
    $clauses[] = (int) $id;
}
$values = '(' . implode(',', $clauses).')'
$query->where("id in $values");
Но этот вариант в любом случае не подойдет потому что идешники идут не по порядку. Смотрите внимательнее.
интернет-блог: http://websiteprog.ru
*

ninth

  • Захожу иногда
  • 59
  • 0 / 0
  • [ 9 ]
Сделал два запроса. Получил два массива - один с id-шниками второй с "начинкой" одной записи.

Вывожу "предыдущий" и "следующий"
Код: php
foreach($this->mynextprev as $i => $mynextprev){

if(isset($this->mynextprev[$i+1]->id))
{
if("5 - текущий id" == $mynextprev->id){
echo "next = ".$this->mynextprev[$i+1]->id;
}
}
 
if(isset($this->mynextprev[$i-1]->id))
{
if("5 - текущий id" == $mynextprev->id){
echo "prev = ".$this->mynextprev[$i-1]->id;
}  
}
}

Так правильно?
« Последнее редактирование: 02.09.2014, 17:08:54 от ninth »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Не сразу догадался что у вас тут неявное преобразование типов в операторе if . Такой код сложно читать. Наименования переменных типа nextprev тоже сбивают с толку. А что вы собственно хотите? Вывести идешники предыдущего и следущего материала?
« Последнее редактирование: 02.09.2014, 17:16:29 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

ninth

  • Захожу иногда
  • 59
  • 0 / 0
  • [ 9 ]
...А что вы собственно хотите? Вывести идешники предыдущего и следущего материала?
Вот это самое и хочу!
Но не обязательно материалов. Это может быть галерея, меню или категории.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
А зачем вы тогда вообще перебираете? Выводите просто элементы с индексом = текущий элемент + 1 , или текущий элемент - 1. Ваш пример фактически можно записать как:
Код: php
echo "next = ".$this->mynextprev[6]->id;
echo "prev=".$this->mynextprev[4]->id;
выведет тоже самое.

А все понял почему.. ну впринципе да, можно и так наврное но вобще вам лучше массив идешников получить одномерный а потом через array_search вытащить оттуда ключ элемента с идешником 5 и вывести предыдущие и следущие элементы.
« Последнее редактирование: 02.09.2014, 18:35:27 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
А зачем вы тогда вообще перебираете? Выводите просто элементы с индексом = текущий элемент + 1 , или текущий элемент - 1. Ваш пример фактически можно записать как:
Код: php
echo "next = ".$this->mynextprev[6]->id;
echo "prev=".$this->mynextprev[4]->id;
выведет тоже самое.
А индекс текущего элемента как вы узнаете?)))
*

ninth

  • Захожу иногда
  • 59
  • 0 / 0
  • [ 9 ]
"5 - текущий id" - к примеру 5, может быть 48 или 2345. А следующий ид может быть 35767..., а предыдущий 3456

...Смотрите внимательнее.

....
К примеру в таблице:
id = 0
id = 2
id = 3
id = 5
id = 8
id = 11
id = 20
« Последнее редактирование: 02.09.2014, 18:36:59 от ninth »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
да-да понял уже туплю выше поправился. вам одномерный массив лучше получить, почему он у вас такой если только идешники в нем? У вас получился массив объектов. С одномерным массивом можно проще записать:
Код: php
$key = array_search(5, $ids)
echo ids[$key + 1];
echo ids[$key - 1];
« Последнее редактирование: 02.09.2014, 18:41:03 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

ninth

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

...вам одномерный массив лучше получить, почему он у вас такой если только идешники в нем?
Потому, что loadObjectlist() использовал.
Только в Joomla 3.x для получения одномерного массива нужно использовать loadColumn() а не loadResultArray().
« Последнее редактирование: 03.09.2014, 00:05:55 от ninth »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод статистики по всем проектам в один roster

Автор r0m4n

Ответов: 4
Просмотров: 743
Последний ответ 18.12.2019, 18:47:57
от r0m4n
Вывод таблицы, деление на страницы

Автор March Cat

Ответов: 6
Просмотров: 1076
Последний ответ 09.01.2019, 18:49:15
от dmitry_stas
Модификация модуля lastet_news вывод времени перед заголовком

Автор Morphiss

Ответов: 9
Просмотров: 2306
Последний ответ 19.04.2016, 12:41:55
от spsyper
Состояние записи - как заставить работать во фронте?

Автор Thomas2000

Ответов: 7
Просмотров: 1195
Последний ответ 26.01.2015, 22:24:06
от b2z
ari quiz - вывод результатов с содержимым

Автор cheeter

Ответов: 4
Просмотров: 1453
Последний ответ 23.01.2015, 15:51:55
от cheeter