Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 
Кнопка «Поднять объявление»

Очень важным сервисом на любой доске объявлений является кнопка «Поднять объявление». Правда, об этом не всегда помнят, к сожалению, разработчики бесплатных расширений. Но, как говорится, «Дарёному коню в зубы не смотрят» (народная мудрость), поэтому попытаемся исправить мелкие недоработки самостоятельно.


Отличный мощный компонент доски объявлений для 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


Лишним трафик не бывает!