Баг отображения статьи со ограниченным сроком. Движок 1.8

+14
1.79K
Нашел баг в версии движка 1.8

Выражается в следующем — в админке добавляем статью, ставим в ней дату окончания действия например +1 день.
Потом наблюдаем на фронтенде сайта, как данная статья не открывается — ошибка 404, причем в списке статей она присутствует. Если выключить ограничение срока действия — статья открывается...




РЕШЕНИЕ

проблема в файле
\www\components\content\model.php в функции getArticleByLink забыли дописать

$today = date("Y-m-d H:i:s");

вообщем делаем как показано ниже

  1.  
  2. public function getArticleByLink($seolink) {
  3.  
  4. >>>>>>>>>>>>>> Добавляем этот код >>>>>>>>>>>>>
  5. $today = date("Y-m-d H:i:s");
  6. >>>>>>>>>>>>>> Добавляем этот код >>>>>>>>>>>>>
  7.  
  8. $sql = "SELECT con.*,
  9. ..........
  10.  

интересно это у меня одного такая проблема?

и как бы собрать все баги в кучу, что-то их много слишком для рабочей версии — что-то вроде сервис пака (я может быть занялся бы)
0
Zau4man Zau4man 12 лет назад #
Croakerx64, а вы проверьте, повторяется ли баг на чисто установленной системе. Если да, то добро пожаловать в Багтрекер.
+2
Крот Крот 12 лет назад #
Проверил...на чистой системе тоже самое, пойду в Багтрекер...
+1
googlebot googlebot 12 лет назад #
Спасибо, если еще баги интересны, поковыряйте проблемку с глубиномером, когда левые ссылки в нем появляются.
0
Крот Крот 12 лет назад #
А что за проблема? У меня с ним проблем нет... по крайней мере не встречал.
0
googlebot googlebot 12 лет назад #
ну например тут, или тут. Посл. сайт мой, 1.8 все обновления. Лишняя ссылка только на 1 этой странице.
0
Крот Крот 12 лет назад #
точно сейчас не скажу, но скорее всего проблема в таблице _photo_albums, либо в _menu
посмотри поля NSLEFT, NSRIGHT у запмсей таблицы соотв-их (НАШИ ДЕТИ, ДЕТСКИЕ РИСУНКИ) они должны быть в диапазоне (NSLEFT..NSRIGHT) родительской записи (см. по parent_id) и нумерация их должна быть по порядку.

NSLEFT NSRIGHT
Родитель 8 15
1 пункт 9 10
2 пункт 11 12
3 пункт 13 14

скорее всего съехало при перемещении вверх-вниз пунктов (меню или фотоальбомов), в меню всегда съезжает
определено опытным путем. решения проблемы пока нет.
0
googlebot googlebot 12 лет назад #
нет, в таблицах все в порядке и в cms_menu и в cms_photo_albums.
0
Крот Крот 12 лет назад #
Содержимое этих таблиц прислать можете(в sql)? Так трудно о чем либо говорить
0
googlebot googlebot 12 лет назад #
положил, себе в файлы, но по-моему там все в порядке.
+1
Крот Крот 12 лет назад #
Поменяйте id например на 1001 у записи с id=1 в таблице cms_photo_albums, и в админке переподцепите фотоальбом к меню (Наши дети).
После этого все должно стать хорошо...
0
googlebot googlebot 12 лет назад #
Да помогло, только пришлось еще каждой фотке из этого альбома album_id менять и урл сменился, но это можно редиректом поправить. Спасибо, как это я сам не допер, все с ns парился.
0
Крот Крот 12 лет назад #
еще одна бага!
статья с ограниченным сроком, срок вышел, статья улетела в архив... все, больше не отображается, ошибка 404, слышу как тихо яндекс матерится)
решение там же в функции как в теме этого поста
меняем
Код PHP:
 
// это мы добавили в прошлый раз
               $today    = date("Y-m-d H:i:s");

		$sql = "SELECT con.*,
						cat.title cat_title, cat.id cat_id, cat.NSLeft as leftkey, cat.NSRight as rightkey, cat.showtags as showtags,
						cat.modgrp_id, u.nickname as author, con.user_id as user_id, u.login as user_login
				FROM cms_content con
				LEFT JOIN cms_category cat ON cat.id = con.category_id
				LEFT JOIN cms_users u ON u.id = con.user_id
				WHERE con.seolink = '$seolink' LIMIT 1";
// а это убрали сейчас!
//				WHERE con.seolink = '$seolink' AND ((con.is_end=0) OR (con.is_end=1 AND con.enddate >= '$today' AND con.pubdate <= '$today')) LIMIT 1";
теперь статьи не видно а по прямой ссылке открывает, что и нужно было доказать Яндексу!
а модули по статьям еще править и править!!!
0
Крот Крот 12 лет назад #
Правда только это работает если у статьи стоит признак окончания действия.
Если он не установлен, и дата начала действия например впереди на неск. дней(т.е. еще не должно быть статьи)
- статья все равно появляется!
только стоит поставить признак окончания - статья исчезает до своего дня, висит сколько ей надо и потом смело улетает в архив!

ППЦ!
0
Крот Крот 12 лет назад #
ну как всегда)
в model.php
Код PHP:
    public function getArticles($category_id, $page=1, $perpage=100, $orderby='title', $orderto='asc') {

        $articles = array();
		$today = date("Y-m-d H:i:s");
        $sql = "SELECT con.*, 
                       con.pubdate as fpubdate,
                       u.nickname as author,
                       u.login as user_login
                FROM cms_content con
				LEFT JOIN cms_users u ON u.id = con.user_id
                WHERE con.category_id = $category_id AND con.published = 1 AND con.is_arhive = 0
//тут делаем
// не так                      AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '$today' AND con.pubdate <= '$today'))
// а так
                      AND ((con.is_end=0 AND con.pubdate <= '$today') OR (con.is_end=1 AND con.enddate >= '$today' AND con.pubdate <= '$today')) ".$by_homepage."
                ORDER BY con.".$orderby." ".$orderto."
                LIMIT ".(($page-1)*$perpage).", $perpage";
и все становится хорошо
такая вот записная книжка получается(

Еще от автора

Инвайтер 1.9 для 1.10.6
Доброго всем времени суток! Решил нарушить сложившуюся здесь традицию и решил вернуться сюда с обновлениями.
Инстант "по взрослому". Часть 2. Авторизация. Аякс. v1.10
Доброго всем времени суток! Продолжая серию Инстант "по взрослому", сегодня хотел бы показать более мощный плагин авторизации.
Инстант "по взрослому". Часть 1. Авторизация. Счетчик неверных входов. v1.10
Доброго всем дня! Продолжим наши уроки по усовершенствованию Инстанта. Сегодня мы будем изучать и усовершенствовать первую ветку Инстанта.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.