• Главная
  • Поиск
    •  
  • Здравствуйте, Гость

Автор Тема: Сделать объявление не активным  (Прочитано 358 раз)
  • *
  • Сообщений: 6
« : 05 Сентябрь 2017, 11:36:38 »
Подскажите, как сделать так, чтобы объявление не удалялось, а становилось неактивным, или попадало в архив. Главное чтобы исчезло с общего поиска. Может есть какой-то плагин или стандартными средствами можно?
« Последнее редактирование: 05 Сентябрь 2017, 23:31:27 от Dis »

Оффлайн Dis
  • Admin
  • *****
  • Сообщений: 1006
    • Шаблоны и плагины Osclass
« Ответ #1 : 05 Сентябрь 2017, 14:29:22 »
Стандартно так и работает.

  • *
  • Сообщений: 6
« Ответ #2 : 05 Сентябрь 2017, 15:44:32 »
Проверял - удаляю в личном кабинете объявление и его нет ни в обьявлениях ни в завершенных.

Оффлайн Dis
  • Admin
  • *****
  • Сообщений: 1006
    • Шаблоны и плагины Osclass
« Ответ #3 : 05 Сентябрь 2017, 23:30:21 »
Проверял - удаляю в личном кабинете объявление и его нет ни в обьявлениях ни в завершенных.
Удаляю - это удаляю. С чего бы ему не удалится ?
У категорий в  админке можно настроить срок актуальности.
По истечению этого срока объявления становятся неактивны.
А если нужна кнопка для пользователя в личном кабинете - это другой вопрос.

Оффлайн Dis
  • Admin
  • *****
  • Сообщений: 1006
    • Шаблоны и плагины Osclass
« Ответ #4 : 05 Сентябрь 2017, 23:36:00 »
Это сделать можно.
1. В function.php Вашего шаблон добавить функцию:
function osc_item_deactivate_url($secret = '', $id = '') {
if ($id == '') { $id = osc_item_id(); };
if ( osc_rewrite_enabled() ) {
return osc_base_url() . 'item/deactivate' . '/' . $id . '/' . $secret;
} else {
return osc_base_url(true) . '?page=item&action=deactivate&id=' . $id . ($secret != '' ? '&secret=' . $secret : '');
}
 }
2. В контроллер /oc-includes/osclass/controller/item.php к примеру после 284 строки добавить:
case 'deactivate':
                    $secret = Params::getParam('secret');
                    $id     = Params::getParam('id');
                    $item   = $this->itemManager->listWhere("i.pk_i_id = %d AND ((i.s_secret = %s) OR (i.fk_i_user_id = %d))", (int)($id), $secret, (int)($this->userId));

                    // item doesn't exist
                    if( count($item) == 0 ) {
                        $this->do404();
                        return;
                    }

                    View::newInstance()->_exportVariableToView('item', $item[0]);
                    if( $item[0]['b_active'] == 1 ) {
                        // DEACTIVATE ITEM
                        $mItems = new ItemActions(false);
                        $success = $mItems->deactivate( $item[0]['pk_i_id'], $item[0]['s_secret'] );

                        if( $success ) {
                            osc_add_flash_ok_message( _m('The listing has been deactivated') );
                        }else{
                            osc_add_flash_error_message( _m("The listing can't be deactivated") );
                        }
                    } else {
                        osc_add_flash_warning_message( _m('The listing has already been deactivated') );
                    }

                    $this->redirectTo( osc_item_url( ) );

                break;
3. В файле шаблона user-items.php в блок объявления добавить кнопки вроде этих:
<?php if(osc_item_is_active()) {?> <a href="<?php echo osc_item_deactivate_url(); ?>" class="edit-link"><?php _e('Deactivate''bender'); ?></a> <?php ?>
<?php if(!osc_item_is_active()) {?> <a href="<?php echo osc_item_activate_url(); ?>" class="edit-link"><?php _e('Activate''bender'); ?></a> <?php ?>
И всё.
« Последнее редактирование: 05 Сентябрь 2017, 23:54:34 от Dis »

Оффлайн Dis
  • Admin
  • *****
  • Сообщений: 1006
    • Шаблоны и плагины Osclass
« Ответ #5 : 05 Сентябрь 2017, 23:58:59 »
п.3 конечно в каждом конкретном шаблоне надо смотреть куда эти кнопки вставить.

  • *
  • Сообщений: 6
« Ответ #6 : 06 Сентябрь 2017, 19:40:28 »
Большое спасибо! Все получилось!

 


test