Jump to content
Sign in to follow this  
seoshnik444

Нужна помощь по DLE

Recommended Posts

Добрый день уважаемые коллеги!

 

У меня на сайте есть в полной новости модуль похожие материалы.

 

Только он выводит всё подряд. А хотеось бы чтобы он всё таки выводил именно материалы из той же категории, а также из подкатегории, в которой находится сам материал.

 

вот полный код модуля, который отвечает за вывод похожих материалов.

 

Подскажите знающие люди где ошибка и как её исправить самостоятельно.

 

Заранее благодарю.

 

<?php
if (!defined('DATALIFEENGINE'))
    die("Go fuck yourself!");
$userName  = !empty($userName) ? $db->safesql(strip_tags(stripslashes($userName))) : false;
$myConfig  = array(
    'userName' => $userName,
    'catId' => !empty($catId) ? $catId : '1',
    'template' => !empty($template) ? $template : 'relatednews',
    'cachePrefix' => !empty($cachePrefix) ? $cachePrefix : 'rels3' . rand(100,100),
    'cacheSuffix' => !empty($cacheSuffix) ? true : false
);
$cacheName = md5(implode('_', $myConfig));
$myModule  = false;
$myModule  = dle_cache($myConfig['cachePrefix'], $cacheName . $config['skin'], $myConfig['cacheSuffix']);
if (!$myModule) {
    if (file_exists(TEMPLATE_DIR . '/' . $myConfig['template'] . '.tpl')) {
        if (!isset($tpl)) {
            $tpl      = new dle_template();
            $tpl->dir = TEMPLATE_DIR;
        } else {
            $tpl->result['myModule'] = '';
        }
    
        
         $xfound = true;
         $xfields = xfieldsload();
        
                 
            $row   = $db->query( "SELECT p.id, p.date, p.short_story, p.xfields, rating, news_read, p.comm_num, p.title, p.category, p.alt_name FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE p.approve=1 AND id!=".$igroneid." AND category IN (".$category_id.") ORDER BY  p.date DESC LIMIT 0,4" );
            
while ( $row = $db->get_row() ) {
    $now[$row['id']] = $row;
};


if(is_array($now)) {
    $tpl->load_template($myConfig['template'] . '.tpl');
    
    $tpl->copy_template = '<aside id="item_related" class="ignore-select"><div class="b_title">Похожие объявления</div><div class="list_items main_items">';
    $tpl->compile('myModule');
    
    foreach($now as $row) {
    
            $row['date'] = strtotime( $row['date'] );
    
            if( ! $row['category'] ) {
                $my_cat = "---";
                $my_cat_link = "---";
            } else {
                
                $my_cat = array ();
                $my_cat_link = array ();
                $cat_list = explode( ',', $row['category'] );
            
                if( count( $cat_list ) == 1 ) {
                    
                    $my_cat[] = $cat_info[$cat_list[0]]['name'];
                    
                    $my_cat_link = get_categories( $cat_list[0] );
                
                } else {
                    
                    foreach ( $cat_list as $element ) {
                        if( $element ) {
                            $my_cat[] = $cat_info[$element]['name'];
                            if( $config['allow_alt_url'] ) $my_cat_link[] = "<a href=\"" . $config['http_home_url'] . get_url( $element ) . "/\">{$cat_info[$element]['name']}</a>";
                            else $my_cat_link[] = "<a href=\"$PHP_SELF?do=cat&category={$cat_info[$element]['alt_name']}\">{$cat_info[$element]['name']}</a>";
                        }
                    }
                    
                    $my_cat_link = implode( ', ', $my_cat_link );
                }
                
                $my_cat = implode( ', ', $my_cat );
            }
    
            $row['category'] = intval( $row['category'] );
            
            if( $config['allow_alt_url'] ) {
                
                if( $config['seo_type'] == 1 OR $config['seo_type'] == 2 ) {
                    
                    if( $row['category'] and $config['seo_type'] == 2 ) {
                        
                        $full_link = $config['http_home_url'] . get_url( $row['category'] ) . "/" . $row['id'] . "-" . $row['alt_name'] . ".html";
                    
                    } else {
                        
                        $full_link = $config['http_home_url'] . $row['id'] . "-" . $row['alt_name'] . ".html";
                    
                    }
                
                } else {
                    
                    $full_link = $config['http_home_url'] . date( 'Y/m/d/', $row['date'] ) . $row['alt_name'] . ".html";
                }
            
            } else {
                
                $full_link = $config['http_home_url'] . "index.php?newsid=" . $row['id'];
            
            }
    
            if( date( 'Ymd', $row['date'] ) == date( 'Ymd', $_TIME ) ) {
                
                $tpl->set( '{date}', $lang['time_heute'] . langdate( ", H:i", $row['date'] ) );
            
            } elseif( date( 'Ymd', $row['date'] ) == date( 'Ymd', ($_TIME - 86400) ) ) {
                
                $tpl->set( '{date}', $lang['time_gestern'] . langdate( ", H:i", $row['date'] ) );
            
            } else {
                
                $tpl->set( '{date}', langdate( $config['timestamp_active'], $row['date'] ) );
            
            }
    
            $news_date = $row['date'];
            $tpl->copy_template = preg_replace_callback ( "#\{date=(.+?)\}#i", "formdate", $tpl->copy_template );
    
            $tpl->set( '{category}', $my_cat );
            $tpl->set( '{link-category}', $my_cat_link );
    
            $row['title'] = stripslashes( $row['title'] );
    
            $row['title'] = str_replace( "{", "{", $row['title'] );
    
            $tpl->set( '{title}', $row['title'] );
            
            if ( preg_match( "#\\{title limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {
                $count= intval($matches[1]);
    
                $row['title'] = strip_tags( $row['title'] );
    
                if( $count AND dle_strlen( $row['title'], $config['charset'] ) > $count ) {
                        
                    $row['title'] = dle_substr( $row['title'], 0, $count, $config['charset'] );
                        
                    if( ($temp_dmax = dle_strrpos( $row['title'], ' ', $config['charset'] )) ) $row['title'] = dle_substr( $row['title'], 0, $temp_dmax, $config['charset'] ). " ...";
                    
                }
    
                $tpl->set( $matches[0], $row['title'] );
    
            }
    
    
            $tpl->set( '{link}', $full_link );
    
            $row['short_story'] = stripslashes( $row['short_story'] );
    
            if( $user_group[$member_id['user_group']]['allow_hide'] ) $row['short_story'] = str_ireplace( "[hide]", "", str_ireplace( "[/hide]", "", $row['short_story']) );
            else $row['short_story'] = preg_replace ( "#\[hide\](.+?)\[/hide\]#ims", "<div class=\"quote\">" . $lang['news_regus'] . "</div>", $row['short_story'] );
    
            if (stripos ( $tpl->copy_template, "{image-" ) !== false) {
    
                $images = array();
                preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $row['short_story'], $media);
                $data=preg_replace('/(img|src)("|\'|="|=\')(.*)/i',"$3",$media[0]);
    
                foreach($data as $url) {
                    $info = pathinfo($url);
                    if (isset($info['extension'])) {
                        if ($info['filename'] == "spoiler-plus" OR $info['filename'] == "spoiler-plus" ) continue;
                        $info['extension'] = strtolower($info['extension']);
                        if (($info['extension'] == 'jpg') || ($info['extension'] == 'jpeg') || ($info['extension'] == 'gif') || ($info['extension'] == 'png')) array_push($images, $url);
                    }
                }
    
                if ( count($images) ) {
                    $i=0;
                    foreach($images as $url) {
                        $i++;
                        $tpl->copy_template = str_replace( '{image-'.$i.'}', $url, $tpl->copy_template );
                        $tpl->copy_template = str_replace( '[image-'.$i.']', "", $tpl->copy_template );
                        $tpl->copy_template = str_replace( '[/image-'.$i.']', "", $tpl->copy_template );
                    }
    
                }
    
                $tpl->copy_template = preg_replace( "#\[image-(.+?)\](.+?)\[/image-(.+?)\]#is", "", $tpl->copy_template );
                $tpl->copy_template = preg_replace( "#\\{image-(.+?)\\}#i", "{THEME}/dleimages/no_image.jpg", $tpl->copy_template );
    
            }
    
            $tpl->set( '{text}', $row['short_story'] );
    
            if ( preg_match( "#\\{text limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {
                $count= intval($matches[1]);
    
                $row['short_story'] = str_replace( "</p><p>", " ", $row['short_story'] );
                $row['short_story'] = strip_tags( $row['short_story'], "<br>" );
                $row['short_story'] = trim(str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "\n", " ", str_replace( "\r", "", $row['short_story'] ) ) ) ));
    
                if( $count AND dle_strlen( $row['short_story'], $config['charset'] ) > $count ) {
                        
                    $row['short_story'] = dle_substr( $row['short_story'], 0, $count, $config['charset'] );
                        
                    if( ($temp_dmax = dle_strrpos( $row['short_story'], ' ', $config['charset'] )) ) $row['short_story'] = dle_substr( $row['short_story'], 0, $temp_dmax, $config['charset'] );
                    
                }
    
                $tpl->set( $matches[0], $row['short_story'] );
    
            }
    
            // Обработка дополнительных полей
            if( $xfound ) {
                $xfieldsdata = xfieldsdataload( $row['xfields'] );
                
                foreach ( $xfields as $value ) {
                    $preg_safe_name = preg_quote( $value[0], "'" );
    
                    if ( $value[6] AND !empty( $xfieldsdata[$value[0]] ) ) {
                        $temp_array = explode( ",", $xfieldsdata[$value[0]] );
                        $value3 = array();
    
                        foreach ($temp_array as $value2) {
    
                            $value2 = trim($value2);
                            $value2 = str_replace("'", "'", $value2);
    
                            if( $config['allow_alt_url'] ) $value3[] = "<a href=\"" . $config['http_home_url'] . "xfsearch/" . urlencode( $value2 ) . "/\">" . $value2 . "</a>";
                            else $value3[] = "<a href=\"$PHP_SELF?do=xfsearch&xf=" . urlencode( $value2 ) . "\">" . $value2 . "</a>";
                        }
    
                        $xfieldsdata[$value[0]] = implode(", ", $value3);
    
                        unset($temp_array);
                        unset($value2);
                        unset($value3);
    
                    }
            
                    if( empty( $xfieldsdata[$value[0]] ) ) {
                        $tpl->copy_template = preg_replace( "'\\[xfgiven_{$preg_safe_name}\\](.*?)\\[/xfgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
                        $tpl->copy_template = str_replace( "[xfnotgiven_{$value[0]}]", "", $tpl->copy_template );
                        $tpl->copy_template = str_replace( "[/xfnotgiven_{$value[0]}]", "", $tpl->copy_template );
                    } else {
                        $tpl->copy_template = preg_replace( "'\\[xfnotgiven_{$preg_safe_name}\\](.*?)\\[/xfnotgiven_{$preg_safe_name}\\]'is", "", $tpl->copy_template );
                        $tpl->copy_template = str_replace( "[xfgiven_{$value[0]}]", "", $tpl->copy_template );
                        $tpl->copy_template = str_replace( "[/xfgiven_{$value[0]}]", "", $tpl->copy_template );
                    }
                    
                    $xfieldsdata[$value[0]] = stripslashes( $xfieldsdata[$value[0]] );
    
                    if ( preg_match( "#\\[xfvalue_{$preg_safe_name} limit=['\"](.+?)['\"]\\]#i", $tpl->copy_template, $matches ) ) {
                        $count= intval($matches[1]);
            
                        $xfieldsdata[$value[0]] = str_replace( "</p><p>", " ", $xfieldsdata[$value[0]] );
                        $xfieldsdata[$value[0]] = strip_tags( $xfieldsdata[$value[0]], "<br>" );
                        $xfieldsdata[$value[0]] = trim(str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "\n", " ", str_replace( "\r", "", $xfieldsdata[$value[0]] ) ) ) ));
            
                        if( $count AND dle_strlen( $xfieldsdata[$value[0]], $config['charset'] ) > $count ) {
                                
                            $xfieldsdata[$value[0]] = dle_substr( $xfieldsdata[$value[0]], 0, $count, $config['charset'] );
                                
                            if( ($temp_dmax = dle_strrpos( $xfieldsdata[$value[0]], ' ', $config['charset'] )) ) $xfieldsdata[$value[0]] = dle_substr( $xfieldsdata[$value[0]], 0, $temp_dmax, $config['charset'] );
                            
                        }
            
                        $tpl->set( $matches[0], $xfieldsdata[$value[0]] );
            
                    } else    $tpl->copy_template = str_replace( "[xfvalue_{$value[0]}]", $xfieldsdata[$value[0]], $tpl->copy_template );
    
                }
            }
                $tpl->set( '{news-id}', $row['id'] );
            // Обработка дополнительных полей
        $tpl->compile('myModule');
    };

    $tpl->copy_template = '</div></aside>';
    $tpl->compile('myModule');
    $tpl->clear();
}
        
        $myModule = $tpl->result['myModule'];
        create_cache($myConfig['cachePrefix'], $myModule, $cacheName . $config['skin'], $myConfig['cacheSuffix']);
        $tpl->clear();
    } else {
        $myModule = '<b style="color:red">Отсутствует файл шаблона: ' . $config['skin'] . '/' . $myConfig['template'] . '.tpl</b>';
    }
}
echo $myModule;
?>

Share this post


Link to post
Share on other sites

у меня уже свой модуль есть - мне его надо исправить он и под дизайн уже запилен

вот только я не пойму куды тут закралась ошибка - так как в PHP я не особо силён поэтому и попросил помощи тут

Share this post


Link to post
Share on other sites

А зачем эти танцы с бубном, если в штатных настройка DLE есть эта функция?

 

Настройка системы -> Настройки вывода новостей

 

Искать похожие публикации только в тех же категориях, что и сама новость
Если 'Да', то при поиске похожих новостей, будет учитываться категория к которой принадлежит публикация. И будут выводится только новости из такой же категории, или субкатегорий (если разрешен вывод новостей из субкатегорий). Если 'Нет', то будут искаться похожие публикации из всех категорий.

Share this post


Link to post
Share on other sites

А зачем эти танцы с бубном, если в штатных настройка DLE есть эта функция?

 

Настройка системы -> Настройки вывода новостей

 

Искать похожие публикации только в тех же категориях, что и сама новость

Если 'Да', то при поиске похожих новостей, будет учитываться категория к которой принадлежит публикация. И будут выводится только новости из такой же категории, или субкатегорий (если разрешен вывод новостей из субкатегорий). Если 'Нет', то будут искаться похожие публикации из всех категорий.

Согласен с вами, зачем писать руками то, что есть уже готовое давно. Еще в 9.х версиях вроди

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...