Dismiss Notice
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Вопрос? Убрать в noindex,nofollow неопубликованные новости

Discussion in 'Вопросы- ответы' started by TOPSALE, Jun 5, 2020.

05.06.20 в 02:45
02.07.20 в 13:14
10
2,679
0
  1. TopicStarter Overlay
    TOPSALE

    PRO Users

    Joined:
    Feb 12, 2017
    Messages:
    83
    Best Answers:
    0
    Ratings:
    +6 / 3 / -0
    Как убрать в noindex,nofollow неопубликованные новости на главной.

    В functions.php прописал

    Code:
    if ( allow_main = 0 ) $disable_index = "\n<meta name=\"robots\" content=\"noindex,nofollow\" />";
    Не помогло, скорее всего в коде ошибка, поправьте пожалуйста. Спасибо.
     
  2. Ботяра

    Забанен

    Joined:
    Oct 10, 2015
    Messages:
    0
    Best Answers:
    54
    Ratings:
    +711 / 74 / -0
  3. TopicStarter Overlay
    TOPSALE

    PRO Users

    Joined:
    Feb 12, 2017
    Messages:
    83
    Best Answers:
    0
    Ratings:
    +6 / 3 / -0
    byroot а более простыми правками в движке, чтобы пункт запретить индексации распространялось на неопубликованные новости?
     
  4. Ботяра

    Забанен

    Joined:
    Oct 10, 2015
    Messages:
    0
    Best Answers:
    54
    Ratings:
    +711 / 74 / -0
    TOPSALE что мешает показать все неопубликованные новости и потом выделить их все и запретить? Вообще как бы надобность этого действия не понятна, т.к. неопубликованные новости видны только админу, ни пользователь ни пс никак не увидят содержимое неопубликованных новостей.
     
  5. TopicStarter Overlay
    TOPSALE

    PRO Users

    Joined:
    Feb 12, 2017
    Messages:
    83
    Best Answers:
    0
    Ratings:
    +6 / 3 / -0
    в 11 версии dle не работает, только после 13 версиии :с
     
  6. TopicStarter Overlay
    TOPSALE

    PRO Users

    Joined:
    Feb 12, 2017
    Messages:
    83
    Best Answers:
    0
    Ratings:
    +6 / 3 / -0
  7. TopicStarter Overlay
    TOPSALE

    PRO Users

    Joined:
    Feb 12, 2017
    Messages:
    83
    Best Answers:
    0
    Ratings:
    +6 / 3 / -0
  8. TopicStarter Overlay
    TOPSALE

    PRO Users

    Joined:
    Feb 12, 2017
    Messages:
    83
    Best Answers:
    0
    Ratings:
    +6 / 3 / -0
    Короче, вот решение, но это лишний запрос к БД:
    Открываем /engine/engine.php и ищем 962 строку, вставляем следующий код:
    Code:
    $allow_main = $db->super_query( "SELECT allow_main FROM " . PREFIX . "_post WHERE id={$newsid}");
    Ищем <meta name="description" content="{$metatags['description']}" />{$disable_index} и вставляем после следующий код:
    Code:
    if (((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] != 'адрес вашей главной страницы' and !$allow_main["allow_main"]) {
    
        $metatags .= <<<HTML
    
    <meta name="robots" content="noindex,nofollow" />
    HTML;
    
    }
     
    #8 TOPSALE, Jun 30, 2020
    Last edited: Jul 2, 2020
  9. TeraMoune

    TeraMoune Бывалый

    Joined:
    Apr 6, 2019
    Messages:
    310
    Best Answers:
    3
    Ratings:
    +130 / 9 / -0
    Находясь в новости в модуле уже есть запрос в массиве в котором имеются все необходимые данные. А модуль show.full.php подключается и исполняется заранее, еще до того момента где якобы делается еще один запрос. Так почему не протянуть переменную из show.full.php до нужного места ? Если массив удаляется, а он удаляется. То до строчки unset($row) нужно успеть перехватить и создать новую переменную. $new_allow_main = $row['allow_main']. Затем уже можно её использовать где угодно и где угодно до тех пор пока Вы сами не решите её уничтожить.

    Так же сделано с переменной $news_id, которая создаётся для всяких нужд за пределами окружения и применяется в других файлах, которую Вы и используете в выборке sql запроса.
     
    #9 TeraMoune, Jul 1, 2020
    Last edited: Jul 1, 2020
  10. TopicStarter Overlay
    TOPSALE

    PRO Users

    Joined:
    Feb 12, 2017
    Messages:
    83
    Best Answers:
    0
    Ratings:
    +6 / 3 / -0
    Обновил код, чтобы главная страница не была в noindex.

    TeraMoune Я не особый знаток php, делаю, что умею. Если есть готовый код, который лучше, то напишите для братьев по оружию.
     
  11. TeraMoune

    TeraMoune Бывалый

    Joined:
    Apr 6, 2019
    Messages:
    310
    Best Answers:
    3
    Ratings:
    +130 / 9 / -0
    TOPSALE, Ну так я вроде бы и написал всё, специально еще выделил ключевые моменты. Ну давайте повторим, открываете show.full.php, ищите там объявление $news_id. Объявляете ниже\выше аналогичную переменную только называете её как-то иначе, присваиваете значение переменной $row['allow_main'].

    После в другом файле где был запрос, в условии используете объявленную переменную.

    Всё условие касательно определения главной меняете на $dle_module != 'main'.
     
Яндекс.Метрика