Доска объявлений for JohnCMS 6.x.x

4.23K
.
Str@nnik

Бермудский, Не прошло и недели. Вас не поймешь. То вы глотку рвёте что переделать нужно, а когда сделал, то ни первый, ни второй слова не сказал. Для кого я тогда делал все? Никакой ответственности. Не люблю такого.

.
# Str@nnik (28.02.2016 / 12:50)
Бермудский, Не прошло и недели. Вас не поймешь. То вы глотку рвёте что переделать нужно, а когда сделал, то ни первый, ни второй слова не сказал. Для кого я тогда делал все? Никакой ответственности.
Ты делай иначе: запилил скрипт для паблика, выгрузил - пользуйтесь.
"Не достаточно кому-то функционала? Окей - пишите ваши предпочтения в ЛС в виде Т3" - и ты их с удовольствием реализуешь за умеренную плату. По другому просто нереально написать один модуль, который понравился бы всем!
.
Бермудский
Треугольник
# Str@nnik (28.02.2016 / 12:50)
Бермудский, Не прошло и недели. Вас не поймешь. То вы глотку рвёте что переделать нужно, а когда сделал, то ни первый, ни второй слова не сказал. Для кого я тогда делал все? Никакой ответственности.
Смысле?
Ну не каждый же день на сайт заходишь и реализы смотришь...
Изменения я отметил - лучше естественно стало...
.
Версия 2.1 (Финальная)

[fix] Поправлено удаление категорий, опять же спасибо примеру Кениг`а
[new] При редактировании объявления можно перемещать его в другую категорию
[new] Объявления можно теперь добавлять как в категории, так и с главной, только при добавлении нужно будет указать категорию куда добавляем
[new] Масовое удаление объявлений
Прикрепленные файлы:
.
Вывод последних объявлений на главную с фото (+/-)
$total_ads = mysql_result(mysql_query("SELECT COUNT(*) FROM `board_ads` WHERE `status` = '1'"), 0);
if ($total_ads)
{
    $limit = 3; // к-во выводимых записей
    $req = mysql_query("SELECT * FROM `board_ads` WHERE `status` = '1' ORDER BY `time` DESC LIMIT $limit");
    $i = 0;
    while ($res = mysql_fetch_assoc($req)) {
        echo '<div class="list' . ($i % 2 ? 1 : 2). '">'
            . functions::image('board.png') . '<a href="../board/?do=view&amp;id=' . $res['id'] . '">' . functions::checkout($res['name']) . '</a>';
        if ($res['img'] == 1) {
            echo '<div class="sub">';
            $req_i = mysql_query("SELECT * FROM `board_images` WHERE `ad_id` = " . $res['id'] . "");
            while ($res_i = mysql_fetch_assoc($req_i)) {
                echo '<a href="../files/board/' . $res_i['name'] . '.png"><img src="../files/board/small/' . $res_i['name'] . '.png" alt="' . $res_i['name'] . '"></a>&nbsp;';
            }
            echo '</div>';
        }
        echo '</div>';
        $i++;
    }
}

Вывод последних объявлений на главную без фото (+/-)
$total_ads = mysql_result(mysql_query("SELECT COUNT(*) FROM `board_ads` WHERE `status` = '1'"), 0);
if ($total_ads)
{
    $limit = 3; // к-во выводимых записей
    $req = mysql_query("SELECT * FROM `board_ads` WHERE `status` = '1' ORDER BY `time` DESC LIMIT $limit");
    $i = 0;
    while ($res = mysql_fetch_assoc($req)) {
        echo '<div class="list' . ($i % 2 ? 1 : 2). '">'
            . functions::image('board.png') . '<a href="../board/?do=view&amp;id=' . $res['id'] . '">' . functions::checkout($res['name']) . '</a>'
            . '</div>';
        $i++;
    }
}
.
Ars longa, vita brevis!

Молодец! Делаешь хорошие моды.

.
ДоХтор

Str@nnik, для удобства вывода объявлений запилил твой код вывода в функцию. Её можно сохранить в function.php , а в модуле просто вызывать эту ф-цию с параметрами или без них (по умолчанию).
p.s.: модулем не пользуюсь, поэтому не проверял код - теоретически должен работать

Вывод последних объявлений на главную с фото ИЛИ без (+/-)
function ads($limit = 3, $img = 1) {
    $total_ads = mysql_result(mysql_query("SELECT COUNT(*) FROM `board_ads` WHERE `status` = '1'"), 0);
    if ($total_ads) {
        $req = mysql_query("SELECT * FROM `board_ads` WHERE `status` = '1' ORDER BY `time` DESC LIMIT $limit");
        $i = 0;
        while ($res = mysql_fetch_assoc($req)) {
            $out = '<div class="list' . ($i % 2 ? 1 : 2). '">'
                . functions::image('board.png') . '<a href="../board/?do=view&amp;id=' . $res['id'] . '">' . functions::checkout($res['name']) . '</a>';
            if ($res['img'] == 1 && $img == 1) {
                $out .= '<div class="sub">';
                $req_i = mysql_query("SELECT * FROM `board_images` WHERE `ad_id` = " . $res['id'] . "");
                while ($res_i = mysql_fetch_assoc($req_i)) {
                    $out .= '<a href="../files/board/' . $res_i['name'] . '.png"><img src="../files/board/small/' . $res_i['name'] . '.png" alt="' . $res_i['name'] . '"></a>&nbsp;';
                }
                $out .= '</div>';
            }
            $out .= '</div>';
            $i++;
        }
    }
    return $out;
}

//Вывод последних 3-х объявлений на главную с фото
echo ads();

//Вывод последних 3-х объявлений на главную без фото
echo ads(3, 0);

//Вывод последних 5-и объявлений на главную с фото
echo ads(5);

//Вывод последних 5-и объявлений на главную без фото
echo ads(5, 0);
.

ДоХтор, Проще уже её в класс объявлений положить, если уже так, зачем еще лишний файл затрагивать? Хотя я хотел сделать что-то такое, типо через админку модуля включается вывод. Но посчитал что проще вот так для юзеров, а то потом много вопросов появится.

.
# Str@nnik (02.03.2016 / 11:58)
ДоХтор, Проще уже её в класс объявлений положить, если уже так, зачем еще лишний файл затрагивать? Хотя я хотел сделать что-то такое, типо через админку модуля включается вывод. Но посчитал что проще
Если не затрагивать лишний файл, то можно в файле с модулем описать функцию, а в нужных местах просто одной строкой вызывать её с необходимыми параметрами (например в верхней части сайта отображать список объявлений без картинок, а в нижней части (или где-то ещё) с картинками).
через админку модуля включается вывод
Да, вызов с нулём echo ads(0); будет отключать вывод .
.
Str@nnik

ДоХтор, Эд, блин, у меня в модуле есть класс объявлений. Зачем все усложнять? Для чего левые классы использовать?)

Всего: 66