Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Вывод количества изображений загруженных в новость

Вывод количества изображений загруженных в новость


     05.05.2014    Все вопросы » Общие вопросы по PHP    6084

вопрос
Всем привет!
Нашел такой вопрос, но ответа на него нет.
Хотелось бы найти ответ или если есть хак то ссылку.
Заранее спасибо.

Ответил: vitnet


Сообразил такой вот вариант

engine/engine.php
для нужных разделов добавить значение в SQL запрос: p.full_story
пример
$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}approve=1 AND allow_main=1" . $where_date . " ORDER BY " . $fixed . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];

для вывода в shrtstory.tpl
открыть engine/modules/show.short.php найти
            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]);
                
                Код пропущен

                $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 );
    
            }

добавить ниже (для фото)
            if( stripos ( $tpl->copy_template, "{count-image}" ) !== false ) {

                $images = array();
                preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $row['short_story'] . $row['full_story'], $media);
                $data = preg_replace('/(img|src)("|\'|="|=\')(.*)/i', "$3", array_unique($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) ) {
                    $tpl->copy_template = str_replace( '{count-image}', count( $images ), $tpl->copy_template );
                }

                $tpl->copy_template = preg_replace( "#\\{count-image\\}#i", "0", $tpl->copy_template );
            }

В шаблоне короткой новости выводить так: {count-image}

добавить ниже (для видео)
            if( stripos ( $tpl->copy_template, "{count-video}" ) !== false ) {

                preg_match_all('/<!--dle_media_begin:(.+?)-->/i',  $row['short_story'] . $row['full_story'], $media);
                $media = preg_replace('/<!--dle_media_begin:(.+?)-->/i', "$3", array_unique($media[0]));

                if( count($media) ) {
                    $tpl->copy_template = str_replace( '{count-video}', count( $media ), $tpl->copy_template );
                }

                $tpl->copy_template = preg_replace( "#\\{count-video\\}#i", "0", $tpl->copy_template );

            }

в шаблоне использовать тег: {count-video}

Готово!

PS: для полной новости проделать все по такому-же принципу

37 комментариев

vitnet
PHP-developer

vitnet - 5 мая 2014 00:13 -

Где-то я встречал код для этих целей, завтра сообразим

BAHO
Юзер

BAHO - 5 мая 2014 00:28 -

Спасибо! Жду с нетерпением :)

BAHO
Юзер

BAHO - 5 мая 2014 23:04 -

АП!!!

BAHO
Юзер

BAHO - 5 мая 2014 23:21 -

Класс!! спасибо буду пробовать!!!

BAHO
Юзер

BAHO - 6 мая 2014 00:17 -

Есть одна проблемка, выборка идет только из short_story :( а как вывести все загруженные в новость

BAHO
Юзер

BAHO - 6 мая 2014 00:36 -

как то можно сделать чтобы выводилось из full_story в short_story ?

vitnet
PHP-developer

vitnet - 6 мая 2014 20:27 -

Легко ;)
SQL
$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}approve=1 AND allow_main=1" . $where_date . " ORDER BY " . $fixed . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];

PHP
preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $row['short_story'] . $row['full_story'], $media);
$data = preg_replace('/(img|src)("|\'|="|=\')(.*)/i', "$3", array_unique($media[0]));

BAHO
Юзер

BAHO - 6 мая 2014 23:05 -

Что то не хочет((( выводит 0

vitnet
PHP-developer

vitnet - 6 мая 2014 23:38 -

Значит что то не так делаете

BAHO
Юзер

BAHO - 6 мая 2014 23:46 -

Ссори тупанул... Запрос то в engine.php вставляется)))
Огромное спасибо все работает!!!

shim
Юзер

shim - 9 мая 2014 17:11 -

подскажите, а как вывести количество видео из full_story в short_story ,то что добавлено тегом [media= ???

BAHO
Юзер

BAHO - 13 мая 2014 01:09 -

Вот как я сделал
                preg_match_all('/(embed|img|src)=("|\')[^"\'>|?]+/i', $row['full_story'], $media);
                $data = preg_replace('/(embed|img|src)("|\'|="|=\')(.*)/i', "$3", $media[0]);

                $video = array();
                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'] == 'swf') ) array_push($video, $url);
                    }
                }

                if ( count($video) ) {
                    $tpl->copy_template = str_replace( '{count}', "( ".count( $video )." видео )", $tpl->copy_template );
                }

shim
Юзер

shim - 13 мая 2014 11:07 -

чтот не работает, постоянно выводит 0.
с картинками все получилось, а вот с этим все плохо (
можно глянуть на ваш show.short.php ???

BAHO
Юзер

BAHO - 13 мая 2014 22:14 -

Залейте куда нибудь файл show.short.php

shim
Юзер

shim - 12 мая 2014 08:14 -

АП!!!

vitnet
PHP-developer

vitnet - 13 мая 2014 22:55 -

            if( stripos ( $tpl->copy_template, "{count-video}" ) !== false ) {

                preg_match_all('/<!--dle_media_begin:(.+?)-->/i',  $row['short_story'] . $row['full_story'], $media);
                $media = preg_replace('/<!--dle_media_begin:(.+?)-->/i', "$3", array_unique($media[0]));

                if( count($media) ) {
                    $tpl->copy_template = str_replace( '{count-video}', count( $media ), $tpl->copy_template );
                }

                $tpl->copy_template = preg_replace( "#\\{count-video\\}#i", "0", $tpl->copy_template );

            }

в шаблоне использовать тег {count-video}

shim
Юзер

shim - 13 мая 2014 23:41 -

ПРЕЛЕСТНО, ПРЕЛЕСТНО! огромное СПАСИБО!!

follor
Юзер

follor - 15 мая 2014 19:53 -

Друзья, с этим не совсем разобрался, что именно на этом этапе нужно сделать, выполнить sql запрос к базе данных? И для каких разделов добавлять значение p.full_story? Объясните подробнее пожалуйста.
engine/engine.php
для нужных разделов добавить значение в SQL запрос: p.full_story
пример
$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}approve=1 AND allow_main=1" . $where_date . " ORDER BY " . $fixed . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];

shim
Юзер

shim - 15 мая 2014 20:07 -

DLE 10.2
// ################ Новости на главной #################
тут много кода

                    if (isset ( $_SESSION['dle_sort_main'] )) $news_sort_by = $_SESSION['dle_sort_main'];
                    if (isset ( $_SESSION['dle_direction_main'] )) $news_direction_by = $_SESSION['dle_direction_main'];
                    
                    $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_users u ON (p.autor=u.name) LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}approve=1 AND allow_main=1" . $where_date . " ORDER BY " . $fixed . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];

// ################ Новости за год #################

follor
Юзер

follor - 20 мая 2014 21:41 -

А как настроить вывод количества фото не только в короткую и полную новость, но и ещё в блок для вывода новостей?

shim
Юзер

shim - 3 сентября 2014 13:41 -

engine/engine.php
для нужных разделов добавить значение в SQL запрос: p.full_story

если добавить значение в SQL запрос: p.full_story, то при включ. значении в админке
Скрывать ссылку на полную новость:
Скрывает ссылку на полную новость, если отсутствует полное описание

ссылки пропадают независимо есть в fullstory что нить или нет его там.
Как можно решить данную проблемку ???

vitnet
PHP-developer

vitnet - 3 сентября 2014 14:13 -

Открыть файл engine/modules/show.short.php

Найти
        if( ($row['full_story'] < 13) AND $config['hide_full_link'] ) $tpl->set_block( "'\\[full-link\\](.*?)\\[/full-link\\]'si", "" );

Заменить на
        if( (dle_strlen($row['full_story'], $config['charset']) < 13) AND $config['hide_full_link'] ) $tpl->set_block( "'\\[full-link\\](.*?)\\[/full-link\\]'si", "" );

shim
Юзер

shim - 3 сентября 2014 14:32 -

Огромное спасибо

shim
Юзер

shim - 11 июля 2016 11:25 -

подскажите как скрывать тег {count-video} если его значение равно 0 (не было добавлено видео в новость)?

vitnet
PHP-developer

vitnet - 11 июля 2016 18:34 -

удалите 0

shim
Юзер

shim - 31 июля 2016 16:10 -

я неправильно задал вопрос
в шаблон я вставляю отображение видео и фото
<span class="fovid">({count}&nbsp;фото&nbsp;+&nbsp;{count-video}&nbsp;видео)</span>

в результате если фото есть отображает 2 фото,а если нет то выводит 0 фото
как бы все это добавить в код из ответа?
чтоб если фото в новости есть отображало к примеру "2 фото",а если нет то ничего не выводило.

evenegrad
Юзер

evenegrad - 11 февраля 2015 01:12 -

Люди подскажите, а в каком файле нужно внести правки, да бы сие количество вывести и в результатах поиска?

evenegrad
Юзер

evenegrad - 11 февраля 2015 01:23 -

нашел :) Изменения нужно внести в show-custom

follor
Юзер

follor - 23 марта 2015 18:35 -

На 10.4 не хочет выводить количество фото из fullstory в shortstory, показывает только из shortstory

follor
Юзер

follor - 2 мая 2015 18:06 -

Как вывести количество из fullstory в custom?

vadim762
Юзер

vadim762 - 9 февраля 2016 18:48 -

Товарищи дорогие ! Как же все таки вывести количество фото из fullstory в shortstory.
DLE 10.6 ?

Dean215
Юзер

Dean215 - 25 марта 2016 03:26 -

Скажите пожалуйста, как вывести в поиске? show.custom.php правил - выводится 1. С остальным проблем нет.
DLE 11.

Nigativ
Юзер

Nigativ - 18 апреля 2016 20:41 -

Скажите пожалуйста. Наткнулся на проблему. Вывод количества фото в короткой новости у меня зависит от редактора, которым создаю новости. При использовании стандартного BBCODES - количество выводится, а при использовании WYSIWYG редакторов - нет(выводит 1). В полной новости все в порядке.

Вот код, который создается при выводе стандартным редактором -
<img src="/uploads/posts/2016-04/1460997152_15.jpg" style="float:left;" alt="Test" title="Test">

А вот редактор TYNIMCE(он предпочтительнее в использовании) -
<p><img style="float: left;" src="http://мойсайт.ru/uploads/posts/2016-04/1460998565_5.jpg" alt=""><br>

В програмировании не силен, но думаю проблема в регулярке. Но что туда писать не знаю.
DLE 10.5. Локалка

shim
Юзер

shim - 11 июля 2016 20:07 -

В DLE 11.1 Добавлен новый тип для дополнительных полей публикаций: "Загружаемая галерея изображений".
Как можно подсчитать количество загруженных картинок в галерею?
В идеале было бы не плохо,что бы количество картинок из галереи добавлялось к количеству картинок добавленных в fullstory и выводило общее значение.

shim
Юзер

shim - 19 ноября 2017 19:26 -

Помогите адаптировать под DLE 12.0

shim
Юзер

shim - 14 ноября 2018 00:04 -

Помогите адаптировать под DLE 13.1

never3d222
Юзер

never3d222 - 24 апреля 2020 21:39 -

Плюсую, как вывести в ДЛЕ 13.1

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх