10 ноября 2010

Монетизируем доску объявлений AdsManager 2.6

Начал я тестировать новую версию компонента AdsManager и пришел к выводу, что почему бы не поставить ее на рабочий сайт и немного не подзаработать? :)
Написал следующее решение для заработка на досках, которое состоит из двух частей:
1. Объявления делаются VIP (выходят в ТОП — всегда вверху при отображении списка объявлений), если админ ставит переключатель
2. Объявления делаются VIP, если пользователь отправляет смс и вводит пришедший к нему код.

Сделаем сначала vip-объявления.

Для этого
1. Создаем в БД adsmanager_ads новую строку и называем ее vip.

2. в файле [Joomla]/administrator/components/com_adsmanager/tables/content.php добавляем var $vip = null; (поймете куда).

3. переходим в файл [Joomla]administrator/components/com_adsmanager/views/admin/tmpl/editcontent.php и там после кода
<tr>
<td><?php echo JTEXT::_('ADSMANAGER_TH_PUBLISH'); ?></td>
<td>
<select name="published" id="published">
<option value="1" <?php if ($this->content->published == 1) { echo "selected"; } ?>><?php echo JTEXT::_('ADSMANAGER_PUBLISH'); ?></option>
<option value="0" <?php if ($this->content->published == 0) { echo "selected"; } ?>><?php echo JTEXT::_('ADSMANAGER_NO_PUBLISH'); ?></option>
</select>
</td>
<td> 

</td>
</tr>

Вставляем
<tr>
<td><?php echo 'VIP'; ?></td>
<td>
<select name="vip" id="vip">
<option value="0" <?php if ($this->content->vip == 0) { echo "selected"; } ?>><?php echo JTEXT::_('ADSMANAGER_NO'); ?></option>
<option value="1" <?php if ($this->content->vip == 1) { echo "selected"; } ?>><?php echo JTEXT::_('ADSMANAGER_YES'); ?></option>
</select>
</td>
<td> 
</td>
</tr>

Далее в файле [Joomla]/administrator/components/com_adsmanager/models/content.php находим функцию function getListOrder и $filter_order изменяем сл. образом:
$filter_order = "a.vip DESC ,a.date_created DESC ,a.id ";

Вот мы сделали так, чтобы администратор мог сам делать объявление VIPом.

Теперь упростим задачу, чтобы система сама делала объявления VIP (с помощью смсок, конечно же).


1. Регистрируемся на http://avisosms.ru/ (именно через этот сервис и будем осуществлять работу)

2. В личном кабинете во вкладке «Биллинг» добавляем номер, придумываем префикс…

3. В настройках – Настройки удаленного доступа придумывает сложный ключ и сохраняем

4. Скачайте архив для работы с сервисом и поместите его содержимое в любое место на сайте (например, создайте каталог vipsmski)

5. В БД создайте таблицу, например, вашпрефикс_vipsms. В этой таблице создайте одно поле code.

6. Зайдите в файл config.php, который вы разархивировали, и настройте его. В поле smsAccessKey введите ключ, который придумывали в настройках удаленного доступа на сайте ависосмс.

7. В файле vipsms.php настройте соединение с БД, укажите имя базы. Поле $q = mysql_query(«INSERT into OLOLOL VALUES ('».$code."')"); измените на $q = mysql_query(«INSERT into вашпрефикс_названиетаблицыдлявипобъявлений VALUES ('».$code."')"); Думаю понятно, что означает вашпрефикс_названиетаблицыдлявипобъявлений :)

8. Теперь заходим в файл [Joomla]/components/com_adsmanager/controller.php и в самом начале файла, после строк
/**
 * Content Component Controller
 *
 * @package		Joomla
 * @subpackage	Content
 * @since 1.5
 */

Вставляем
// sms
function checkCode($code) {
	
$db = JFactory::getDBO();
$query = "SELECT * FROM #__ названиетаблицыдлявипобъявлений ";
$db->setQuery($query);
$cods = $db->loadObjectList();
	
$db2 = JFactory::getDBO();
$q = "SELECT * FROM #__adsmanager_ads WHERE ad_code='".$code."'";
$db2->setQuery($q);
$ads = $db2->loadObjectList();
	
$ok = false;
foreach($cods as $c) {
if( $c->code == $code ) {
$codesmstable = $c->code;
}
}
foreach($ads as $a) {
if( $code == $a->ad_code ) {
$codeadstable = $a->ad_code;
}
}
if( ($codesmstable == $code) && ($codesmstable != $codeadstable) && ($code != '')) {
$ok = true;
}
	
return $ok;
}
// -sms

Замечу, что присланный код можно использовать только один раз! (p.s. у кого будет более изящное решение — пишите, на скорую руку набросал такое)

9. В этом же файле находим функцию function save(), там находим $content->expiration_date = date(«Y-m-d»,mktime()+($delta*24*3600));

10. После этого кода вставляем
// ---------- sms ---------
$codes = $content->ad_code;
if (!checkCode($codes)) {
	$content->vip = '0';
} else {
	$content->vip = '1';
}
// ----------/sms/---------

11. Дальше создаем в компоненте новое поле! Тип: Text Field; Название: ad_code (т.е. пишем code, а он сам сформирует приставку), Заголовок: СМС-код для VIP-объявления (или по усмотрению), Ставим галочки на Опубликовано? Ну и выбираем Все объявления слева в «Категория».

12. Заходим опять на сайт смсок, в личном кабинете в биллинге где высвечиваются Ваши префиксы нажимаем Редактировать (префикс будем редактировать), ставим галочку «Вызывать URL на API вашего сайта» и вписываем туда полный путь до файла vipsms.php (Например, www.yoursite.ru/vipsmski/vipsms.php). Сохраняемся.

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

Вот в принципе и все!
Хочу отдельно поблагодарить Комкова Александра с сайта AvisoSMS, который подсказал во многих местах как лучше сделать!

p.s.: сейчас немного не оптимальный код проверки SMS на правильность, чуть позже разберусь с ним и подправлю (надо все же, чтобы использованный код удалялся из базы с кодами или ставился какой-то код в таблицу (или же заменялся код на что-то...) )
+2

Комментарии:12

avatar
Ого, отличная работа!!!
avatar
Спасибо, но вот проблема в том, что не хочет скрипт, который проверяет правильность кода, обрабатывать запросы, типа UPDATE, DELETE… :( поэтому приходится выкручиваться и сравнивать по сто раз
avatar
Что то не работает, вставляешь код, а объява так и не становится VIP.
avatar
Значит Вы сделали что-то не так.
avatar
ммм нравится!
avatar
  • Alex43
  • 18 сентября 2011, 15:18
  • 0
В ответном SMS приходит: " Невозможно определить кодировку ответа" с чем это может быть связанно?
avatar
  • parusev
  • 11 декабря 2011, 06:29
  • 0
Спасибо за статью! Использовал ее на своем сайте — http://dossska.ru
avatar
  • pupynyn
  • 08 февраля 2012, 10:58
  • 0
Здрасте!
Этот вариант сработает чтобы сделать все объявления випами? тоесть, чтобы без оплаты смс объявления не было опубликовано
кароче, платные объявления
Если нет, то что в этом коде надо переделать для того чтобыпубликация проходила только после смс
avatar
Разработаю или продам компонент adsmaneger для joomla 1.5 1.7 2.5
примеры выможите посмотреть на сайте www.ar54.ru

по всем вопросам обращайтесь по email: 777maxi@bk.ru tel +7-965-971-07-77 skype: o299my
avatar
  • nadim
  • 21 августа 2012, 18:38
  • 0
Подскажите в чем может быть проблема или это так и есть?
Форма для тестирования Вашего обработчика сообщений выдает:
Ответ сервера партнера на сообщение о статусе оплаты:
Notice: Undefined index: sms_body in /home/имя сайта/www/vip/vipsms.php on line 4

Хотя когда полученный код активации ввожу при добавлении объявления, объявлению присваивается статус VIP

2. Какой должен быть тип в поле «code» и строке «vip» -?
вашпрефикс_vipsms. В этой таблице создайте одно поле code
Создаем в БД adsmanager_ads новую строку и называем ее vip
avatar
  • pedrosoft
  • 17 сентября 2012, 22:19
  • 0
Наверное автор уже не появиться :(
avatar
  • pedrosoft
  • 18 сентября 2012, 20:49
  • 0
Жаль(
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.