Новости Joomla

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

WT IndexNow плагин для Joomla - отправка страниц сайта на переиндексацию в поисковые системы

WT IndexNow плагин для Joomla - отправка страниц сайта на переиндексацию в поисковые системы

👩‍💻 WT IndexNow плагин для Joomla - отправка страниц сайта на переиндексацию в поисковые системы.Пакет плагинов, обеспечивающий ручную и автоматическую отправку url адресов Joomla в поисковые системы на переиндексацию по протоколу IndexNow. Согласно документации протокол поддерживают все крупнейшие поисковые системы, кроме Google. Протокол служит для получения от сайтов URL, которые нужно переиндексировать заново или проиндексировать в первый раз как можно быстрее. Отправка адресов сайта таким образом существенно ускорит индексацию нового или изменённого контента поисковыми системами.Поисковые системы по этому протоколу обмениваются друг с другом данными, поэтому отправив URL в одну из них вы сообщаете их сразу всем. Протокол IndexNow поддерживают:- Amazon- Microsoft Bing- Naver- Seznam.cz- Yandex - YepСуточный лимит URL - 10000 в сутки. Возможна отправка вручную и автоматически. Поддерживаются:- материалы и категории материалов Joomla- контакты и категории контактов Joomla- SW JProjects - компонент каталога расширений для Joomla- JoomShopping - компонент интернет-магазина для Joomla- Phoca Download - компонент каталога файлоа для Joomla- Phoca Cart - компонент интернет-магазина для Joomla- RadicalMart - компонент интернет-магазина для JoomlaПакет плагинов работает с Joomla 4.3+. Тестировался на Joomla 5 и Joomla 6.Смотреть видео:- ВК Видео- RuTubeСсылки:Страница расширенияGitHub расширенияРаздел Поддержка протокола IndexNow в справке Яндекса@joomlafeed#joomla #seo #indexnow

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

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
PHP
« : 09.01.2018, 05:06:06 »
Здравствуйте подскажите вот  есть у меня код
Код
		protected function getTicketsd($id) {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$array = array();

$query->clear()
->select($db->qn('id'))->select($db->qn('seats'))
->from($db->qn('#__rseventspro_tickets'))
->where($db->qn('ide').' = '.(int) $id);

$db->setQuery($query,0,3);
$tickets = $db->loadObjectList();

if (!empty($tickets)) {
foreach ($tickets as $ticket) {
$query->clear()
->select('SUM(ut.quantity)')
->from($db->qn('#__rseventspro_user_tickets','ut'))
->join('left', $db->qn('#__rseventspro_users','u').' ON '.$db->qn('u.id').' = '.$db->qn('ut.ids'))
->where($db->qn('u.state').' IN (0,1)')
->where($db->qn('ut.idt').' = '.(int) $ticket->id);

$db->setQuery($query);
$purchased = $db->loadResult();

if ($ticket->seats == 0) {
$array[] = JText::_('COM_RSEVENTSPRO_GLOBAL_UNLIMITED').' '.'<em>'.$ticket->name.'</em>';
} else {
$available = $ticket->seats - $purchased;
if ($available <= 0) continue;
$array[] = $available;
}
}
}

return !empty($array)? implode($array) : '';
}
Который из базы берет число в строчке seats например 1. У меня seats сейчас например 3 шт. Выводится сейчас 111. Но при бронировании пользователем места он убирает одно число, то есть как я понял идет сравнение и выводит 11 . Подскажите как мне сложить эти цифры чтобы в результате получить например 3 ? Раньше между цифрами были запятые я их убрал а вот как сложить теперь эти цифры не знаю. Пробывал
Код
$array[] = $available;
заменить на
Код
$array[] = $available + $available;
Так выводит  333 заместо просто 3.
« Последнее редактирование: 09.01.2018, 05:29:16 от gm35 »
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: PHP
« Ответ #1 : 09.01.2018, 09:45:05 »
Код
return !empty($array)? array_sum($array) : '';
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: PHP
« Ответ #2 : 09.01.2018, 12:13:54 »
нельзя же просто суммировать, судя по коду в $array может быть текст
Код
$array[] = JText::_('COM_RSEVENTSPRO_GLOBAL_UNLIMITED').' '.'<em>'.$ticket->name.'</em>';

имхо там надо подсчета логику поменять, а то все смешалось, люди, кони...

и вероятно запятую тоже нельзя убирать, видимо было раньше так
Код
return !empty($array)? implode(',', $array) : '';
и я так думаю это было совсем не зря...
« Последнее редактирование: 09.01.2018, 12:17:06 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #3 : 09.01.2018, 14:14:14 »
Спасибо огромное!
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #4 : 09.01.2018, 14:14:54 »
Код
return !empty($array)? array_sum($array) : '';
Спасибо огромное! Все  получилось))))
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: PHP
« Ответ #5 : 09.01.2018, 15:25:20 »
Все  получилось
я так откровенно говоря не думаю :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: PHP
« Ответ #6 : 09.01.2018, 15:35:58 »
Угу. Сообщение о пустом результате выводиться не будет. Надо обработать более корректно.
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #7 : 10.01.2018, 02:02:15 »
Угу. Сообщение о пустом результате выводиться не будет. Надо обработать более корректно.
А я сделал так    
Код
return !empty($array)? array_sum($array) : 'Ни одного';
И теперь если не чего не осталось то пишет "Ни одного"
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #8 : 10.01.2018, 02:13:31 »
Угу. Сообщение о пустом результате выводиться не будет. Надо обработать более корректно.
Еще не подскажите, данное сообщение выводится в админке, хочу вывести его на сайт в админке у меня выводится так
Код
<?php if ($availabletickets11   = $this->getTicketsd($row->id)) { ?>
<p>Осталось билетов: <?php echo $availabletickets11 ?></p>
<?php } ?>
А если я вставляю в php файл этого же компонента но в файл который выводит данные на сайте вставляю данный код указанный выше,  прописываю код в другом файле 
Код
		public function getTicketsd($id) {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$array = array();

$query->clear()
->select($db->qn('id'))->select($db->qn('seats'))
->from($db->qn('#__rseventspro_tickets'))
->where($db->qn('ide').' = '.(int) $id);

$db->setQuery($query,0,3);
$tickets = $db->loadObjectList();

if (!empty($tickets)) {
foreach ($tickets as $ticket) {
$query->clear()
->select('SUM(ut.quantity)')
->from($db->qn('#__rseventspro_user_tickets','ut'))
->join('left', $db->qn('#__rseventspro_users','u').' ON '.$db->qn('u.id').' = '.$db->qn('ut.ids'))
->where($db->qn('u.state').' IN (0,1)')
->where($db->qn('ut.idt').' = '.(int) $ticket->id);

$db->setQuery($query);
$purchased = $db->loadResult();

if ($ticket->seats == 0) {
$array[] = JText::_('COM_RSEVENTSPRO_GLOBAL_UNLIMITED').' '.'<em>'.$ticket->name.'</em>';
} else {
$available = $ticket->seats - $purchased;
if ($available <= 0) continue;
$array[] = $available;
}
}
}

return !empty($array)? array_sum($array) : 'Ни одного';
}
То результат всегда выводит 'Ни одного' то есть не меняются данные.
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #9 : 25.01.2018, 00:10:21 »
Кто нибудь знает? Почему этот же код не работает в компонентах не админ
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: PHP
« Ответ #10 : 25.01.2018, 00:17:14 »
dmitry_stas - а неправильней ли делать SUM(seats) на уровне запроса из базы? Так понимаю что запрос должен отдать количество мест, вот пусть он и считает, зачем ты предлагаешь обрабатывать уже PHP массив на выходе?
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #11 : 25.01.2018, 00:20:28 »
dmitry_stas - а неправильней ли делать SUM(seats) на уровне запроса из базы? Так понимаю что запрос должен отдать количество мест, вот пусть он и считает, зачем ты предлагаешь обрабатывать уже PHP массив на выходе?
Так в админке в этом компоненте все считает, а на сайте при выводе этого же кода не хочет выводить хоть какой результат.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: PHP
« Ответ #12 : 25.01.2018, 00:22:11 »
Ну так видимо в админке в SQL запросе и отрабатывает sum(seats), но вы то предлагаете разбирать ваш кастомный код, потому и спросил - зачем сумму искать в выходящем массиве но не сразу получать из запроса одной строкой
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #13 : 25.01.2018, 00:33:06 »
Ну так видимо в админке в SQL запросе и отрабатывает sum(seats), но вы то предлагаете разбирать ваш кастомный код, потому и спросил - зачем сумму искать в выходящем массиве но не сразу получать из запроса одной строкой
Понял теперь, значит надо напрямую. Только вот он запрашивает id определенного события потом seats потом tickets и user_tickets,  то есть не из одного места данные берет. Там в этом компоненте есть билет или билеты в этих белетах есть места. Но при бронировании он не вычитает из этих мест. А получается из определенного события со своим id берет билет, берет места складывает их и вычитает из них другой запрос какой пользователь забронировал место. По этому я подумал что тут масло маслено и не стал изменять код основательно а задал вопрос с суммой этих билетов тут. 
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: PHP
« Ответ #14 : 25.01.2018, 00:37:30 »
gm35 мне трудно дать готовый ответ не видя и не зная базы, но с подобными вещами хорошо знаком.
Нам нужно сделать SELECT SUM(что-то) FROM и вот тут дальше пошли либо цеплять джойнами нужные таблицы либо в WHERE можно еще подзапросами делать.
В любом случае на мой взгляд подобную вещь (количество свободных мест на событие с учетом уже выкупленных билетов) надо делать именно на уровне MySQL, а не вытягивать кучу данных в запросе и потом на PHP их обрабатывать - вот именно это получается масло масляное.

Дадите дизайн ваших таблиц с комментариями по полям и что в итоге нужно получить - дам конкретный запрос на результат без проблем.

Но хотя костыли тоже вещь, если вопрос решен - это главное, красота кода уже потом. Ну а оптимизация скорости вообще редко важно экономить миллисекунды.
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: PHP
« Ответ #15 : 25.01.2018, 01:33:07 »
dmitry_stas - а неправильней ли делать SUM(seats) на уровне запроса из базы? Так понимаю что запрос должен отдать количество мест, вот пусть он и считает, зачем ты предлагаешь обрабатывать уже PHP массив на выходе?
та я вроде такого не предлагал :) наоборот уточнил что нельзя суммировать, потому что в массиве там не только числа.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться