blagoy_vip 7 Опубликовано: 21 января 2015 Рассказать Опубликовано: 21 января 2015 (изменено) Есть сайт на DLE 10.1 выкса.рф, на котором установлен сторонний модуль. Предыстория: когда в 2006 году запускался сайт, у DLE не было возможности выбирать тип ЧПУ и по умолчанию использовался тип ЧПУ-3 (http://site.ru/2008/...мя-новости.html ), когда ввели ЧПУ-1 (http://site.ru/id-имя-новости.html ), я заказал модуль, который бы позволял публиковать новости с ЧПУ-1, а старые оставил бы на ЧПУ-3 (чтобы адрес не изменился, тк там висят ссылки с Sape). Модуль мне сделали (файл в приложении), и он хорошо работал до версии DLE 10.1. Сейчас я обновился с 10.1 на 10.4 (пока на виртуалке) - модуль работать перестал. Надо его оптимизировать под новую версию, немного доработать и если это возможно - улучшить. Что доработать - убрать галочку при добавлении/редактировании новости и по умолчанию на всех добавляемых новостях (кроме старых, тех что с ЧПУ-3, даже если их отредактировать) ставить ЧПУ-1. Все вопросы в личку, https://vk.com/ivanmalyshev или Skype blagoy_vip 0) выполнить в phpmyadmin ALTER TABLE `dle_post` ADD `seo_type` TINYINT NOT NULL 1) /inc/addnews.php ищем В Яндекс.Новости после него, перед </td> добавляем <!-- dymm seotype --> <br/><input type="checkbox" value="1" name="seo_type">Тип ЧПУ = 1ищем $allow_yandex = isset( $_POST['allow_yandex'] ) ? intval( $_POST['allow_yandex'] ) : 0; ПОСЛЕ вставляем //dymm seotype $seo_type = isset( $_POST['seo_type'] ) ? intval( $_POST['seo_type'] ) : 0; ищем $row = $db->insert_id(); ПОСЛЕ вставляем //dymm seotype $db->query( "UPDATE " . PREFIX . "_post set seo_type='{$seo_type}' where id = '{$row}'" ); 2) inc/editnews.php ищем if( $row['allow_yandex'] ) $ifya = "checked"; else $ifya = ""; ПОСЛЕ вставляем //dymm seotype if( $row['seo_type'] ) $ifseo = "checked"; else $ifseo = "";ищем <input type="checkbox" name="allow_yandex" value="1" {$ifya}>В Яндекс.Новости ПОСЛЕ него, перед </td> добавляем <!-- dymm seotype --> <br/><input type="checkbox" value="1" name="seo_type" {$ifseo}>Тип ЧПУ = 1 ищем $allow_yandex = isset( $_POST['allow_yandex'] ) ? intval( $_POST['allow_yandex'] ) : 0; После вставляем //dymm seotype $seo_type = isset( $_POST['seo_type'] ) ? intval( $_POST['seo_type'] ) : 0;ищем if ($item_db[6]) $db->query(............... ПЕРЕД НИМ вставляем //dymm seotype $db->query( "UPDATE " . PREFIX . "_post set seo_type='{$seo_type}' where id='$item_db[0]'" ); 3) /modules/show_short.php ищем $sql_result = $db->query( $sql_select ); ПЕРЕД НИМ вставляем //dymm seotype $sql_select = str_replace('id,','id,seo_type,',$sql_select);находим if( ($row['full_story'] < 13) AND $config['hide_full_link'] == "yes" ) $tpl->set_block( "'\\[full-link\\](.*?)\\[/full-link\\]'si", "" ); ПЕРЕД ним вставляем //dymm seotype------------------> if($config['allow_alt_url'] == "yes" && $row['seo_type'] == 1){ $full_link = $config['http_home_url'] . $row['id'] . "-" . $row['alt_name'] . ".html"; } //dymm <------------------ 4)/engine/modules/show.full.php находлим первыйif( $config['allow_alt_url'] == "yes" ) { ПЕРЕД ним вставляем//dymm seotype start ------------------------------> if ($row['seo_type'] == 1) { $full_link = $config['http_home_url'] . $row['id'] . "-" . $row['alt_name'] . ".html"; if ($config['seo_control'] AND ( isset($_GET['seourl']) OR strpos ( $_SERVER['REQUEST_URI'], $row['id'] ) === false ) ) { if ($_GET['seourl'] != $row['alt_name'] OR $_GET['seocat'] OR $_GET['news_name'] OR strpos ( $_SERVER['REQUEST_URI'], "?" ) !== false OR ($_GET['news_page'] == 1 AND $cstart < 2 AND $view_template != "print") OR ($view_template == "print" AND $news_page > 1) ) { if ($view_template == "print") { $re_url = explode ( "engine/print.php", strtolower ( $_SERVER['PHP_SELF'] ) ); $re_url = reset ( $re_url ); } else { $re_url = explode ( "index.php", strtolower ( $_SERVER['PHP_SELF'] ) ); $re_url = reset ( $re_url ); } header("HTTP/1.0 301 Moved Permanently"); header("Location: {$re_url}{$row['id']}-{$row['alt_name']}.html"); die("Redirect"); } } $config['seo_control'] = false; } //dymm <--------------------------------------------находим $db->query( "SELECT id, date, short_story, xfields, title, category, alt_name FROM " . PREFIX . "_post WHERE id IN({$row['related_ids']}) ORDER BY id DESC"); ЗАМЕНЯЕМ НА $db->query( "SELECT id,seo_type, date, short_story, xfields, title, category, alt_name FROM " . PREFIX . "_post WHERE id IN({$row['related_ids']}) ORDER BY id DESC"); находим $db->query( "SELECT id, date, short_story, xfields, title, category, alt_name FROM " . PREFIX . "_post WHERE {$where_category}{$allowed_cats}MATCH (title, short_story, full_story, xfields) AGAINST ('$body') AND id != " . $row['id'] . " AND approve=1" . $where_date . " LIMIT " . $config['related_number'] );ЗАМЕНЯЕМ НА $db->query( "SELECT id,seo_type, date, short_story, xfields, title, category, alt_name FROM " . PREFIX . "_post WHERE {$where_category}{$allowed_cats}MATCH (title, short_story, full_story, xfields) AGAINST ('$body') AND id != " . $row['id'] . " AND approve=1" . $where_date . " LIMIT " . $config['related_number'] ); находим $tpl2->set( '{title}', strip_tags( stripslashes( $related['title'] ) ) ); ПЕРЕД НИМ вставляем //dymm seotype------------------> if($config['allow_alt_url'] == "yes" && $related['seo_type'] == 1){ $rel_full_link = $config['http_home_url'] . $related['id'] . "-" . $related['alt_name'] . ".html"; } //dymm <------------------ 5) /modules/show.custom.php (вставить строчку $sql_result = $db->query( $sql_select )ищем $sql_result = $db->query( $sql_select ); ПЕРЕД НИМ вставляем //dymm seotype $sql_select = str_replace('id,','id,seo_type,',$sql_select); находим if( $row['full_story'] < 13 AND $config['hide_full_link'] == "yes" ) $tpl->set_block( "'\\[full-link\\](.*?)\\[/full-link\\]'si", "" );ПЕРЕД ним вставляем //dymm seotype------------------> if($config['allow_alt_url'] == "yes" && $row['seo_type'] == 1){ $full_link = $config['http_home_url'] . $row['id'] . "-" . $row['alt_name'] . ".html"; } //dymm <------------------ 6) /engine/classes/google.class.phpнаходим $result = $db->query( "SELECT p.id, p.date, p.alt_name, p.category, e.editdate, e.disable_index FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE approve=1" . $where_date . " ORDER BY date DESC" . $this->limit ); ЗАМЕНЯЕМ НА$result = $db->query( "SELECT p.id,p.seo_type, p.date, p.alt_name, p.category, e.editdate, e.disable_index FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE approve=1" . $where_date . " ORDER BY date DESC" . $this->limit ); находим if ( $row['editdate'] ){ПЕРЕД НИМ вставляем //dymm seotype------------------> if($this->allow_url == "yes" && $row['seo_type'] == 1){ $loc = $this->home . $row['id'] . "-" . $row['alt_name'] . ".html"; } //dymm <------------------ [/code] Изменено 21 января 2015 пользователем blagoy_vip Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.