DLE-Infa.RU Регистрация Статистика Контакты Сервис
«    Май 2012    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
ajax, css, dle, free, green, info, news, pr, release, sms, url, user, wap, альбом, английский, баг, блок, загрузка, запрет, изображения, категории, комментарии, кэш, модуль, новости, новость, ошибка, переходы, подсказки, пользователи, релиз, смарт, спам, тиц, файлы, фото, хак, чпу, шаблон, шаблоны
Качественный и дешевый VDS / VPS хостинг
 Наш архив:
Апрель 2011 (1)
Январь 2011 (8)
Декабрь 2010 (7)
Ноябрь 2010 (3)
Октябрь 2010 (12)
Сентябрь 2010 (4)
   
Навигация по сайту
   
 

Отображение новости по любому URL

 

Баг-фикс заключается в том, что при использовании 1 или 2 вида ЧПУ, новость отображается по любому, даже не существующему URL'у. Например данная новость http://dle-infa.ru/mods/148-otobrazhenie-novosti-po-lyubomu-url.html могла отобразится и по http://dle-infa.ru/mods/148-privet.html, и по http://dle-infa.ru/mods/148-good-news.html и т.д.

Для исправления данной ошибки необходимо:

  1. Открываем .htaccess в корне сайта
    • Находим:
      RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$4&news_page=$2&cstart=$3 [L]
      RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$3&news_page=$2 [L]
      RewriteRule ^([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ engine/print.php?news_page=$2&newsid=$3 [L]
      RewriteRule ^([^.]+)/([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2 [L]

      RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$3&news_page=$1&cstart=$2 [L]
      RewriteRule ^page,([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2&news_page=$1 [L]
      RewriteRule ^print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ engine/print.php?news_page=$1&newsid=$2 [L]
      RewriteRule ^([0-9]+)-(.*).html(/?)+$ index.php?newsid=$1 [L]
    • Заменяем на:
      RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$4&news_page=$2&cstart=$3&news_name=$5 [L]
      RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$3&news_page=$2&news_name=$4 [L]
      RewriteRule ^([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ engine/print.php?news_page=$2&newsid=$3&news_name=$4 [L]
      RewriteRule ^([^.]+)/([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2&news_name=$3 [L]

      RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$3&news_page=$1&cstart=$2&news_name=$4 [L]
      RewriteRule ^page,([0-9]+),([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2&news_page=$1&news_name=$3 [L]
      RewriteRule ^print:page,([0-9]+),([0-9]+)-(.*).html(/?)+$ engine/print.php?news_page=$1&newsid=$2&news_name=$3 [L]
      RewriteRule ^([0-9]+)-(.*).html(/?)+$ index.php?newsid=$1&news_name=$2 [L]
  2. Открываем engine/modules/show.full.php
    • Находим:
              if( $i ) break;
    • Ниже добавляем:
              if ( $config['allow_alt_url'] == 'yes' AND $row['flag'] AND $config['seo_type'] AND $news_name != $row['alt_name'] ) break;
  3. Открываем engine/ajax/addcomments.php
    • Находим:
      $user_group = get_vars( "usergroup" );
    • Выше вставляем:
      $cat_info = get_vars ( "category" );
      if ( ! is_array ( $cat_info ) ){
          $cat_info = array ();
          
          $db->query ( "SELECT * FROM " . PREFIX . "_category ORDER BY posi ASC" );
          while ( $row = $db->get_row () ) {
              
              $cat_info[$row['id']] = array ();
              
              foreach ( $row as $key => $value ) {
                  $cat_info[$row['id']][$key] = stripslashes ( $value );
              }
          
          }
          set_vars ( "category", $cat_info );
          $db->free ();
      }
  4. Открываем engine/modules/addcomments.php
    • Находим:
                  $row['template'] = str_replace( "{%link%}", $config['http_home_url'] . "index.php?newsid=" . $post_id, $row['template'] );
    • Заменяем на:
                  if ( $config['allow_alt_url'] == 'yes' )
                  {
                      $row1 = $db->super_query( "SELECT id, alt_name, flag, category, date FROM " . PREFIX . "_post WHERE id='$post_id' LIMIT 0,1" );

                      if ( $row1['flag'] and $config['seo_type'] )
                      {
                          if ( $row1['category'] and $config['seo_type'] == 2 ) $link = $config['http_home_url'] . get_url( intval( $row1['category'] ) ) . '/' . $row1['id'] . '-' . $row1['alt_name'] . '.html';
                          else $link = $config['http_home_url'] . $row1['id'] . '-' . $row1['alt_name'] . '.html';
                      } else $link = $config['http_home_url'] . date( 'Y/m/d/', $row1['date'] ) . $row1['alt_name'] . '.html';
                  } else $link = $config['http_home_url'] . 'index.php?newsid=' . $post_id;
                  
                  $row['template'] = str_replace( "{%link%}", $link, $row['template'] );
  5. Создайте пустой файл info.tpl в папки templates.
  6. Радуемся, теперь при изменении URL будет выдаваться ошибка 404, о не существовании данной страницы.

 
 
  Версия DLE: Все
Автор: Брупт (dle-infa.ru)
Категории новости: Баг-фиксы
Ключевые слова новости: url, новости, отображение, баг, чпу
Новость Отображение новости по любому URL была отредактирована Брупт 5 января 2011.

Причина: Ошибка при использовании подписки
 
 
 
 
 
   
 

#1 Автор комментария: Yeti Дата написания комментария: 24 октября 2010 10:51
 


Дата рег.: 24.10.2010
Комментариев: 6
Публикаций: 0
Только применив этот фикс придётся ещё и править функцию подписки в комментариях под ваш тип чпу иначе в приходящем сообщении будет ссылка на несуществующую страницу где оставили комментарий

цитировать
 

#2 Автор комментария: Брупт Дата написания комментария: 25 октября 2010 13:13
 


Дата рег.: 16.04.2009
Комментариев: 82
Публикаций: 167
Yeti,
Спасибо, подправил инструкцию )

цитировать
 

#3 Автор комментария: Yeti Дата написания комментария: 26 октября 2010 02:53
 


Дата рег.: 24.10.2010
Комментариев: 6
Публикаций: 0
я у себя раньше addcomments.php исправил, но не из-за применения данного фикса урл-а, а коробило меня то, что в сообщении приходила неудобоваримая ссылка и не сразу понятно было в какой пост коммент написали..везде есть чпу, а тут тупо нет селекта, и когда увидел Ваш фикс сразу вспомнил что после него точно будет косячок этот в письме.
Спасибо за фикс урл-а!

цитировать
 

#4 Автор комментария: SEOshnik Дата написания комментария: 4 января 2011 02:07
 


Дата рег.: 3.01.2011
Комментариев: 12
Публикаций: 0
Заюзал на 8.5, всё ок.

цитировать
 

#5 Автор комментария: Yeti Дата написания комментария: 5 января 2011 18:27
 


Дата рег.: 24.10.2010
Комментариев: 6
Публикаций: 0
Брупт,
На втором типе ЧПУ не будет работать верно отправка уведомления на e-mail с правильным адресом: - в категории косяк

цитировать
 

#6 Автор комментария: Брупт Дата написания комментария: 5 января 2011 19:06
 


Дата рег.: 16.04.2009
Комментариев: 82
Публикаций: 167
Цитата: Yeti
- в категории косяк


Ошибка будет только при публикации новости в несколько категорий smile

Спасибо, исправил.

цитировать
 

#7 Автор комментария: Yeti Дата написания комментария: 5 января 2011 19:15
 


Дата рег.: 24.10.2010
Комментариев: 6
Публикаций: 0
Брупт,
вы не исправили, внимательно посмотрите что вам приходит на почту(url) а именно что там в нём в категории : dle-infa.ru//148-otobrazhenie-novosti-po-lyubomu-url.html видите там пусто между слешами...

цитировать
 

#8 Автор комментария: Брупт Дата написания комментария: 5 января 2011 19:35
 


Дата рег.: 16.04.2009
Комментариев: 82
Публикаций: 167
Увы я не подписывался )

Оказывается еще и массива с категориями $cat_info не было smile

Подправил, надеюсь теперь все отлично будет.

цитировать
 

#9 Автор комментария: Yeti Дата написания комментария: 5 января 2011 20:04
 


Дата рег.: 24.10.2010
Комментариев: 6
Публикаций: 0
реализация красивей получилась чем у мну, забрал, спасибо

цитировать
 

#10 Автор комментария: SEOshnik Дата написания комментария: 6 января 2011 02:40
 


Дата рег.: 3.01.2011
Комментариев: 12
Публикаций: 0
Цитата: Брупт
Спасибо, исправил.

А что именно и где исправить то нужно, а то ведь многие, как и я, уже установили по старой инструкции.

цитировать
 

#11 Автор комментария: Брупт Дата написания комментария: 6 января 2011 13:40
 


Дата рег.: 16.04.2009
Комментариев: 82
Публикаций: 167
Цитата: SEOshnik
А что именно и где исправить то нужно, а то ведь многие, как и я, уже установили по старой инструкции.


Выполнить 3 пункт и обновить код из 4 пункта.

цитировать
 

#12 Автор комментария: geokond Дата написания комментария: 14 марта 2011 15:24
 


Дата рег.: 14.03.2011
Комментариев: 1
Публикаций: 0
http://dle-infa.ru/2011/03/12//148-good-news.html

А по этому адресу отображаться будет? хочу переезд организовать на сайте, а там по-старому новости отображаются - тип3
Поставлю тип1
Нужно чтобы доступны были и по старым ссылкам

цитировать
 

#13 Автор комментария: Брупт Дата написания комментария: 14 марта 2011 16:36
 


Дата рег.: 16.04.2009
Комментариев: 82
Публикаций: 167
На ЧПУ данное исправление не влияет )

Новости будут доступны на всех видах ЧПУ:

1 вид: _http://dle-infa.ru/148-otobrazhenie-novosti-po-lyubomu-url.html
2 вид: _http://dle-infa.ru/bags/148-otobrazhenie-novosti-po-lyubomu-url.html
3 вид: _http://dle-infa.ru/2010/10/02/otobrazhenie-novosti-po-lyubomu-url.html

цитировать
 

#14 Автор комментария: fasol Дата написания комментария: 1 июля 2011 06:04
 


Дата рег.: 21.01.2011
Комментариев: 3
Публикаций: 0
Да, целко лохотронище ещё тот. Проверил - действительно есть бажёк.

В принципе ему применение можно было найти - ссылки на новости до определённого количества символов сокращать, всё равно ведь лишние :)

цитировать
 

Добавление комментария
 
Ваше Имя:
Ваш E-Mail:
Включите эту картинку для отображения кода безопасности
обновить, если не виден код

 
 
 
Популярные новости
Copyright© DLE-Infa group (DLE-Infa.RU) 2009-2011 Все права защищены. Копирование и использование каких либо материала на сайте разрешено только с прямой ссылкой на dle-infa.ru