prowebber.ru - Тут есть все для настоящих вебмастеров

Чтение RSS Мы в твиттере
«    Февраль 2017    »
ПнВтСрЧтПтСбВс
 
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
 

Всё для вебмастера » Всё для DataLife Engine » DLE хаки » Расширенный вывод related и custom новостей + картинка

Расширенный вывод related и custom новостей + картинка


Данный материал предоставлен сайтом ProWebber.ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
У нас вы можете скачать бесплатно Расширенный вывод related и custom новостей + картинка.


Расширенный вывод related и custom новостей + картинка

Мне много раз встречались разнообразные хаки для расширенного вывода новостей, выводимых тегами {custоm} и {rеlated-news}, но ни один из них не подходил для моих целей на 100%. Поэтому и было решено написать человеческий хак вывода похожих новостей и пользовательского вывода новостей. Основной загвоздкой была обработка картинок, по задумке должны были создаваться уменьшенные копии и складываться в папку на сервере, но моих знаний php никак не хватало на это. В итоге, после активного нагугливания, было найдено несколько вариантов и хаки были готовы. А что получилось - судить вам.

Итак первый представленный хак:

Advanced-Custom


Расширенный вывод related и custom новостей + картинка


Назначение: Вывод новостей с превьюшками и определенным количеством символов в названии и в кратком содержимом через custom

Возможности:
- Вывод обрезанного, до заданного количества символов, заголовка (при установке значения 0 заголовок не обрезается);
- Вывод обрезанного, до заданного количества символов, краткого содержания (при установке значения 0 краткое содержание не обрезается, сохраняется всё форматирование и т.д. в общем как обычно и выводится {sort-story}, при других значениях удаляется всё форматирование, картинки, переносы строки заменяются на пробелы.);
- Вывод уменьшенной, до заданного размера, копии изображения из краткого содержания. Изображение уменьшается и обрезается через crop до квадрата, и сохраняется в папке кеша сайта с префиксом, соответствующим размеру. Таким образом можно вывести одни и те же новости в разных местах с картинками разного размера, а при редактировании или удалении новостей, либо очистке кеша сервер не будет захламляться лишними файлами.
- Вывод, при необходимости, кликабельной превьюшки, увеличивающейся через HightSlide до оригинала.

Установка:

1. Открываем index.php

Находим:

$tpl->copy_template = preg_replace ( "#\\{custom category=['\"](.+?)['\"] template=['\"](.+?)['\"] aviable=['\"](.+?)['\"] from=['\"](.+?)['\"] limit=['\"](.+?)['\"] cache=['\"](.+?)['\"]\\}#ies", "custom_print('\\1', '\\2', '\\3', '\\4', '\\5', '\\6', '{$dle_module}')", $tpl->copy_template );

Заменяем на:

$tpl->copy_template = preg_replace ( "#\\{custom category=['\"](.+?)['\"] template=['\"](.+?)['\"] aviable=['\"](.+?)['\"] from=['\"](.+?)['\"] limit=['\"](.+?)['\"] cache=['\"](.+?)['\"] title=['\"](.+?)['\"] short=['\"](.+?)['\"] img_size=['\"](.+?)['\"]\\}#ies", "custom_print('\\1', '\\2', '\\3', '\\4', '\\5', '\\6', '\\7', '\\8', '\\9',  '{$dle_module}')", $tpl->copy_template );



2. Открываем engine/modules/functions.php

Находим:

function custom_print($custom_category, $custom_template, $aviable, $custom_from, $custom_limit, $custom_cache, $do) {


меняем на:

function custom_print($custom_category, $custom_template, $aviable, $custom_from, $custom_limit, $custom_cache, $custom_title, $custom_short, $custom_img_size, $do) {



Находим:

$custom_limit = intval( $custom_limit );


Ниже добавляем:

        $custom_title = intval( $custom_title );
        $custom_short = intval( $custom_short );
        $custom_img_size = intval( $custom_img_size );




Находим:

$custom_cache_id = "cat_" . $custom_category . "template_" . $custom_template . "from_" . $custom_from . "limit_" . $custom_limit;


меняем на:

$custom_cache_id = "cat_" . $custom_category . "template_" . $custom_template . "from_" . $custom_from . "limit_" . $custom_limit . "title_" . $custom_title . "custom_short_" . $custom_short;



3. Открываем engine/modules/show.custom.php:


Находим:


// Обработка дополнительных полей
        

        $tpl->set( '{title}', stripslashes( $row['title'] ) );



Заменяем на:

     // Обработка дополнительных полей

    if ($custom_title != 0) {
    if (strlen($row['title'])>$custom_title) $row['title'] = substr($row['title'],0,$custom_title)."...";
    } else {$row['title'] = $row['title']; }    
    $tpl->set('{title}', stripslashes($row['title']));

        //-----Обработка картинок ---
$c_def_img = "{THEME}/images/nothumb.gif"; // - ПУТЬ до картинки по умолчанию, на тот случай если в новости нет картинки.

$custom_count_img = preg_match_all('%(((http://www)|(http://)|(www))[-a-zA-Z0-9@:\%_\+.~#?&//=]+)\.(jpg|jpeg|gif|png)%i', $row['short_story'], $custom_img_match);
if ($custom_count_img != ""){

    $custom_img_parts = pathinfo($custom_img_match[0][0]);
    $images = $custom_img_parts['dirname'].'/'.$custom_img_parts['basename'];
    $not_resized_img = $custom_img_parts['dirname'].'/'.$custom_img_parts['basename'];
    
    $c_upload_path = ROOT_DIR."/engine/cache/";
    $image_name = explode ("/",$images);
    $image_name = end ($image_name);
    $image_name = $custom_img_size."_".$image_name;
    
        if (!file_exists($c_upload_path.$image_name)) {
        include_once ENGINE_DIR . '/classes/thumb.class.php';
        $thumb=new thumbnail($images);
        $thumb->crop($custom_img_size,$custom_img_size);
        $thumb->jpeg_quality(85);
        $thumb->save($c_upload_path.$image_name);
        @chmod( $c_upload_path.$image_name, 0666 );
        }
        
    $images = $config['http_home_url']."engine/cache/".$image_name;
    $images = '<img src="'.$images.'" width="'.$custom_img_size.'" height="'.$custom_img_size.'"  border="0" alt="'.$row['title'].'">';
} else {
    $not_resized_img = "{THEME}/images/nothumb.gif";
    $images = '<img src="'.$c_def_img.'" width="'.$custom_img_size.'" height="'.$custom_img_size.'"  border="0" alt="'.$row['title'].'">';
}
$tpl->set( '{image}',$images);
$tpl->set( '[full-img]', "<a href=\"" . $not_resized_img . "\"  onclick=\"return hs.expand(this)\" >" );
$tpl->set( '[/full-img]', "</a>" );
$tpl->set( '{full-img}','<img src="'.$not_resized_img.'" border="0" alt="'.$row['title'].'">' );
    //<-----Обработка картинок ---





Находим:

    $tpl->set( '{short-story}', stripslashes( $row['short_story'] ) );


Заменяем на:

    $row['short_story'] = stripslashes( $row['short_story'] );
    if ($custom_short != 0) {
    $custom_short_story = strip_tags(str_replace(array('<br>','<br />')," ",$row['short_story']));
    if (strlen($custom_short_story)>$custom_short) $custom_short_story = substr($custom_short_story,0,$custom_short)."...";
       }else {$custom_short_story = $row['short_story'];}
    $tpl->set('{short-story}', $custom_short_story);




4. Открываем /engine/cache/.htaccess

Удаляем всё, что там написано и вставляем:

Order Deny,Allow
#Deny from all
<Files *.tmp>
Deny from all
</Files>
<Files "\.(jpg|gif|png)$">
Allow from all
</Files>


Это для того, чтобы дать доступ чтения для картинок.


5. Кладём в папку images текущего шаблона картинку nothumb.gif


Для вывода новостей используем:

{custom category="1" template="shortstory" aviable="main" from="0" limit="5" cache="yes" title="30" short="100" img_size="50"}


Указание всех тегов обязательно, иначе будет глюк...

Где:

category, template, aviable, from, limit, cache - это стандартные теги для настройки вывода.
title - обрезка заголовка
short - обрезка краткой новости
img_size - ширина и высота картинки.

title="0" - отключить обрезание заголовка.
short="0" - отключить образание краткого содержимого новости

- Для вывода миниатюры изображения используем тег {image}
- Для вывода оригинала - {full-img}
- Если поставить: [full-img] {image}[/full-img] - будет выводиться кликабельная уменьшенная копия, при клике на HightSlide будет показано оригинальное изображение.

CSS я не буду описывать, так как это сугубо индивидульно для каждого сайта.

ВСЁ! теперь имеем красивый и единообразный пользовательский вывод новостей.





Далее второй хак:

Advanced-Related


Расширенный вывод related и custom новостей + картинка


Назначение: Вывод похожих новостей с превьюшками и определенным количеством символов в названии и в кратком содержимом с настройками в админке.
За основу взят аналогичный хак от DleTweak.ru

Возможности:

- Вывод обрезанного, до заданного количества символов, краткого содержания (настраивается в админке);
- Вывод уменьшенной, до заданного размера, копии изображения из краткого содержания. Изображение уменьшается и обрезается через crop до квадрата, и сохраняется в папке кеша сайта с префиксом, соответствующим размеру. Таким образом можно вывести одни и те же новости в разных местах с картинками разного размера, а при редактировании или удалении новостей, либо очистке кеша сервер не будет захламляться лишними файлами. (размер настраивается в админке)


Установка:

Установка:

1. Открыть /engine/inc/options.php

Ищем:

showRow( $lang['opt_sys_related'], $lang['opt_sys_relatedd'], makeDropDown( array ("1" => $lang['opt_sys_yes'], "0" => $lang['opt_sys_no'] ), "save_con[related_news]", "{$config['related_news']}" ) );


Ниже вставляем:

showRow( $lang['opt_sys_related_n'], $lang['opt_sys_relatedd_n'], "<input class=edit type=text style=\"text-align: center;\" name='save_con[related_news_n]' value=\"{$config['related_news_n']}\" size=5>" );
showRow( $lang['opt_sys_related_img'], $lang['opt_sys_relatedd_img'], "<input class=edit type=text style=\"text-align: center;\" name='save_con[related_img]' value=\"{$config['related_img']}\" size=5>" );



2. Открыть /engine/modules/show.full.php

Ищем:

SELECT id, title, date, category, alt_name, flag FROM


Меняем на:

SELECT id, title, date, category, alt_name, short_story, flag FROM



Ищем:

$buffer .= "<li><a href=\"" . $full_link . "\">" . stripslashes( $related['title'] ) . "</a></li>";



Меняем на:

    // *************************
    // START MODERN RELATED NEWS
    // *************************
    //-----Обработка картинок --->
    $pictitle = stripslashes( $related['title'] );
    $related_count_img = preg_match_all('%(((http://www)|(http://)|(www))[-a-zA-Z0-9@:\%_\+.~#?&//=]+)\.(jpg|jpeg|gif|png)%i', $related['short_story'], $related_img_match);
if ($related_count_img != ""){

    $related_img_parts = pathinfo($related_img_match[0][0]);
    $related_images = $related_img_parts['dirname'].'/'.$related_img_parts['basename'];
    $not_resized_img = $related_img_parts['dirname'].'/'.$related_img_parts['basename'];
    
    $related_upload_path = ROOT_DIR."/engine/cache/";
    $rel_image_name = explode ("/",$related_images);
    $rel_image_name = end ($rel_image_name);
    $rel_image_name = $config['related_img']."_".$rel_image_name;
    
        if (!file_exists($related_upload_path.$rel_image_name)) {
        include_once ENGINE_DIR . '/classes/thumb.class.php';
        $thumb=new thumbnail($related_images);
        $thumb->crop($config['related_img'],$config['related_img']);
        $thumb->jpeg_quality(85);
        $thumb->save($related_upload_path.$rel_image_name);
        @chmod( $related_upload_path.$rel_image_name, 0666 );
        }
        
    $related_images = $config['http_home_url']."engine/cache/".$rel_image_name;
    $related_images = '<img src="'.$related_images.'" width="'.$config['related_img'].'" height="'.$config['related_img'].'"  border="0" alt="'.$row['title'].'">';
} else {
    $not_resized_img = "{THEME}/images/nothumb.gif";
    $related_images = '<img src="{THEME}/images/nothumb.gif" width="'.$config['related_img'].'" height="'.$config['related_img'].'"  border="0" alt="'.$row['title'].'">';
}
    //<-----Обработка картинок ---
            
    $related['short_story'] = preg_replace("/\[attachment=[[:digit:]]*\]/si","",stripslashes($related['short_story']));
    $related['short_story'] = preg_replace("/<!--*-->/si","",$related['short_story']);
    $related['short_story'] = strip_tags(str_replace(array('<br>','<br />')," ",$related['short_story'])); //-- замена переносов на пробелы --
    if( strlen( $related['short_story'] ) > $config['related_news_n'] ) $related['short_story'] = substr( $related['short_story'], 0, $config['related_news_n'] ) . " ..."; //--обрезка содержания --
    
    // -- вывод блока -->
    $buffer .='
        <div class="related_block">
        <a href="'.$full_link.'" title="'.$pictitle.'">'.$pictitle.'</a>
        <div class="related_image" style="width:'.$config['related_img'].'; height:'.$config['related_img'].';">'.$related_images.'</div>
        <div class="related_descript">'.stripslashes($related['short_story']).'</div>
        <div class="clr"></div>
        </div>';
    // <-- вывод блока --

    // *************************
    // END MODERN RELATED NEWS
    // *************************



3. Открыть /language/Russian/adminpanel.lng

В любое удобное место вставляем:

'opt_sys_related_n' => "Обрезание описания",
'opt_sys_relatedd_n' => "Количество символов в описании к похожей новости.",
'opt_sys_related_img' => "Размер изображения",
'opt_sys_relatedd_img' => "Масимальный размер бОльшей стороны изображения в похожей новости.",



4. Кладём в папку {THEME}/images/ файл nothumb.gif желаемого размера.


5. Настраиваем вывод в админке.

Настройка обрезания содержания и размера картинки производится в админке, в разделе Настройка системы -> Оптимизация запросов к базе данных.


Вывод блока осуществляется тегом {related-news} без всяких
    .

    Вот и всё. Теперь имеем удобный вид похожих новостей.



    Приятной работы!

    Автор: ПафНутиЙ (_http://pafnuty.name)

    Демо: _http://japan-saratov.net (на главной видно работу первого хака, а в полных новостях - второго)



    P.S.
    Стоит обратить внимание на то, что если например и для похожих новостей и для custom установлен одинаковый размер картинки, то одна и та же картинка будет показываться и в похожей новости и в custom-новости, естественно при совпадении id новости smile это немного уменьшает "захламлённость" сервера.
    Так же при очистке кеша все превьюшки будут удалены.

    Конструктивные предложения как всегда принимаются с радостью.


+1
Просмотры: 13375 VIP ProWebber | Комментарии (38)
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

#1adamantis

  • 27 октября 2010 13:25
  • Регистрация: 11.09.2010
  • ICQ: 433009088
  • Комментариев: 107
У меня стоит модуль S-Blocks.
Доволен на 100%.
Там и шаблон изменить через админку можна и выбрать тип сортировки.

0

#2ПафНутиЙ

  • 27 октября 2010 13:35
  • Регистрация: 8.03.2010
  • ICQ: 817233
  • Комментариев: 400
adamantis,
Если не ошибаюсь - S-Blocks платный, это раз.
А второе - не всегда требуются такой модуль. Если нужно просто чуть приукрасить вывод похожих новостей и пользовательских новостей (как в моём случаи), то этот хак - то что доктор прописал. :)

--------------------

0

#3doti04

  • 27 октября 2010 13:52
  • Регистрация: 16.05.2010
  • ICQ: --
  • Комментариев: 38
все зделал как написана ио картинку не виведит. Что делат?

--------------------

0

#4ПафНутиЙ

  • 27 октября 2010 13:59
  • Регистрация: 8.03.2010
  • ICQ: 817233
  • Комментариев: 400
.htaccess правили? (его надо править если даже устанавливаете второй хак отдельно)

--------------------

0

#5WooW

  • 27 октября 2010 14:03
  • Регистрация: 22.10.2009
  • ICQ: --
  • Комментариев: 504
ПафНутиЙ, спасибо, но в следующий раз старайся инструкции в файл класть ><

0

#6doti04

  • 27 октября 2010 14:20
  • Регистрация: 16.05.2010
  • ICQ: --
  • Комментариев: 38
Цитата: ПафНутиЙ
.htaccess правили? (его надо править если даже устанавливаете второй хак отдельно)


что написат внутри?

Картинак не виводит, что делат скажите ктонибут??

--------------------

0

#7tamerlan

  • 27 октября 2010 14:24
  • Регистрация: 11.09.2010
  • ICQ: 389840028
  • Комментариев: 299
Order Deny,Allow
#Deny from all
<Files *.tmp>
Deny from all
</Files>
<Files "\.(jpg|gif|png)$">
Allow from all
</Files>


А если апача нет ну и .htaccess естественно не работает, как быть?

--------------------

0

#8Silver_UA

  • 27 октября 2010 14:30
  • Регистрация: 18.09.2010
  • ICQ: --
  • Комментариев: 27
ПафНутиЙ,
1. Есть нуленый S-Blocks, отлично работающий на всех версиях.
2. Его установка проще установки этих 2 хаков. И при этом открывается в десятки раз больше возможностей.

P.S. Однако за старания спасибо, наверняка кому-то пригодится.

--------------------

0

#9sabas

  • 27 октября 2010 15:39
  • Регистрация: 16.09.2010
  • ICQ: --
  • Комментариев: 17
Автору спс , и удачи по-жизни ! Мне действительно пригодилось )) Вот бы автор выложил еще "древовидные комменты" как у себя на сайте ... вааще красав4егом был good

0

#10fdsa1

  • 27 октября 2010 15:58
  • Регистрация: 17.09.2010
  • ICQ: 626127968
  • Комментариев: 287
  • Выкл.
Спасибо!
Уже поставил,все отлично работает! smile

--------------------

0

#11ПафНутиЙ

  • 27 октября 2010 16:34
  • Регистрация: 8.03.2010
  • ICQ: 817233
  • Комментариев: 400
sabas,
Терпение, и возможно скоро он будет, либо в продаже, либо в паблике, я ещё не решил. smile В индивидуальном порядке стучите в асю - обсудим.

tamerlan1336,
Замените в скрипте папку кеша (там в 2х местах для каждого хака) и дайте права 777 на эту папку, будут вам картинки.

--------------------

0

#12adamantis

  • 27 октября 2010 17:25
  • Регистрация: 11.09.2010
  • ICQ: 433009088
  • Комментариев: 107
1. S-Blocks на ПВ есть нулл.
2. Для моего сайта не подходит вывод как в этой новости

0

#13ПафНутиЙ

  • 27 октября 2010 17:52
  • Регистрация: 8.03.2010
  • ICQ: 817233
  • Комментариев: 400
Silver_UA, adamantis,
Не люблю нулами пользоваться, это неуважение самого себя.
Можно что-то подсмотреть оттуда, но пользоваться.... нет. ИМХО

--------------------

0

#14kurudereli

  • 27 октября 2010 20:05
  • Регистрация: 24.09.2009
  • ICQ: --
  • Комментариев: 18
супер. Ни один другой противник мире веб-

0

#15Dankil

  • 28 октября 2010 01:14
  • Регистрация: 2.10.2010
  • ICQ: --
  • Комментариев: 135
  • Выкл.

ПафНутиЙ,зделай такой хак с выводом материала как на главной кинопоиска good good

0

#16ПафНутиЙ

  • 28 октября 2010 07:12
  • Регистрация: 8.03.2010
  • ICQ: 817233
  • Комментариев: 400
Chebudil, такой вывод можно сделать, используя этот хак и css

--------------------

0

#175Nizza

  • 28 октября 2010 09:06
  • Регистрация: 22.09.2009
  • ICQ: --
  • Комментариев: 345
adamantis,
ну и что за флуд? не устраивает хак не ставь, тебя под дулом пистолета его чтоль заставляют ставить ? - нет) вот и не стоит тут нам рассписывать подходить тебе это или нет!!! не подходит идём мимо.

ПафНутиЙ,

хорошая реализация, кому нужно сделают себе так ;)

0

#18Dark5ider

  • 28 октября 2010 13:33
  • Регистрация: 27.01.2010
  • ICQ: 8136682
  • Комментариев: 28
АХаха! КАстум, версия 1.6 - точь в точь что здесь написано)

0

#19HAN016

  • 28 октября 2010 14:32
  • Регистрация: 28.09.2010
  • ICQ: 4866438
  • Комментариев: 12
респект bomb

0

#20ПафНутиЙ

  • 28 октября 2010 14:56
  • Регистрация: 8.03.2010
  • ICQ: 817233
  • Комментариев: 400
Dark5ider,
О_о покажи этот КАстум

--------------------

0
1 2
Предыдущая    Следующая
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.

Max-energy.top - Заработок на электросчетчиках;)

Skripters.info - все для вебмастера. Только эксклюзивный контент.

Создание шаблонов DLE, быстро и недорого! 3wave.com.ua

Бро лей на лучшую партнёрку

Почти бесплатный VDS хостинг!

Скаволини

Кухни скаволини. Доставка сегодня! Рекордные цены

svag.ru


Фотообои купить в гомеле

Богатый ассортимент фотообоев. Продажа. Оцените предложения

prodekor.by


доставка грузов из Европы информация на сайте

brokercustom.com


Поддержи сайт
Скрипты, cms, шаблоны, статьи по раскрутке

Опросы

Как часто вы бываете на сайте?

Захожу 1-2 раза в день
1-2 часа в сутки
Более 2 часов
Почти целый день тут smile

Архив новостей
Январь 2017 (6)
Декабрь 2016 (16)
Ноябрь 2016 (9)
Октябрь 2016 (10)
Сентябрь 2016 (8)
Август 2016 (11)

Последние комментарии:

Искать людей

Ваши переписки