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

Ссылка на картинку в fullstory.tpl


     01.07.2012    картинка, полная новость    Все вопросы » Общие вопросы по PHP    7046

вопрос
Есть задача - создать отдельный тег {image} - либо любой другой, не критично, который бы выдавал прямую ссылку на первую картинку (она всегда одна) в новости.
Попытки вставить код в show.full.php не дали нужного результата
$db->query( "SELECT 'images' FROM dle_images where news_id= '{$row['id']}'" );
$image = $db->get_row ();
$tpl->set('{image}', $image['images']);

По идее, код должен лезть в таблицу "_images" и брать оттуда прямую ссылку на полную картинку (тег {image-1} не подходит, поскольку дает ссылку на уменьшенную картинку из краткой новости). Но в данной реализации выводится только слово images. Подскажите, в чем ошибка? Спасибо

Ответил: Sander


Попробуйте так:
$image = $db->super_query("SELECT images FROM ".PREFIX."_images WHERE news_id='{$row['id']}'");
$tpl->set('{image}', $image['images']);

Но картинка должна быть обязательна залита на ваш сервер.

32 комментария

OKyJIucT
Юзер

OKyJIucT - 1 июля 2012 11:32 -

Проблема решена, код рабочий, надо было только вставить его после
$tpl->set( '{comments}', "<!--dlecomments-->" );
$tpl->set( '{addcomments}', "<!--dleaddcomments-->" );
$tpl->set( '{navigation}', "<!--dlenavigationcomments-->" );

Yamakasi
Юзер

Yamakasi - 13 августа 2012 17:33 -

можно полный пример? так как нужно реализовать получение картинки в полной новости её полный путь!

OKyJIucT
Юзер

OKyJIucT - 13 августа 2012 17:37 -

Yamakasi,

В файле show.full.php после

$tpl->set( '{navigation}', "<!--dlenavigationcomments-->" );

вставил

$db->query( "SELECT images FROM dle_images WHERE news_id = '{$row['id']}'" );
$image = $db->get_row ();
$tpl->set('{image}', $image['images']);

В нужном месте файла fullstory.tpl добавил

<img src="http://site.ru/uploads/posts/{image}">

Yamakasi
Юзер

Yamakasi - 13 августа 2012 17:57 -

как сделать по примеру:_skripters.biz/main/6951-vyvod-kartinki-tegom-v.5.html
но также и по примеру работы блока от _blockpro.ru
то есть вывод в полной новости изображения по тегу, на дле 9,5
для чего нужно ))) реализую хак поделится ссылкой, но у меня как бы там демы публикуются, и хочется сделать, чтобы не только ссылкой, но и тегом изображение делало уже готовый код, который юзер смог скопировать и вставить его ))) думаю, кто понял, тот понял!

OKyJIucT
Юзер

OKyJIucT - 13 августа 2012 18:01 -

Я это сделал так

<input onclick="select( this );" type="HTML" style="width:409px;color:#666666;" value='<a href="{full-link}"><img src={image-1} width="300" alt="site.ru - обои на рабочий стол" border="0"></a>'>

Результат этого кода - форма, в которой прописан код. При клике на форму весь код выделяется, и остается только его скопировать. При вставке на любую страницу будет отображаться миниатюра (в данном случае, уменьшенная картинка), клик по которой приведет пользователя на ваш сайт. Результат можно посмотреть тут http://hd-pics.ru/hi-tech/65-debian-orange-linux.html

Yamakasi
Юзер

Yamakasi - 13 августа 2012 18:02 -

а так проверил, в принципе Ваша реализация довольно не плохо справляется )))
получается к тегу ещё дописывать надо путь папки на сервере, но а если человек захочет делать хак и у него картинки будут не на сервере, а удалённые, тут ему обламись ((( Думаю всё токи надо дописать правильное описание данного хака для всех на дле 9,5

Yamakasi
Юзер

Yamakasi - 13 августа 2012 18:04 -

понял, буду сейчас фантазировать, а так мне как раз для этого и нужно ))) у нас с Вами одни мысли реализации ))

Yamakasi
Юзер

Yamakasi - 13 августа 2012 18:11 -

Цитата: Yamakasi
Я это сделал так

<input onclick="select( this );" type="HTML" style="width:409px;color:#666666;" value='<a href="{full-link}"><img src={image-1} width="300" alt="site.ru - обои на рабочий стол" border="0"></a>'>

Так Вы пишите так сделали, но на 9,5 это нужно реализовать с помощью хака, Ваш выше хак который Вы дали:
В файле show.full.php после 

$tpl->set( '{navigation}', "<!--dlenavigationcomments-->" );

вставил

$db->query( "SELECT images FROM dle_images WHERE news_id = '{$row['id']}'" );
$image = $db->get_row ();
$tpl->set('{image}', $image['images']);

В нужном месте файла fullstory.tpl добавил

<img src="http://site.ru/uploads/posts/{image}">

Он не принимает тег {image-1}
Что скажите?

OKyJIucT
Юзер

OKyJIucT - 13 августа 2012 18:17 -

У меня версия 9.6, возможно в вашей версии необходимо вставлять вышеуказанный код в файл show.full.php в другом месте.
Я лично использую в коде для блога тег {image-1}, а хак для ссылки на полную картинку я использую для другой цели:)

Yamakasi
Юзер

Yamakasi - 13 августа 2012 18:29 -

в 9,5 работает Ваш тот первый:
В файле show.full.php после 

$tpl->set( '{navigation}', "<!--dlenavigationcomments-->" );

вставил

$db->query( "SELECT images FROM dle_images WHERE news_id = '{$row['id']}'" );
$image = $db->get_row ();
$tpl->set('{image}', $image['images']);

В нужном месте файла fullstory.tpl добавил

<img src="http://site.ru/uploads/posts/В файле show.full.php после

$tpl->set( '{navigation}', "<!--dlenavigationcomments-->" );

вставил

$db->query( "SELECT images FROM dle_images WHERE news_id = '{$row['id']}'" );
$image = $db->get_row ();
$tpl->set('{image}', $image['images']);

В нужном месте файла fullstory.tpl добавил

<img src="http://site.ru/uploads/posts/{image}">">

А тегом {image-х} я думаю надо другие действия с бубном делать, тут я думаю кто с кодом знаком сможет помочь ))
Хотя Ваш хак у меня работает и он мне сойдёт, так как все картинки у меня на сервере, но кто захочет себе реализовать и картинки если у него удалённые, то ему будет жопа в данном коде ))

Yamakasi
Юзер

Yamakasi - 13 августа 2012 19:04 -

не стал в новой ветке создавать вопрос, решил тут спросить, как сделать так, чтобы при написании и выдачи html ссылки изображения скрипт не кушал начальный путь!
Вот пример: _ttp://dem.uz/393-tyuning-klavy.html тут хака
А вот пример о чём я говорю:
<a href="http://dem.uz/393-tyuning-klavy.html" title="Тюнинг Клавы..."><img src="/uploads/posts/2012-07/1342018986_Tyuning-Klavy..._dem.uz.jpg" alt="Тюнинг Клавы..." title="Тюнинг Клавы..." /></a>

то есть где src="/uploads/posts/2012-07/1342018986_Tyuning-Klavy..._dem.uz.jpg" вначале двиг кушает путь и обрезает, как убрать эту фигню )))

OKyJIucT
Юзер

OKyJIucT - 13 августа 2012 19:10 -

Yamakasi, тже с этим сталкивался. Пиши

это
<img src={image} />

вместо

<img src="{image}" />

То есть без кавычек {image}. Мне это помогло, хотя понятия не имею почему так работает :)

Yamakasi
Юзер

Yamakasi - 13 августа 2012 19:15 -

OKyJIucT,
так это же нарушение, и так изображение работать не будет!

OKyJIucT
Юзер

OKyJIucT - 13 августа 2012 19:18 -

да ну? Почему же оно тогда у меня работает? wink

Yamakasi
Юзер

Yamakasi - 13 августа 2012 19:39 -

OKyJIucT,
Ну коль Вы сами думаете так правильно, значит Вы ошибаетесь, так неправильно!

В общем я искал искал, и попробовал содержимое show.full.php страницы от 9,6 вставить целиком в 9,5, вроде работает сайт, но я конечно всё делаю на локалке, но не пробовал делать на сайте, так как думаю всё токи, что то повредит, но коль не знаю, если есть тут кто разбирается в коде, можете глянуть чем отличия кода в show.full.php от 9,5 от 9,6, разница есть, только не понятно где, ну или дать тот участок кода который нужно заменить в 9,5 и будет работать как я понял тег {image-х}
Так как при полной смене кода всё работает )))

OKyJIucT
Юзер

OKyJIucT - 13 августа 2012 20:02 -

Yamakasi, http://htmlbook.ru/samhtml/tegi/pravila-primeneniya-tegov - не использование кавычек не вызывает ошибок, если информация, заключенная в кавычки, не содержит пробелов.

А поскольку в данном случае без кавычек остается цельная строка без пробелов - URL, и без использования кавычек можно решить проблему - то я считаю это правильным.

Yamakasi
Юзер

Yamakasi - 13 августа 2012 20:18 -

Так вот сам нашёл отличия от 9,6 и 9,5
тем у кого 9,5, делаем так, чтобы работал тег {image-х}
В файле show.full.php найти:
$tpl->set( '{title}', $metatags['title'] );

после вставить:
/*хак имг*/
        
                $row['short_story'] = stripslashes($row['short_story']);
        $row['full_story'] = stripslashes($row['full_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'])) {
                    $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 );
    
        }
/*хак имг*/


Ну и всё, как бы тег будет работать ))) Это специально для 9,5, а насчёт хтмл обрезки ссылки в коде дом страницы, то есть режет начало, о чём мы с Окулистом ведём речь, этот баг остался, думаю решать только как он писал или найти за, что отвечает обрезка в скрипте!

Yamakasi
Юзер

Yamakasi - 13 августа 2012 20:26 -

Цитата: Yamakasi
То есть без кавычек {image}. Мне это помогло, хотя понятия не имею почему так работает :)

Так Вы попробуйте тот же например свой код с страницы: http://hd-pics.ru/hi-tech/65-debian-orange-linux.html взять и вставить например в новость и посмотрите покажет ли картинку или нет )))
Например я уже несколько вариантов опробовал и оно не показывает )))
а там речь идёт о кавычки одинарной и двойной!

Yamakasi
Юзер

Yamakasi - 13 августа 2012 20:31 -

OKyJIucT,
Так, в общем нашёл решение задачи как раз по понятие с хтмлбука )))
вот как раз вот так надо написать:
<a href="{full-link}" title="{title}"><img src='{image-1}' title={title}/></a>

То есть в изображение надо сделать одинарную кавычку и убрать пробел в конце и всё будет работать, вот пример: http://dem.uz/410-lezhachiy-policeyskiy.html
показан в строке HTML код на Демотиватор

Думаю тут и Вам я помог )))
Вот вместе и разобрались, а Ваши без кавычек это неправильно и не будет работать, я не профи но знаю!

Yamakasi
Юзер

Yamakasi - 13 августа 2012 20:45 -

а лучше сделать так:
<a href="{full-link}" title="{title}"><img src='{image-1}' /></a>
и всё будет путём я думаю, самый умный вариант!

OKyJIucT
Юзер

OKyJIucT - 13 августа 2012 22:09 -

Yamakasi,
согласен, при использовании тега textarea это оптимальный вариант:) Но я использую input, у меня такой вариант не пройдет:)

OKyJIucT
Юзер

OKyJIucT - 13 августа 2012 22:23 -

http://jsfiddle.net/sMDMT/ посмотрите, мой вариант без кавычек прекрасно работает, зря вы были так скептически настроены

ПафНутиЙ
Админ

ПафНутиЙ - 13 августа 2012 22:42 -

<!DOCTYPE html>
<html>

поэтому и работает.
ранние версии доктайпов такие вольности не позволяют.
Однако без кавычек лично я терпеть не могу - хрен разберёшься потом, особенно если опускают необязательные закрывающие теги типа LI и P как собствено и слеши < br / >
вот пример
<input type=text class=text value=tet>
<input type="text" class="text" value="text" />

вставляем в редактор с подсветкой синтаксиса и плюёмся....

Каков вопрос - таков и ответ. Просто помните об этом.

OKyJIucT
Юзер

OKyJIucT - 13 августа 2012 22:45 -

ПафНутиЙ, спасибо за подсказку:)
Я тоже предпочитаю все делать по правилам, однако в данном случае ничего лучше придумать не мог:) Можно использовать вариантЯмакаси с textarea, но мне не нравится возможность растягивать это поле:))

ПафНутиЙ
Админ

ПафНутиЙ - 13 августа 2012 22:48 -

ну да, ту как говорится, по месту подгонять надо... напильником)))

Каков вопрос - таков и ответ. Просто помните об этом.

Yamakasi
Юзер

Yamakasi - 13 августа 2012 22:57 -

OKyJIucT,
Дело в том, то что ты код предоставляешь кому? Юзерам правильно? для вставки в любой сайт! Жирным я не просто так написал!!!
А значит как тебе ПафНутиЙ уже указал почему у тебя пашет например, а у меня нет, да я думаю и много где не будет работать, я думаю тогда и нет смысла давать код для вставки, или я не прав?

Надо делать для простых людей, который скопировал и вставил и всё работает )))

OKyJIucT
Юзер

OKyJIucT - 13 августа 2012 23:02 -

Yamakasi, я не давал советы или рекомендации, как делать в твоем случаях, я написал "Я сделал так" и дал свою строку. Это была просто пища для размышлений.

Так что наезды тут не к месту, не умеешь пользоваться гуглом - это твои проблемы.

http://hd-pics.ru/test.html - вот страница, с таким же доктайпом, как на твоем сайте, плюс мой код и урл картинки без кавычек. О чудо - картинка отображается, и клик по ней срабатывает.

На своем сайте я также поменял доктайп, чтобы не было к чему придраться. Какие идеи насчет моего кода теперь?

Yamakasi
Юзер

Yamakasi - 13 августа 2012 23:06 -

OKyJIucT,
зачем так отрицательно относится к коментам, я не наехал, а написал с точки зрения как надо всё токи сделать и стремится, думаю знатоки поправят нас и покажут нужный след нам )))

Просто я сказал, о том, что если сайт делается для пользователей и дается код для вставки и его надо делать, так чтобы он вставлялся любое место, так как это Вам будет же трафик, а не пользователю правильно?

Вы что то путаете совет с наездом Уважаемый!

Yamakasi
Юзер

Yamakasi - 13 августа 2012 23:10 -

Цитата: Yamakasi
http://hd-pics.ru/test.html - вот страница, с таким же доктайпом, как на твоем сайте, плюс мой код и урл картинки без кавычек. О чудо - картинка отображается, и клик по ней срабатывает.

На своем сайте я также поменял доктайп, чтобы не было к чему придраться. Какие идеи насчет моего кода теперь?

хм... очаровательно и только, всё хорошо, самое главное, чтобы везде пахало как бы, просто что получалось о том и писал и не более...

Причём тут о коде и прочее, я не собираюсь ещё раз говорю выяснять с Вами отношение, Вы как то не адекватно относитесь к коментам, мы все вебмастера, кто то лучше знает, что то, кто то хуже, вот как раз спасибо данному проекту - МЫ делимся мнениями и реализациями!

Так что делает каждый как хочет, но а коменты и критику тоже надо уметь слушать, хотя я не критиковал Вас и Ваш сайт как бы...

Просто написал что получалось и не более....

OKyJIucT
Юзер

OKyJIucT - 13 августа 2012 23:15 -

Yamakasi, с этим спорить не буду, может и перегнул палку, за что извиняюсь. Но вы сами сказали, что код не работает у вас - я же воссоздал условия на вашем сайте, вставил туда свой код, и он заработал.

Вывод напрашивается сам собой - проблема не в коде. А если проблема не в нем, то к чему критика? smile Думаю нет смысла разводить тут холивары, если будут предложения или вопросы - обращайтесь в личку, ася 118-ноль-116, чем смогу помогу.

ПафНутиЙ
Админ

ПафНутиЙ - 14 августа 2012 22:25 -

кстати проблема может быть и в самой ссылке на картинку, пробел в имени файла например.

Каков вопрос - таков и ответ. Просто помните об этом.

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

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

наверх