Новости Joomla

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

👩‍💻 Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1. Это релиз, в который включены уже проверенные изменения, но ещё очень многие исправления и улучшения ждут своей очереди. Joomla следит за качеством и безопасностью своего кода и каждое изменение должно быть успешно протестировано как минимум ещё двумя участниками сообщества. Разработка Joomla ведётся на платформе GitHub.Филипп Уолтон (Philip Walton) - один из разработчиков, кто активно вносит свой вклад в ядро Joomla. Он уже несколько месяцев посвящает свои послеполуденные часы пятницы работе с Joomla и предлагает присоединиться к нему. 📆 Пятница, 30 мая 2025, с 15:00 до 17:00 по UTC (Лондон) - с 18:00 до 20:00 по Москве.В чате Google Meet Филипп готов помочь с тестированием тем, кто будет делать это в первый раз. А так же он подготовил список лёгких Pull Request, которые можно протестировать довольно быстро. Чем больше тестов будет проведено сейчас, тем меньше ошибок вылезет потом. На данный момент 148 (уже 147 на момент написания заметки) PR на GitHub Joomla ждут тестирования.👩‍💻 Open to all. All together.Также вам поможет сделать первые шаги это видео.GitHub JoomlaДа, это вечер пятницы. Но тестирование занимает порой минут 15, а доброе дело сделано. Просто убедитесь, что разработчик чего-то не пропустил и всё работает как ожидается.#joomla #joomla6 #community

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

grishin

  • Захожу иногда
  • 145
  • 0 / 0
Необходимо в карточке товара вывести количество просмотров пользователями данного товара.
Существует ли такое дополнение.
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Такой статистики VM не ведёт.
Но во флайпедж врезку сделать не сложно.
Создать таблицу в БД из двух колонок - id товара и колличество хитов.
При отображении флайпейджа вытягивать количество, выводить, добавлять и вставлять назад.

Скажем таблица
product_id  | hits

Код
// берём объект БД, чтобы далее с ним работать
$db =& JFactory::getDBO();
// выбираем запись нашего товара
$query = 'SELECT * from #__vm_mycounyter WHERE product_id="'.$product_id.'"';
// передаём в объёкт запрос
$db->setQuery($query);
// загружаем результаты запроса
$stats = $db->loadObject();

// выводим текст
echo "Количество хитов: ".$stats->hits;
// увеличиваем значение
$stats->hits = $stats->hits+1;
// запрос - удаляем старую запись
$query = 'DELETE FROM #__vm_mycounyter  WHERE product_id = "'.$product_id.'"';
// передаём в объёкт запрос
$db->setQuery($query);
// выполняем запрос на удаление
$db->query();
// создаём новую такую же, но больше
$query = "INSERT INTO #__vm_mycounyter (`product_id`, `hits`) VALUES ('".$product_id."', '".$stats->hits."')";
// передаём в объёкт запрос
$db->setQuery($query);
// выолняем запрос
$db->query();
// освобождаем память
unset($db);

Писал тут, так что могут быть ошибки. Поиграйся, чтобы исправить.
При включенном системном плагине кеширования может не учитываться, надо проверять. Тогда это надо в другом месте ставить, с использованием user_class.

При удалении товара таблица не будет уменьшаться, это тоже минус. Но плюс, что в ядро магазина лезть не надо.
« Последнее редактирование: 20.05.2011, 20:11:54 от Gruz »
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

grishin

  • Захожу иногда
  • 145
  • 0 / 0
Спасибо ОГРОМНОЕ за помощь.
А можно описать по шагам, модификацию?
1-Какой запрос SQL выполнить на создание таблиц? или с какими параметрами они должны быть?
2-Куда вставлять этот код
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
В phpMyAdmin несложно руками добавить, не надо для этого запросы писать.

Вот так создастся таблица

Код
CREATE TABLE IF NOT EXISTS `jos_vm_mycounyter` (
  `product_id` int(11) NOT NULL,
  `hits` int(11) NOT NULL,
  PRIMARY KEY (`product_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

« Последнее редактирование: 20.05.2011, 20:12:12 от Gruz »
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

grishin

  • Захожу иногда
  • 145
  • 0 / 0
А код в шаблон вывода товара в таком виде вставить?
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Не имеет значения.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

grishin

  • Захожу иногда
  • 145
  • 0 / 0
БД добавил
Вставил в flypage.tpl
Код
<?php echo
 // берём объект БД, чтобы далее с ним работать
$db =& JFactory::getDBO();
// выбираем запись нашего товара
$query = 'SELECT * from #__vm_mycounyter WHERE product_id="'.$product_id.'"';
// передаём в объёкт запрос
$db->setQuery($query);
// загружаем результаты запроса
$stats = $db->loadObject();

// выводим текст
echo "Количество хитов: ".$stats->hits;
// увеличиваем значение
$stats->hits = $stats->hits+1;
// запрос - удаляем старую запись
$query = 'DELETE FROM #__vm_mycounyter  WHERE product_id = "'.$product_id.'"';
// передаём в объёкт запрос
$db->setQuery($query);
// выполняем запрос на удаление
$db->query();
// создаём новую такую же, но больше
$query = "INSERT INTO #__vm_mycounyter (`product_id`, `hits`) VALUES ('".$product_id."', '".$stats->hits."')";
// передаём в объёкт запрос
$db->setQuery($query);
// выолняем запрос
$db->query();
// освобождаем память
unset($db);?>

Полностью слетело форматирование и выдало ошибку
Catchable fatal error: Object of class JDatabaseMySQL could not be converted to string in Z:\home\site\www\components\com_virtuemart\themes\default\templates\product_details\flypage.tpl.php on line 63
Вот эта строчка $db =& JFactory::getDBO();
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Знаешь сказку про кашу из топора?

У тебя в коде в первой строчке лишнее echo
Код
<?php echo
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

grishin

  • Захожу иногда
  • 145
  • 0 / 0
Все получилось)) спасибо огромное, количество хитов(просмотров выводит)
Можно ещё спросить?)
А как в разделе вывести десятку самых просматриваемых товаров этого раздела или всего магазина? под надписью "Недавно просмотренные товары"
1 - Товар1 - 9566 просмотров
2 - Товар4 - 8654 просмотров
3 - Товар5 - 3211 просмотров
.....
Это сложно реализовать?
« Последнее редактирование: 21.05.2011, 00:24:13 от grishin »
*

grishin

  • Захожу иногда
  • 145
  • 0 / 0
А если в таблице от 1000товаров это сильно нагрузит БД, сервер?
*

grishin

  • Захожу иногда
  • 145
  • 0 / 0
И ещё возник вопрос, а как избежать накруток и что бы за один сеанс (сессию) только один просмотр засчитывался
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Да, видимо про кашу из топора ты сказку знаешь отлично.

Далее уже не каша, а сервированный стол требуется с блюдами из кухонь разных народов.

Всё это можно реализовать, но уже не так просто. Я сходу не знаю. Копай сам по поводу сессии.
http://docs.joomla.org/JSession/1.5
В сессию добавлять значение, что уже был просмотр. И потом проверять, есть ли такое значение в сессии.

По поводу модуля, то, скорее всего, надо свой написать модуль. Вобщем-то не сложно, но и не 5 минут.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
Нужно тоже самое что ТС, но в админке. Пробовал нифига не получилось. Подскажите правильный код в адмику.
Надо в файл administrator\components\com_virtuemart\html\product.product_list.php
прописать вывод, а в файл карточки товара на сайте код сбора статистики, так?
Можно подробней?
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Отложил в закладки. По свободе, может, гляну.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
Для вывода только цифры нужно вот так прописать, да?
Код
// берём объект БД, чтобы далее с ним работать
$db =& JFactory::getDBO();
// выбираем запись нашего товара
$query = 'SELECT * from #__vm_mycounyter WHERE product_id="'.$product_id.'"';
// передаём в объёкт запрос
$db->setQuery($query);
// загружаем результаты запроса
$stats = $db->loadObject();
// выводим текст
echo "Количество хитов: ".$stats->hits;
// освобождаем память
unset($db);

Я пытаюсь это вывести в админке, файлы administrator\components\com_virtuemart\html\product.product_list.php
Не получается. Не знаю, как правильно прописать?
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Для вывода только цифры нужно вот так прописать, да?
Код
// берём объект БД, чтобы далее с ним работать
$db =& JFactory::getDBO();
// выбираем запись нашего товара
$query = 'SELECT * from #__vm_mycounyter WHERE product_id="'.$product_id.'"';
// передаём в объёкт запрос
$db->setQuery($query);
// загружаем результаты запроса
$stats = $db->loadObject();
// выводим текст
echo "Количество хитов: ".$stats->hits;
// освобождаем память
unset($db);

Я пытаюсь это вывести в админке, файлы administrator\components\com_virtuemart\html\product.product_list.php
Не получается. Не знаю, как правильно прописать?


А слова "Количество хитов" выводятся?
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
А слова "Количество хитов" выводятся?
Неа. Выдает ошибку
Код
Fatal error: Call to undefined method JDatabaseMySQL::f() in administrator\components\com_virtuemart\html\product.product_list.php on line 342
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Код
// берём объект БД, чтобы далее с ним работать
$db1 =& JFactory::getDBO();
// выбираем запись нашего товара
$query = 'SELECT * from #__vm_mycounyter WHERE product_id="'.$product_id.'"';
// передаём в объёкт запрос
$db1->setQuery($query);
// загружаем результаты запроса
$stats = $db1->loadObject();
// выводим текст
echo "Количество хитов: ".$stats->hits;
// освобождаем память
unset($db1);

Так попробуй.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
Так попробуй.
Теперь без ошибок выводит. Но выводит число просмотров товара с product_id 0
В таблицы vm_mycounyter от куда-то появился такой продукт сразу после ее создания.
Надо чтобы выводилось число просмотров каждого продукта.
product_id видимо неправильно получает. Или не там прописан код.
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
только не удивляйтесь цифрам - боты тоже будут считаться
Да. Но это можно исправить. Это потом.
Сейчас надо сделать так, чтобы все работало!
Как прописать product_id чтобы правильно выводилось - для каждого товара свое число просмотров?
« Последнее редактирование: 27.01.2012, 18:16:51 от baloon »
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
Не получает id товара видимо.
Вот эта строка
$query = 'SELECT * from #__vm_mycounyter WHERE product_id="'.$product_id.'"';
Вот как получает id ниже по коду в файле administrator\components\com_virtuemart\html\product.product_list.php
$listObj->addCell( $db->f('product_id') );

Можно ли привести первую строку кода в соответствие со второй?
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
Вот так работает
$query = 'SELECT * from #__vm_mycounyter WHERE product_id="'.$db->f('product_id').'"';
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
А можно код вывода количества просмотров сделать проще, меньше?
Сейчас у меня такой код работает.
      $db1 =& JFactory::getDBO();
      $query = 'SELECT * from #__vm_mycounyter WHERE product_id="'.$db->f('product_id').'"';
      $db1->setQuery($query);
      $stats = $db1->loadObject();
      $tmp_cell .= 'Просмотров:' .$stats->hits;
      unset($db1);
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
А можно код вывода количества просмотров сделать проще, меньше?

Нет. Вынеси код в функцию и её вызывай, будет нагляднее, возможно. Но строк кода от этого минимум на 3 прибавится в файле.

Код
$tmp_cell .= 'Просмотров:' .$stats->hits;

Это вряд ли нужно.
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
Нет. Вынеси код в функцию и её вызывай, будет нагляднее, возможно. Но строк кода от этого минимум на 3 прибавится в файле.
Тогда не надо. Спасибо за код! :)  Я php не знаю, долго мучился бы.
Это вряд ли нужно.
Иначе число выводиться где-то не там где надо. Там структура файла такая, все через $listObj и $tmp_cell выводится.

А против ботов не дописывали код?

*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
Нет.
http://www.google.com.ua/search?q=php+check+if+bot&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:uk-UA:official&client=firefox-a

Найти функцию проверки, и на странице товара запись в БД загнать в условие - если не бот.

По-моему, первый линк самое оно: http://neo22s.com/function-to-check-if-visitor-is-a-bot/

С рекомендацие в коментах считать ботом, если $_SERVER['HTTP_USER_AGENT'] пусто.

Кроме того реализовать, то, что описано здесь: http://joomlaforum.ru/index.php/topic,165454.msg893338.html#msg893338

Да-да, ты не знаешь PHP. На таких задачах легче всего и научиться.
« Последнее редактирование: 27.01.2012, 19:51:24 от Gruz »
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
Много там ботов перечислено, а яндекса вроде нету.
Вот такой нашел, здесь (http://wp-kama.ru/id_55/schitaem-kolichestvo-posescheniy-stranits-na-wordpress.html)
Вот антибот от туда
Код
        if(){ 
            $useragent = $_SERVER['HTTP_USER_AGENT']; 
            $notbot = "Mozilla|Opera"; //Chrome|Safari|Firefox|Netscape - все равны Mozilla 
            $bot = "Bot/|robot|Slurp/|yahoo"; //Яндекс иногда как Mozilla представляется 
            if ( !preg_match("/$notbot/i", $useragent) || preg_match("!$bot!i", $useragent) ) 
        } 
Нормальный?
Только я не знаю как его прикрутить. Если бы можно было сразу проверить...

А сессии пока думаю не надо. Да и... покупатель посмотрел товар, потом другие, потом опять вернулся к этому товару, а его не засчитает, но ведь раз вернулся, значит понравился, значит надо еще +1. Счетчик ведь надо для определения какие товары больше смотрят.

Кстати в Joomla есть ведь счетчик, показывает хиты просмотров статей. Наверное достаточно было бы его прикрутить к товарам. Я попробовал быстренько копнуть, но нифига не понял и оставил.
*

Gruz

  • Завсегдатай
  • 1275
  • 167 / 3
  • gruz@jabber.org | gruz.org.ua
В эту функцию не сложно добавить яндекс: http://neo22s.com/function-to-check-if-visitor-is-a-bot/

Как узнать Яндекс?
http://www.google.com/search?q=php+%D1%83%D0%B7%D0%BD%D0%B0%D1%82%D1%8C+yandex&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:uk-UA:official&client=firefox-a

http://zalex.info/script/post1187914199-6.html


В коде ставляешь ту функцию, из первого линка. Но смотри, чтобы у тебя функция не был в середине другой функции. Можешь её сделать методом класса. Это основы синтаксиса PHP, не сложно понять.

Тогда  в коде, если функция глобальна, проверяшь
Код
if (!is_bot()) {
  //тут код, который заганяет в БД +1
}

Если ты функцию is_bot сделал методом класса, то
Код
if (!$this->is_bot()) {
  //тут код, который заганяет в БД +1
}
Життя має дві форми - горіння і гниття!
-
Со мной на "ты" - Вам лень развёрнуто формулировать вопрос? Нам лень отвечать. Правильный вопрос: - Версии J! и проблемного расширения? - Что хотел? - Что пробовал? - Что получилось и что не получилось? - Какие были ошибки?
*

baloon

  • Захожу иногда
  • 369
  • 13 / 0
Вот так написал, правильно?
Вместо имени бота поставил Opera и при посещение страницы через оперу счетчик не засчитывает.

Код
<?php
function is_bot(){
$botlist = array("Yahoo Slurp", "WebAlta", "Yandex", "StackRambler",
"Teoma", "alexa", "froogle", "Gigabot", "inktomi",
"looksmart", "URL_Spider_SQL", "Firefly", "NationalDirectory",
"Ask Jeeves", "TECNOSEEK", "InfoSeek", "WebFindBot", "girafabot",
"crawler", "www.galaxy.com", "Googlebot", "Scooter", "Slurp",
"msnbot", "appie", "FAST", "WebBug", "Spade", "ZyBorg", "rabaz",
"Baiduspider", "Feedfetcher-Google", "TechnoratiSnoop", "Rankivabot",
"Mediapartners-Google", "Sogou web spider", "WebAlta Crawler","TweetmemeBot",
"Butterfly","Twitturls","Me.dium","Twiceler");
 
foreach($botlist as $bot){
if(strpos($_SERVER['HTTP_USER_AGENT'],$bot)!==false)
return true; // Is a bot
}
return false; // Not a bot
}

if (!is_bot()) {
$db =& JFactory::getDBO();
$query = 'SELECT * from #__vm_mycounyter WHERE product_id="'.$product_id.'"';
$db->setQuery($query);
$stats = $db->loadObject();
$stats->hits = $stats->hits+1;
$query = 'DELETE FROM #__vm_mycounyter  WHERE product_id = "'.$product_id.'"';
$db->setQuery($query);
$db->query();
$query = "INSERT INTO #__vm_mycounyter (`product_id`, `hits`) VALUES ('".$product_id."', '".$stats->hits."')";
$db->setQuery($query);
$db->query();
unset($db);
}
?>
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не выводит списком Настраиваемое поле в VirtueMart 5.0

Автор ЛюдмилаМир

Ответов: 2
Просмотров: 2985
Последний ответ 25.08.2019, 16:27:04
от ЛюдмилаМир
Joomla VirtueMart помощь в переводе

Автор akkord31

Ответов: 0
Просмотров: 2843
Последний ответ 21.05.2019, 09:14:02
от akkord31
Миграция с Joomla 1.5 на 3 с VirtueMart 1.1.9 stable на свежую. Кто поможет?

Автор Гриша-Десантник

Ответов: 7
Просмотров: 3087
Последний ответ 23.04.2019, 10:22:25
от draff
Переход на https VirtueMart 1.1.4 проблемы с фото

Автор Sergey1984

Ответов: 4
Просмотров: 3226
Последний ответ 25.10.2018, 20:56:54
от Sergey1984
VirtueMart 1.1.4 и https дополнительные фото товаров

Автор Sergey1984

Ответов: 0
Просмотров: 2798
Последний ответ 23.10.2018, 19:58:44
от Sergey1984