02.06.2018
Решение для скрипта boxcode, доска объявлений

Готовое решение для доски объявлений на скрипте boxcode.

О скрипте:


Скрипт доски объявлений boxcode. Официальный сайт разработчика: boxcode.ru
Скрипт доски объявлений позволяет создать, как общетематический сайт объявлений, так и узконаправленный.
Краткое описание функционала максимальной версии:
Адаптивный дизайн сайта
В комплектацию максимальной версии входит 2 адаптивных шаблона. Просматривать сайт можно, как на настольном компьютере, так и в телефоне или планшете.
Адаптивная панель управления
Управлять сайтом через панель управления можно, как с помощью настольного компьютера, так и с помощью телефона или планшета.
Модуль «Доска объявлений»
Модуль поддерживает:
Создание категорий неограниченной вложенности;
Создание дополнительных свойств (полей) различных типов для объявлений;
Привязку объявлений к Яндекс или Google картам;
Поиск объявлений на Яндекс или Google картах;
Реализован подсчет количества объявлений по категориям.
Модуль «Каталог объектов»
Модуль поддерживает:
Создание категорий неограниченной вложенности;
Привязку объектов к Яндекс или Google картам;
Поиск объектов на Яндекс или Google картах;
Реализован подсчет количества объектов по категориям.
Модуль «Каталог статей»
Модуль позволяет размещать статьи, новости и другую информацию на сайте.
Интеграция с платежными системами
В скрипт интегрировано несколько платежных систем для оплаты пользователями сайта дополнительных услуг доски объявлений (премиум-размещение объявлений, VIP-статус объявлений, выделение объявлений в поиске, поднятие объявлений в поиске и подтверждение объявлений), а также пополнения баланса пользователями сайта.
Настройка географической локации сайта
Возможность создания сайта доски объявлений для нескольких стран, одной страны, региона страны или одного города.
Регистрация и авторизация пользователей
Пользователи могут регистрироваться на сайте, при этом активация аккаунта осуществляется с помощью электронной почты (Email).
Мультивалютность
В объявлениях можно использовать несколько валют на выбор. Курсы валют указываются в панели управления.
Система личных сообщений для зарегистрированных пользователей
Зарегистрированные пользователи могут отправлять друг другу сообщения через сайт.
Система комментариев
Позволяет пользователям сайта комментировать объявления, объекты и статьи.
Модуль «Новости сайта»
Позволяет сообщать посетителям сайта о событиях происходящих на сайте.
Модуль «Обратная связь»
Позволяет посетителям сайта связаться с администрацией сайта.
Модуль «Рекламная система»
Предназначен для размещения различной рекламы на сайте, что позволяет заработать на своем сайте доски объявлений.
Модуль «СЕО тексты»
Предназначен для вывода СЕО текстов, заголовков title, мета-ключевых слов, мета-описаний и заголовков основного содержимого на страницах, важных для поискового продвижения (СЕО).


 

Примеры сайтов, досок объявлений на скрипте boxcode можно посмотреть здесь: doska0.ru или доска1.рф

 

Для настройки приёма объявлений на Ваш сайт, работающий на движке boxcode, с агрегатора vse-doski.com, можно внести изменения на уже работающий сайт согласно инструкции.

*Обратите внимание, что версия Вашего сайта может отличаться от версии сайта, от которого представлена инструкция, представленный конструктив может не подойти к версии Вашего сайта и/или могут потребоваться дополнительные доработки. Администрация сайта vse-doski.com не гарантирует совместимость представленного дистрибутива с Вашим сайтом, не несёт ответственности за любые последствия использования представленного дистрибутива, не консультирует по установке и не занимается доработками и диагностикой сторонних сайтов . Весь дистрибутив представлен "как есть".

 

Инструкция по включению сайта в группу:

 

1) В папке config в файле db_config.php добавить
 
define('DB_NAME', $dbname);
define('DB_USER', $dbuser);
define('DB_PASSWORD', $dbpasswd);
define('DB_HOST', $dbhost);
 
после определения данных для подключения.
 
Пример:
 
Существующий файл такого вида:
 
........................................
 
 
//данные для подключения к базе данных
 
$dbhost="localhost";//сервер базы данных
$dbuser="vasya";//имя пользователя
$dbpasswd="***********";// //пароль
$dbname="doska";//имя базы данных
 
define ("DB_PREF","cat_");//префикс для таблиц
$GLOBALS["DB_PREF"]=DB_PREF;
 
if (empty($dir_cms)) $dir_cms=realpath(dirname(__FILE__)."/../");
$errors_file=$dir_cms."/config_save/errors.ms";
 
//echo($errors_file);
 
........................................
 
Превращаем в файл такого вида:
 
........................................
 
 
//данные для подключения к базе данных
 
$dbhost="localhost";//сервер базы данных
$dbuser="vasya";//имя пользователя
$dbpasswd="***********";// //пароль
$dbname="doska";//имя базы данных
 
define('DB_NAME', $dbname);
define('DB_USER', $dbuser);
define('DB_PASSWORD', $dbpasswd);
define('DB_HOST', $dbhost);
 
define ("DB_PREF","cat_");//префикс для таблиц
$GLOBALS["DB_PREF"]=DB_PREF;
 
if (empty($dir_cms)) $dir_cms=realpath(dirname(__FILE__)."/../");
$errors_file=$dir_cms."/config_save/errors.ms";
 
//echo($errors_file);
 
........................................
 
2) В корне сайта создать файл cats.php (или любое другое название .php например categories.php) и добавить туда код:
 
header("Content-Type: text/html; charset=UTF-8");
include ("./config/db_config.php");
 
echo(''); 
 
$db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
mysqli_set_charset($db, 'utf8');
 
$sql = "SELECT id_category, n_category, name FROM cat_category";
$result = mysqli_query($db, $sql);
 
echo '{
    "categories" :
    [';
 
$isFirst = true;
 
while($row = mysqli_fetch_assoc($result))
{
$id = $row["id_category"];
$parent = $row["n_category"];
$name = $row["name"];
if("" . $parent == "") $parent = 0;
 
if(!$isFirst) echo ",";
echo '
        ["' . $id . '", "' . $name . '", "' . $parent . '"]';
if($isFirst) $isFirst = false;
}
 
echo '
    ]
}';
 
echo("");
?>
 
при обращении к этомк файлу будет генерироваться JSON представление категорий, пример: http:/доска1.рф/cats.php
 
3) В корне сайта создать файл regs.php (или любое другое название .php например: regions.php) и добавить туда код:
 
header("Content-Type: text/html; charset=UTF-8");
include ("./config/db_config.php");
 
echo(''); 
 
$db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
mysqli_set_charset($db, 'utf8');
 
echo '{
    "regions" :
    [';
 
$sql = "SELECT country_id, name FROM cat_country";
$result = mysqli_query($db, $sql);
 
$isFirst = true;
 
while($row = mysqli_fetch_assoc($result))
{
$id = $row["country_id"];
$name = $row["name"];
 
if(!$isFirst) echo ",";
echo '
        ["' . $id . '", "' . $name . '", "0"]';
if($isFirst) $isFirst = false;
}
 
$sql = "SELECT region_id, country_id, name FROM cat_region";
$result = mysqli_query($db, $sql);
 
while($row = mysqli_fetch_assoc($result))
{
$id = $row["region_id"];
$parent = $row["country_id"];
$name = $row["name"];
if("" . $parent == "") $parent = 0;
 
if(!$isFirst) echo ",";
echo '
        ["' . $id . '", "' . $name . '", "' . $parent . '"]';
if($isFirst) $isFirst = false;
}
 
$sql = "SELECT region_id, city_id, name FROM cat_city";
$result = mysqli_query($db, $sql);
 
while($row = mysqli_fetch_assoc($result))
{
$id = $row["city_id"];
$parent = $row["region_id"];
$name = $row["name"];
if("" . $parent == "") $parent = 0;
 
if(!$isFirst) echo ",";
echo '
        ["' . $id . '", "' . $name . '", "' . $parent . '"]';
if($isFirst) $isFirst = false;
}
 
echo '
    ]
}';
 
echo("");
 
?>
 
при обращении к этомк файлу будет генерироваться JSON представление регионов. Пример: http:/доска.рф/regs.php
 
4) В корне сайта создать файл vse_doski_receiver.php или любое другое название .php (vdr.php) и добавить туда код:
 
include ("./config/db_config.php");
$my_token = '11111111111111111111111111111111111111111111111';
 
function multiCurl($data, $str)
{
$good_img = array();
$curls = array();
$result_output = array();
$mh = curl_multi_init();
 
foreach ($data as $id => $d)
{
$url = (is_array($d)) ? $d['url'] : $d;
 
if(strpos($url, '.png') !== false || strpos($url, '.jpg') !== false || strpos($url, '.jpeg') !== false || strpos($url, '.gif') !== false)
{
$curls[$id] = curl_init();
 
curl_setopt($curls[$id], CURLOPT_URL,            $url);
curl_setopt($curls[$id], CURLOPT_HEADER,         0);
curl_setopt($curls[$id], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curls[$id], CURLOPT_BINARYTRANSFER, 1);
curl_setopt($curls[$id], CURLOPT_FOLLOWLOCATION, 1);
 
curl_setopt($curls[$id], CURLOPT_AUTOREFERER, 1);
curl_setopt($curls[$id], CURLOPT_SSL_VERIFYPEER, 0);
 
if (is_array($d) && !empty($d['post'])) 
{
curl_setopt($curls[$id], CURLOPT_POST,       1);
curl_setopt($curls[$id], CURLOPT_POSTFIELDS, $d['post']);
}
curl_multi_add_handle($mh, $curls[$id]);
}
}
$running = null;
 
do { curl_multi_exec($mh, $running); } while($running > 0);
 
$i = 0;
foreach($curls as $id => $c) 
{
$result_output[$id] = curl_multi_getcontent($c);
 
$ext = pathinfo($data[$i], PATHINFO_EXTENSION); // получим расширение файла фото
 
$file_name = 'photo_' . $str . "_" . mt_rand(1, 999999) . '.' . $ext;
$pathBig = 'loadfiles/moduls/doska/bigfoto/' . $file_name; // формируем путь и имя файла
$pathSmall = 'loadfiles/moduls/doska/smallfoto/' . $file_name; // формируем путь и имя файла
$good_img['pathBig'][$i] = $pathBig;
$good_img['$pathSmall'][$i] = $pathSmall;
$good_img['file_name'][$i] = $file_name;
$img_sc = file_put_contents($pathBig, $result_output[$id]); // записываем полученное фото в файл
 
curl_multi_remove_handle($mh, $c);
 
if($ext == "png")
$image = imagecreatefrompng($pathBig);
if($ext == "jpg" || $ext == "jpeg")
$image = imagecreatefromjpeg($pathBig);
if($ext == "gif")
$image = imagecreatefromgif($pathBig);
 
$height = 75;
$ratio = $height / imagesy($image);
$width = imagesx($image) * $ratio;
$image0 = imagecreatetruecolor($width, $height);
imagecopyresampled($image0, $image, 0, 0, 0, 0, $width, $height, imagesx($image), imagesy($image));
$image1 = imagecrop($image0, ['x' => 0, 'y' => 0, 'width' => 75, 'height' => 75]);  
 
if($ext == "png")
imagepng($image1, $pathSmall, 75);
if($ext == "jpg" || $ext == "jpeg")
imagejpeg($image1, $pathSmall, 75);
if($ext == "gif")
imagegif($image1, $pathSmall, 75);
 
imagedestroy($image0);
imagedestroy($image1);
imagedestroy($image);
$i++;
}
 
curl_multi_close($mh);
 
return $good_img;
}
 
if(isset($_POST['token']) && $_POST['token'] == $my_token)
{
$db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
mysqli_set_charset($db, "utf8");
 
$title = mysqli_real_escape_string($db, htmlspecialchars($_POST['title']));
$description = mysqli_real_escape_string($db, htmlspecialchars($_POST['description']));
$description = strip_tags(htmlspecialchars_decode($description));
$region = mysqli_real_escape_string($db, htmlspecialchars($_POST['region']));
$category = mysqli_real_escape_string($db, htmlspecialchars($_POST['category']));
$telephone = mysqli_real_escape_string($db, htmlspecialchars($_POST['telephone']));
$price = mysqli_real_escape_string($db, htmlspecialchars($_POST['price']));
$contact = mysqli_real_escape_string($db, htmlspecialchars($_POST['contact']));
$address = mysqli_real_escape_string($db, htmlspecialchars($_POST['address']));
 
$cur_date = date('Y-m-d H:i:s');
$cur_time = time();
 
$sql = "SELECT * FROM cat_city WHERE city_id='$region'";
$result = mysqli_query($db, $sql);
$rows_count = mysqli_num_rows($result);
if($rows_count == 0)
{
$sql = "SELECT * FROM cat_region WHERE region_id='$region'";
$result = mysqli_query($db, $sql);
$rows_count = mysqli_num_rows($result);
if($rows_count == 0)
{
$sql = "SELECT * FROM cat_country WHERE country_id='$region'";
$result = mysqli_query($db, $sql);
}
}
$row = mysqli_fetch_assoc($result);
 
$city_id = intval($row['city_id']);
$region_id = intval($row['region_id']);
$country_id = intval($row['country_id']);
 
$city_name = "";
$region_name = "";
$country_name = "";
 
if($country_id != 0)
{
$sql = "SELECT name FROM cat_country WHERE country_id='$country_id'";
$result = mysqli_query($db, $sql);
$row = mysqli_fetch_assoc($result);
$country_name = $row['name'];
}
if($region_id != 0)
{
$sql = "SELECT name FROM cat_region WHERE region_id='$region_id'";
$result = mysqli_query($db, $sql);
$row = mysqli_fetch_assoc($result);
$region_name = $row['name'];
}
if($city_id != 0)
{
$sql = "SELECT name FROM cat_city WHERE city_id='$city_id'";
$result = mysqli_query($db, $sql);
$row = mysqli_fetch_assoc($result);
$city_name = $row['name'];
}
 
$images = "";
 
if(isset($_POST['photo']))
{
$good_img = multiCurl($_POST['photo'], $contact);
foreach($good_img['file_name'] as $fname)
{
if($images == "") $images = $fname;
else $images .= "|" . $fname;
}
}
 
$sql = "INSERT INTO cat_advert SET
email='info@vse-doski.com',
site='vse-doski.com',
name_user='$contact',
phone='$telephone',
key_words='',
text='$description',
image='$images',
password='',
hide='show',
moder='view',
start_putdate='$cur_time',
end_putdate='" . ($cur_time + 16070400) . "',
redak_putdate='0',
n_category='$category',
kolvo_view='0',
name_adv='$title',
status_adv='usual',
type='sell',
country_adv='$country_id',
region_adv='$region_id',
city_adv='$city_id',
name_country_adv='$country_name',
name_region_adv='$region_name',
name_city_adv='$city_name',
abuse='off',
abuse_text='',
cost='$price',
type_user='guest',
num_user='0',
sort_time='$cur_time',
ip_adr='127.0.0.1',
info_user_agent='Server',
period_action_time='16070400'
";
 
mysqli_query($db, $sql);
 
$adv_id = mysqli_insert_id($db);
 
exit("http://ВАШ_САЙТ.RU/adv-adv$adv_id.html"); 
}
else 
exit("Invalid token");
 
 
 
Заменить token на Ваш уникальный токен. Токен выдаёт сайт vse-doski.com/
Заменить ВАШ_САЙТ.RU на Ваш сайт.
К данному файлу будет обрашаться сайт vse-doski.com для добавления на вашу доску новых объявлений.

 

5) Зарегистрироваться на странице регистрации партнёров: vse-doski.com/add_new_board

6) Заполнить форму для добавления Вашего сайта в группу партнеров vse-doski.com.

Для этого нажмите на кнопку "Добавить доску" под инструкцией, заполните поля и нажмите "Отправить":
- Адрес Вашего сайта: например www.example.com
- Адрес сайта с обработчиком: адрес, по которому скрипт примет данные от vse-doski.com, например www.example.com/receiver.php
- Добавьте файл categories.json: добавляете созданный раннее файл categories.json
- Добавьте файл regions.json: аналогично как с categories.json

7) После проверки, модератор добавит Вашу доску объявлений в список досок-партнеров, загрузит регионы и категории на сайт vse-doski.com.

В Вашем личном кабинете появится таблица, в которой необходимо выставить соответствия регионов и категорий Вашей доски объявлений с регионами и категориями сайта vse-doski.com. Рассылка объявлений не будет активна до тех пор, пока Вы не синхронизируете категории и регионы в личном кабинете. После синхронизации поставьте галочку "Я синхронизировал(а) все категории и регионы своего сайта с сайтом vse-doski.com". Модератор протестирует отправку/приём объявлений и если не возникнет никаких проблем активирует рассылку.

 

AdSense

 


Добавить сайт в группу


Статистика

  • Объявлений всего:
  • Объявлений сегодня:
  • На модерации:
  • Опубликованы:
  • Посетителей сегодня:
  • Переходов сегодня:
  • Посетителей всего:
  • Переходов всего:
  • В блокноте: