Помощь Как сделать ссылку на случайную новость?

Тема в разделе "DLE", создана пользователем Dagazz, 4 дек 2013.

Информация :
Актуальная версия DataLife Engine 12.0
( Final Release v.12.0 | Скачать DataLife Engine | Скачать 12.0 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.3 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Модераторы: killoff
  1. Dagazz

    Dagazz Создатель

    Регистр.:
    24 янв 2010
    Сообщения:
    41
    Симпатии:
    3
    Время доброе! Подскажите, как сделать ссылку при нажатии на которую будет открываться случайная новость?

    Необходимо чтоб ссылку можно было выводить примерно такого вида:
    <a href="/?do=randpost">..</a>

    -----------

    Ответ на данный вопрос есть в данном посте:
    http://forum.4dle.ru/topic12066.html?hl=%F1%EB%F3%F7%E0%E9%ED%E0%FF+%ED%EE%E2%EE%F1%F2%FC

    вот только не всё так гладко ..

    Там сказано, что в engine/modules/ надо создать randpost.php с содержимым:
    PHP:
    <?php

    if( !defined'DATALIFEENGINE' ) AND !LOGED_IN ) {
        die( 
    "Hacking attempt!" );
    }

    $rand_post $db->super_query"SELECT id, title, category, date, alt_name, flag FROM " PREFIX "_post ORDER BY RAND() LIMIT 1" );

    if( 
    $config['allow_alt_url'] == "yes" ) {
               
        if( 
    $rand_post['flag'] and $config['seo_type'] ) {
                   
            if( 
    $rand_post['category'] and $config['seo_type'] == ) {
                       
                
    $full_link $config['http_home_url'] . get_url$rand_post['category'] ) . "/" $rand_post['id'] . "-" $rand_post['alt_name'] . ".html";
                   
            } else {
                       
                
    $full_link $config['http_home_url'] . $rand_post['id'] . "-" $rand_post['alt_name'] . ".html";
                   
            }
               
        } else {
                   
            
    $full_link $config['http_home_url'] . date'Y/m/d/'$rand_post['date'] ) . $rand_post['alt_name'] . ".html";
        }
           
    } else {
               
        
    $full_link $config['http_home_url'] . "index.php?newsid=" $rand_post['id'];
           
    }

    header("Location: ".$full_link);

    ?>
    в engine/engine.php после
    Код:
    case "deletenews" :
    
            include ENGINE_DIR . '/modules/deletenews.php';
            break;
    Вставить:
    Код:
    case "randpost" :
    
            include ENGINE_DIR . '/modules/randpost.php';
            break;
    И далее ссылка на случайный пост будет иметь вид: mysite.ru/?do=randpost

    ----------------

    Всё работает/работало, но не на ДЛЕ 9.8 .. На версии 9.8 выдаёт ошибку БД http://shot.qip.ru/008ywg-3uX0nxZNz/ . (Другие рекомендации с того поста также пробовались, тажа проблема.)

    ----------------

    Помогите пожалуста разобраться с данной ситуацией.
     
  2. ZOLK

    ZOLK

    Регистр.:
    13 сен 2011
    Сообщения:
    189
    Симпатии:
    108
    Зайди в бд через phpmyadmin и в таблицу с новостями dle_post добавь поле flag, Раное 1 скорее всего

    Или удали flag из кода
    За тебя удалил:

    PHP:
    <?php

    if( !defined'DATALIFEENGINE' ) AND !LOGED_IN ) {
        die( 
    "Hacking attempt!" );
    }

    $rand_post $db->super_query"SELECT id, title, category, date, alt_name FROM " PREFIX "_post ORDER BY RAND() LIMIT 1" );

    if( 
    $config['allow_alt_url'] == "yes" ) {
          
        if(
    $config['seo_type'] ) {
              
            if( 
    $rand_post['category'] and $config['seo_type'] == ) {
                  
                
    $full_link $config['http_home_url'] . get_url$rand_post['category'] ) . "/" $rand_post['id'] . "-" $rand_post['alt_name'] . ".html";
              
            } else {
                  
                
    $full_link $config['http_home_url'] . $rand_post['id'] . "-" $rand_post['alt_name'] . ".html";
              
            }
          
        } else {
              
            
    $full_link $config['http_home_url'] . date'Y/m/d/'$rand_post['date'] ) . $rand_post['alt_name'] . ".html";
        }
      
    } else {
          
        
    $full_link $config['http_home_url'] . "index.php?newsid=" $rand_post['id'];
      
    }

    header("Location: ".$full_link);

    ?>
     
    Последнее редактирование: 4 дек 2013
    Dagazz нравится это.
  3. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.199
    Симпатии:
    2.223
    Ребят, Вы психи..
    Код:
    {custom limit="1" order="rand" template="custom"}
    И custom.tpl:
    Код:
    [full-link]<img ... >[/full-link]
    Если картинку надо брать из той же новости - милости прошу в мой мануал по слайдеру... https://www.nulled.cc/threads/241912/

    По поводу ошибки с флагом, раз уж приспичило править код ДЛЕ, из запроса:
    Код:
    $rand_post = $db->super_query( "SELECT id, title, category, date, alt_name, flag FROM " . PREFIX . "_post ORDER BY RAND() LIMIT 1" );
    Удаляем flag и получаем такой запрос:
    Код:
    $rand_post = $db->super_query( "SELECT id, title, category, date, alt_name FROM " . PREFIX . "_post ORDER BY RAND() LIMIT 1" );
    Строку:
    Код:
     if( $rand_post['flag'] and $config['seo_type'] ) {
    Заменяем на:
    Код:
     if( $config['seo_type'] ) {
    ВСЁ!
     
    Dagazz нравится это.