1

Тема: Популярные статьи отдельным блоком,с картинками., Выводит отдельным блоком популярные статьи с картинками.

Модуль/плагин работает на версии 1.5.2, поэтому если кто переделает под версию 2.0.2  то будет хорошо.
Воводиться в шаблоне так: <?php include MYCODE.'popular_articles.php'; ?>
Сам файл .php должен лежать в папке /mycode
п.с. Файл был создан и куплен давным давно у rogodessa, про публичное распространение ничего не оговаривалось.

<?php
//* Script by RogOdessa
//* Site URL: http//:rogodessa.ru
//* License Conditions: FREE
//* For Kandidat CMS 1.5.2

$articleCount = 2; //кличестово статей в блоке
$lengthShort = 200;
$howView = 3; // варианты вывода блоков: 1 - только заголовок, 2 - заголовок и текст, 3 - заголовок, текст и изображение
$showVieu = 1; // показывать количество просмотров? 1 - да, 0 - нет

function articleparams($findwhat,$data) {
    if(preg_match('/(title)|(content)/',$findwhat)){
        @$text = explode('<!-- Kan_'.trim($findwhat).' -->',$data);
        $text =  trim(@$text[1]);
    }
    return $text;
}
                
function GetListFiles($folder,&$all_files){
    $fp=opendir($folder);
    while($cv_file=readdir($fp)) {
    $artffile = $folder."/".$cv_file;
    
    if(preg_match("/(main.dat)|(404.dat)|(index.php)|(.htaccess)/i", $artffile)) {    } 
    else {
    
        if( is_file($artffile)) {
            $all_files[]=$folder."/".$cv_file;
        }elseif( $cv_file!="." && $cv_file!=".." && is_dir($folder."/".$cv_file) ){
            GetListFiles($folder."/".$cv_file,$all_files);
        }
    }
    }
    closedir($fp);
}

$all_files=array();
GetListFiles("articles",$all_files);

$viewedArticles = array();

for($n=0;$n<count($all_files);$n++) {
$enhead = explode('/', $all_files[$n]);
$nameFile = array_pop($enhead);
$nameFile = str_replace(".dat", "", $nameFile);


    foreach ($viewsArr as $key => $value) {
    
    if ( $value['article'] == $nameFile ) {
         $viewedArticles[$all_files[$n]] = $value['view'];
    }
    
}
}

arsort($viewedArticles);

$viewedArticles = array_slice($viewedArticles, 0, ($articleCount), true);

print '<div class="popular-articles">';
foreach ($viewedArticles as $key => $value) {
    @$titleArt = articleparams('title', file_get_contents($key));
    
    if ( $showVieu == 1 )    {
        $countViews = '('.$value.')';
    }        
    
    $urlArt = str_replace(".dat", ".html", $key);
    $urlArt = str_replace("articles", "", $urlArt);
    
    if ( $howView == 1 ) {
        print '<div class="popular-list">
                <div class="popular-art-title"><a href="'.$urlArt.'">'.$titleArt.'</a> '.$countViews.'</div>
            </div>';
    }
    
    if ( $howView == 2 ) {
    
    @$contentArt = articleparams('content', file_get_contents($key));
                $cleanContent = strip_tags($contentArt);
                $post=min(strlen($cleanContent),$lengthShort);
                $post = strpos($cleanContent, ' ',$post);
                if($post) $sortText=substr($cleanContent,0,$post);
    
        print '<div class="popular-list">
                <div class="popular-art-title"><a href="'.$urlArt.'">'.$titleArt.'</a> '.$countViews.'</div>
                <div class="popular-art-content">'.$sortText.'</div>
            </div>';
    }
    
    if ( $howView == 3 ) {
    
        @$contentArt = articleparams('content', file_get_contents($key));
                $cleanContent = strip_tags($contentArt);
                $post=min(strlen($cleanContent),$lengthShort);
                $post = strpos($cleanContent, ' ',$post);
                if($post) $sortText=substr($cleanContent,0,$post);
    
    if(preg_match("/img/i", $contentArt)) {
    $domContent = new DOMDocument;
    $domContent->loadHTML($contentArt);
        foreach ($domContent->getElementsByTagName('img') as $nodeImg) {
            $urlFromCont = $nodeImg->getAttribute( 'src' );
        }
    $imageArticle = '<div class="popular-art-img"><img src="'.$urlFromCont.'" alt="'.$titleArt.'"></div>';
    } else {
        $urlFromCont = '';    $imageArticle = '';
        }
    
    print '<div class="popular-list">
                <div class="popular-art-title"><a href="'.$urlArt.'">'.$titleArt.'</a> '.$countViews.'</div>
                '.$imageArticle.'
                <div class="popular-art-content">'.$sortText.'</div>
            </div>';
    }
}
print '</div>';

?>

Отредактировал ka1ex (29-06-2017 14:53:59)