Как подсчитать программно количество товара и вывести на страницу?

4 года 9 мес. назад #5060 от zx16
Добрый вечер, уважаемые специалисты, как сделать подсчет товара в virtuemarte 2 и вывести все это, к примеру, на главную страницу? Ну вот просто нужно что бы на главной была яркая строка с надписью У НАС УЖЕ ... ТОВАРОВ!! спасибо всем заранее за ответ.

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

4 года 9 мес. назад - 4 года 9 мес. назад #5065 от Wedal
zx16, не знаю, есть ли готовая функция в VM2, но можно простейшим запросом в БД.
$db = JFactory::getDBO();
$query = "SELECT COUNT(*) FROM #__virtuemart_products";
$db->setQuery($query);
$count = $db->loadResult();
echo $count;
Спасибо сказали: zx16

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

4 года 9 мес. назад - 4 года 9 мес. назад #5074 от zx16
Спасибо огромное!!! очень помогли! Сделал модуль по вашему коду, для joomla 2.5 . Прикрепил картинку, можете посмотреть на результат кому интересно!

И прикрепил модуль готовый , который можете установить себе! Установка стандартная, название mod_total.. Может и кривовато, но все работает))
Вложения:

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

4 года 9 мес. назад #5079 от Wedal
zx16, пожалуйста. А склонения слова "товаров" вы сделали? :-)

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

4 года 9 мес. назад #5086 от zx16
Нет(( поменял на КОЛИЧЕСТВО ВЕЩЕЙ НА САЙТЕ УЖЕ ...! А не подскажете, как склонение сделать?

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

4 года 9 мес. назад #5091 от Wedal

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

4 года 9 мес. назад - 4 года 9 мес. назад #5100 от zx16
<?php
function declOfNum($number, $titles)  
{  
    $cases = array (2, 0, 1, 1, 1, 2);  
    return $number." ".$titles[ ($number%100 > 4 && $number %100 < 20) ? 2 : $cases[min($number%10, 5)] ];  
} 
defined('_JEXEC') or die('Direct Access to this location is not allowed.');
$db = JFactory::getDBO();
$query = "SELECT COUNT(*) FROM #__virtuemart_products";
$db->setQuery($query);
$count = $db->loadResult();
echo 'На сайте уже '.declOfNum($count, array('товар!', 'товара!', 'товаров!'));
?>

Вот так, вродь всё работает, честно, я не очень разбираюсь в php, ну вот так вышло, только начал, так вот хотел спросить, правильно всё тут? Это ведь запрос к базе данных, а с ней шутки плохи)

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

4 года 9 мес. назад #5106 от Wedal
zx16, нормально, только строчка:
defined('_JEXEC') or die('Direct Access to this location is not allowed.');
всегда ставится первой и запрещает прямой доступ к файлу.
Далее хорошо было бы предусмотреть кэширование, чтобы этот запрос не делался каждый раз для каждого пользователя. Но это уже другая история.

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

4 года 9 мес. назад #5114 от zx16
ааа, да да, правильно, меня именно это функция смущала, вернее ее место положение.. А вот про кэширование, я делаю магазин, на разработку движка денег пожалел, ибо не заю как оно пойдет дальше, а если оно пойдет, и в день будет куча польователей, так они мне поставят на колени базу и сайт ?? Нужно нужно копаться и разбираться с кешированием, так как мне очень нужен это модуль по подсчету товара, он украшает сайт, прям как его и не хватало только)) Wedal, спасибо огромное за помощь!!

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

4 года 9 мес. назад #5126 от zx16
Решил добавить кэширование, для этого изменил файл mod_total.php
<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="2.5.0" method="upgrade">
        <!-- Модуль вывода количества товара -->
        <name>mod_total</name>
        <version>0.0.1</version>
        <!-- Описание, не обязательно, по умолчанию использеуется имя модуля -->
        <description>Модуль считает количество товаров</description>
        <files>
                <filename module="mod_total">mod_total.php</filename>
                <filename>mod_total.xml</filename>
                <filename>index.html</filename>
        </files>
 
	<config>
		<fields name="params">
 
			<fieldset name="advanced">
				<field name="cache" type="list" default="0" label="Включить" description="Включение кэширования">
					<option value="1">да</option>
					<option value="0">нет</option>
				</field>
				<field name="cache_time" type="text" default="900" label="Время жизни кэша" description="секунды" />
			</fieldset>
		</fields>
	</config>
 
 
</extension>
работает все после того как в джумле включаем кэширование, но понял скоро, что можно было и не редактировать файл xml, так как джумла кэширует всё) или опять я что то не так понял

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.


Вверх