Образец в действии - Топ 12 фото просмотренных вчера
1. Хак - добавляем поле hits_2 в таблицу joomgallery:
Код: Выделить всё
ALTER TABLE `jos_joomgallery` ADD `hits_2` INT(11) NOT NULL DEFAULT '0' AFTER `hits`
Код: Выделить всё
UPDATE jos_joomgallery SET jos_joomgallery.hits_2 = jos_joomgallery.hits
Код: Выделить всё
SELECT jos_joomgallery.id, jos_joomgallery.hits, jos_joomgallery.hits_2, jos_joomgallery.hits - jos_joomgallery.hits_2 AS RESULT
FROM jos_joomgallery
WHERE (jos_joomgallery.hits - jos_joomgallery.hits_2)>0
ORDER BY jos_joomgallery.hits - jos_joomgallery.hits_2 DESC
LIMIT 12;
Код: Выделить всё
ALTER TABLE `jos_joomgallery_comments` CHANGE `cmtdate` `cmtdate` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
Код: Выделить всё
TRUNCATE TABLE `jos_joomgallery_comments`
Добавление 12 результатов в таблицу joomgallery_comments:
Код: Выделить всё
INSERT INTO jos_joomgallery_comments ( cmtpic, cmttext, published, approved ) SELECT jos_joomgallery.id AS _2, jos_joomgallery.hits - jos_joomgallery.hits_2 AS _1, 1 AS _4, 1 AS _5 FROM jos_joomgallery LEFT JOIN jos_joomgallery_comments ON jos_joomgallery.id = jos_joomgallery_comments.cmtpic WHERE (((jos_joomgallery.hits - jos_joomgallery.hits_2)>0)) ORDER BY jos_joomgallery.hits - jos_joomgallery.hits_2 DESC LIMIT 12
Код: Выделить всё
SELECT * FROM `jos_joomgallery_comments` WHERE 1
Код: Выделить всё
COM_JOOMGALLERY_TOPLIST_WROTE_AT="Просмотров за прошедшие сутки: %s"
COM_JOOMGALLERY_TOPLIST_LAST_COMMENTED_IMAGE="Топ %s фото просмотренных вчера"
Создав файл beer-count.php c таким содержаием:
Код: Выделить всё
<?php
define( '_JEXEC', 1 );
if ( file_exists( __DIR__ . '/defines.php' ) ) {
include_once __DIR__ . '/defines.php';
}
if ( !defined( '_JDEFINES' ) ) {
define( 'JPATH_BASE', __DIR__ );
require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_BASE . '/includes/framework.php';
//Инфа - http://www.vodkomotornik.ru/forum/viewtopic.php?t=6437
//Далее можем использовать API Joomla Framework
$db = JFactory::getDbo();
//$query = $db->getQuery( true )->select( '*' )->from( '#__joomgallery_comments' );//выводит
//1. Очистка таблицы _joomgallery_comments перед записью новых данных:
$db->setQuery('TRUNCATE TABLE #__joomgallery_comments')->execute();
// ожидание в течениe 1 сек.
sleep(1);
//Добавляем 12 строк cmttext = просмотров:
$db->setQuery('INSERT INTO #__joomgallery_comments ( cmtpic, cmttext, published, approved ) SELECT #__joomgallery.id AS _2, #__joomgallery.hits - #__joomgallery.hits_2 AS _1, 1 AS _4, 1 AS _5 FROM #__joomgallery LEFT JOIN #__joomgallery_comments ON #__joomgallery.id = #__joomgallery_comments.cmtpic WHERE (((#__joomgallery.hits - #__joomgallery.hits_2)>0)) ORDER BY #__joomgallery.hits - #__joomgallery.hits_2 DESC LIMIT 12')->execute();
// ожидание в течениe 1 сек.
sleep(1);
//3. Записать текущие значения hits в hits_2 для дальнейшего следующего подсчета через 24 часа:
//$sql = "UPDATE jos_joomgallery SET jos_joomgallery.hits_2 = jos_joomgallery.hits WHERE (jos_joomgallery.hits - jos_joomgallery.hits_2) > 0";
$db->setQuery('UPDATE #__joomgallery SET #__joomgallery.hits_2 = #__joomgallery.hits WHERE (#__joomgallery.hits - #__joomgallery.hits_2) > 1')->execute();