Все работает на доске adsmanager 2.6!Сделаем сначала 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 (Например,
http://www.yoursite.ru/vipsmski/vipsms.php). Сохраняемся.
13. На этом же сайте можно и потестировать. В биллинге в виртуальный телефон заходим, там выбираем номер и вписываем префикс, внизу Вам отобразиться код
Вот в принципе и все!
Хочу отдельно поблагодарить Комкова Александра с сайта AvisoSMS, который подсказал во многих местах как лучше сделать!
p.s.: сейчас немного не оптимальный код проверки SMS на правильность, чуть позже разберусь с ним и подправлю
upd1: пофиксил небольшую ошибку в строке
if( ($codesmstable == $code) && ($codesmstable != $codeadstable)) {
исправил на
if( ($codesmstable == $code) && ($codesmstable != $codeadstable) && ($code != '')) {