
Очень важным сервисом на любой доске объявлений является кнопка «Поднять объявление». Правда, об этом не всегда помнят, к сожалению, разработчики бесплатных расширений. Но, как говорится, «Дарёному коню в зубы не смотрят» (народная мудрость), поэтому попытаемся исправить мелкие недоработки самостоятельно.
Отличный мощный компонент доски объявлений для Joomla 1.5 — AdsManager. У меня стоит на данный момент AdsManager версии 2.6.5, поэтому я расскажу как реализовать возможность поднятия объявлений именно в этой версии бесплатной доски объявлений. Всё очень просто, так как разработчики в AdsManager 2.6.5 уже реализовали кнопку «Продлить объявление», но она начинает работать только тогда, когда уже срок размещения объявления подходит к концу и на электронный ящик пользователя ушло письмо с ссылкой продления объявления ещё на N-ое количество дней/суток. А вот для того, чтобы пользователь смог поднять своё объявление о товарах/услугах раз в сутки и объявление переместилось на самую верхушку списка, нужна простая правка.
Кнопка «Поднять объявление»
Открываем файл content.php полный путь к файлу: /administrator/components/com_adsmanager/models/content.php). Ищем строки ниже и комментируем их. Я не удаляю, а, на всякий случай, просто заключаю в комментарии ненужный код (многострочные комментарии в PHP имеют вид /* код /*):
/* function renewContent($contentid,$ad_duration) { $this->_db->setQuery( "SELECT expiration_date FROM #__adsmanager_ads WHERE id = ".(int)$contentid); $expiration_date = $this->_db->loadResult(); $time = strtotime($expiration_date); if ($time < time()) { $time = time(); } $time = $time + ( $ad_duration * 3600 *24); $newdate = date("Y-m-d",$time); $this->_db->setQuery( "UPDATE #__adsmanager_ads SET expiration_date = '$newdate', date_created = CURDATE(),recall_mail_sent=0,published=1 WHERE id=".(int)$contentid." and recall_mail_sent = 1"); $this->_db->query(); }*/
Сразу за этими закомментированными строками добавляем следующие:
function renewContent($contentid,$ad_duration) { $this->_db->setQuery( "UPDATE #__adsmanager_ads SET expiration_date = DATE_ADD(NOW(), INTERVAL +$ad_duration DAY), date_created = NOW(),recall_mail_sent=0,published=1 WHERE id=".(int)$contentid); $this->_db->query(); }
Вот и всё! Теперь при нажатии на кнопку «Продлить объявление» объявление будет подниматься в самый верх списка! Дата и время подачи объявления будут обновляться, то есть, заменяться на дату/время момента нажатия на кнопку и автоматически объявление будет продлеваться на количество дней, которые выбраны в настройках компонента для показа объявлений на сайте. Это привлечёт больше внимания к доске объявлений, ведь пользователи будут стремиться к тому, чтобы их объявления чаще были на вершине списка — там их объявления о товарах/услугах увидит больше посетителей сайта.
Поднять объявление раз в сутки
Код выше позволяет пользователю поднимать своё объявление каждый день хоть 50 раз. Умники могут написать скрипты, которые будут обновлять объявления по 200 раз на день, поэтому нужно защитить себя и других пользователей доски от таких манипуляций. Поэтому заменяем код выше на этот:
function renewContent($contentid,$ad_duration) { $this->_db->setQuery( "SELECT date_created FROM #__adsmanager_ads WHERE id = ".(int)$contentid); $obnovka_date = $this->_db->loadResult(); $time = strtotime($obnovka_date); $time = $time + (3600 *24); if (time() > $time){ $this->_db->setQuery( "UPDATE #__adsmanager_ads SET expiration_date = DATE_ADD(NOW(), INTERVAL +$ad_duration DAY), date_created = NOW(),recall_mail_sent=0,published=1 WHERE id=".(int)$contentid); $this->_db->query(); } }
Теперь пользователь доски объявлений сможет поднять своё объявление только раз в сутки. Вы можете увеличить это время, заменив в коде 24 (это 24 часа) на любое другое количество часов, например, на 72. В таком случае пользователи смогут обновлять свои объявления раз в трое суток. Теперь нам не страшны скрипты и боты. Справедливость должна быть везде и всегда!
Кстати, в языковом файле ru-RU.com_adsmanager.ini (languages/ru_RU) можно поменять название «Продлить объявление» на «Поднять объявление»
Работает (проверено) в следующих версиях:
Joomla 1.5
AdsManager 2.6.5
Лишним трафик не бывает!