Привет. В данной статье мы рассматриваем способ реализации метода для удаления объявления в движке Boxcode 10.1 без перезагрузки страницы. На большинстве досок объявлений данный функционал предусматривается, поэтому, почему бы и нам не попробовать его сделать.
Сначала рассмотрим недостатки и преимущества тех.составляющей:
Преимущества:
- Очевидное — страница не перезагружается, человеку не нужно искать способ вернуться обратно к списку объявлений
- Человек совершает меньше действий
- Человек тратит меньше времени на удаление объявления
- Человек видит сам процесс удаления, благодаря чему не возникает чувства «А удалилось ли оно ?»
Недостатки в основном связаны с технической составляющей, что, в своем роде, является недостатком только для людей без знаний кода
- Необходимо продумать принцип работы пагинации, т.к у нас есть несколько страниц с объявлениями и удаление одного объявления с одной страницы не компенсируется объявлениями с других страниц. Простыми словами : Удалили с первой страницы все объявления и первая страница получилась пустой, но внизу пагинация ведет на другие страницы, где объявления есть. Решать можно по-разному : исключить пагинацию и выводить все объявления сразу (простое решение) или реализовать подгрузку данных через ajax.
- Данный недостаток отпадет сам по себе, когда будет решен первый. Мы удалили все объявления и нужно вывести текст, что объявлений нет у вас. Решение может быть таким: делаем подсчет в нашем скрипте количества объявлений, передаем в js и, при нулевом результате, выводить текст о том, что объявлений больше нет.
- Этот метод удаления практичнее, как по-мне, делать с функцией отмены удаления объявления или созданием нового раздела для архивных объявлений, в котором можно бы было восстановить их. Но это все мое мнение 🙂
Теперь делаем данный метод для нашей доски объявлений
- Качаем архив с файлами
- Загрузите файл /allinclude/del_items.php
- Загрузите файл /moduls/doska/include/delete_one_item.php
- Загрузите файл /templates/шаблон/delete_item.js
- Далее, открываем файл /templates/coolmini/moduls/doska/mtemplates/forming_tab_synopsis_adv.html и находим строку
1<div {$class} >
и заменяем ее на
1<div {$class} id='int{$row["id_advert"]}'>
Потом, находим строку
1onClick='return(confirm("Удалить объявление?"));'
и заменяем на
1onclick='delete_item("doska",{$row["id_advert"]});return false;' - Открываем файл /templates/coolmini/moduls/doska/mtemplates/page/myadvert.html и добавляем наш скрипт в условие, когда есть объявления
1<script src="{$dir_http_template}/delete_item.js"></script> - Добавляем стили
123456789101112131415.hide-element{background-color: rgba(255, 225, 225, 0.83);position: absolute;top: 0;width: 100%;height: 154px;}.hide-element-off{opacity:0;-moz-opacity:0;-webkit-opacity:0;transition:opacity 3s ease;-moz-transition:opacity 3s ease;-webkit-transition:opacity 3s ease;}
Пример работы можете увидеть на сайте test 123456 — Создайте любое объявление и перейдите на страницу ваших объявлений, после чего, кликайте на удаление.
Данный метод реализован для модуля доски объявлений, но в файлах подготовлен код и для других модулей : объекты и статьи. Все, что вам нужно — это дублировать файл из пункта 3 в каждый модуль. После чего изменять только его, чтобы работал в этом модуле (только для кодеров 🙂 )
Старый метод удаления объявления остался, т.к некоторые используют еще подачу объявлений неавторизованными пользователями.
присылайте свои идеи к нам на admin@make-board.ru
обсудить свои вопросы можете на форуме Boxcode
вы также можете заказать разработку доски объявлений
или скачать\заказать шаблон Boxcode
Подскажите пожалуйста, что это может быть за ошибка?
Fatal error: Class ‘conversion_data_get_post’ not found in /allinclude/del_items.php
Данная ошибка означает, что класс не не найден. На какую версию движка ставили ?
На 8.4
А где можно скопировать этот класс?
пробуйте с этим файлом
include_once(«../../../generalscript/clcontroldata.php»);
Ошибка исчезла когда добавил
include_once(DIR_CMS.»/generalscript/clcontroldata.php»);
в файле /allinclude/del_items.php
Но появилась новая:
Fatal error: Call to undefined function write_ajax_answer_jc(); in /allinclude/del_items.php on line 56
возьмите файл doska/include/add_mark.php и гляньте какие инклуды в нем . Далее, делайте по аналогии.
Не может найти файл init_work_st_auth.php в папке generalscript/
он там отсутствует.
Перенес с того файла который вы указали. Осталась только одна ошибка.
Вот скрин: https://cloud.mail.ru/public/Jg32/uj6ok7djR
да, нет такого файла. Я вам написал файл, в котором можете искать файлы для подключения
ищите $dbcnx и удаляйте его
у меня вот что выдает
Notice: Undefined variable: dbcnx in G:\home\test1.ru\www\allinclude\del_items.php on line 30
{ error:{code:1,text:’ошибка с базой данных’} }
данная статья написана для движка 10.1 . Какая у вас версия ?
8.5, раскидал все файлы, добавил «возьмите файл doska/include/add_mark.php и гляньте какие инклуды в нем . Далее, делайте по аналогии.» получилось так
include_once(«../config/config.php»);
include_once(«../config/db_config.php»);
include_once(DIR_CMS.»/script/work_site_include.php»);
include_once(DIR_CMS.»/generalscript/clcontroldata.php»);
require_once(DIR_CMS.»/generalscript/glav_class_connect_baz.php»);
include_once(DIR_CMS.»/generalscript/functiontext.php»);
include_once (DIR_CMS.»/generalscript/list_functions.php»);
include_once (DIR_CMS.»/generalscript/funct_obr_db_query.php»);
include_once (DIR_CMS.»/generalscript/funct_db_query_ajax_jc.php»);
include_once (DIR_CMS.»/generalscript/funct_proces_ajax_jc.php»);