Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Вывод количества изображений загруженных в новость

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


     05.05.2014    Общие вопросы по PHP    3347

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

Ответил: 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: для полной новости проделать все по такому-же принципу

Комментарии пользователей (34)

vitnet
218

2174 | 930

vitnet - 5 мая 2014 00:13 - Эксперт

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

BAHO
48

171 | 54

BAHO - 5 мая 2014 00:28 - Юзер

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

BAHO
48

171 | 54

BAHO - 5 мая 2014 23:04 - Юзер

АП!!!

BAHO
48

171 | 54

BAHO - 5 мая 2014 23:21 - Юзер

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

BAHO
48

171 | 54

BAHO - 6 мая 2014 00:17 - Юзер

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

BAHO
48

171 | 54

BAHO - 6 мая 2014 00:36 - Юзер

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

vitnet
218

2174 | 930

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
48

171 | 54

BAHO - 6 мая 2014 23:05 - Юзер

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

vitnet
218

2174 | 930

vitnet - 6 мая 2014 23:38 - Эксперт

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

BAHO
48

171 | 54

BAHO - 6 мая 2014 23:46 - Юзер

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

shim
68 | 28

shim - 9 мая 2014 17:11 - Юзер

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

BAHO
48

171 | 54

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
68 | 28

shim - 13 мая 2014 11:07 - Юзер

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

BAHO
48

171 | 54

BAHO - 13 мая 2014 22:14 - Юзер

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

shim
68 | 28

shim - 12 мая 2014 08:14 - Юзер

АП!!!

vitnet
218

2174 | 930

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
68 | 28

shim - 13 мая 2014 23:41 - Юзер

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

follor
1

243 | 10

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
68 | 28

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
1

243 | 10

follor - 20 мая 2014 21:41 - Юзер

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

shim
68 | 28

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

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

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

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

vitnet
218

2174 | 930

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
68 | 28

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

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

shim
68 | 28

shim - 11 июля 2016 11:25 - Юзер

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

vitnet
218

2174 | 930

vitnet - 11 июля 2016 18:34 - Эксперт

удалите 0

shim
68 | 28

shim - 31 июля 2016 16:10 - Юзер

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

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

evenegrad
1

27 | 1

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

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

evenegrad
1

27 | 1

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

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

follor
1

243 | 10

follor - 23 марта 2015 18:35 - Юзер

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

follor
1

243 | 10

follor - 2 мая 2015 18:06 - Юзер

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

vadim762
1

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

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

Dean215
2

Dean215 - 25 марта 2016 03:26 - Юзер

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

Nigativ
5 | 1

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
68 | 28

shim - 11 июля 2016 20:07 - Юзер

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

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

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