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

Открытие полной новости по клику на картинку из короткой новости dle 9.2


     28.11.2012    картинка    Все вопросы » Общие вопросы    5744

вопрос
Здравствуйте, помогите пожалуйста!
На данный момент при нажатии на картинку из короткой новости, картинка просто увеличивается. А я хочу, чтобы при нажатии на картинку открывалась сама новость, а вот уже внутри этой новости всё оставалось как и раньше (т.е. при клике на картинку - она увеличивается). Сайт на DLE 9.2.
Я полный нуб, объясните подробно, пожалуйста, если можно. С меня кармическое Спасибо!

Ответа пока нет


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

Sander
PHP-developer

Sander - 28 ноября 2012 15:00 -

Я бы рекомендовал делать через javascript. Наиболее простой вариант...

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

BR0kEN
Эксперт

BR0kEN - 28 ноября 2012 15:11 -

<a href="{full-link}"><img src="{image-1}" alt="{title}" /></a>

Sander
PHP-developer

Sander - 28 ноября 2012 15:54 -

Сайт на DLE 9.2.

Это не для красоты написано...
{image-1} появился в 9.6 версии.

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

BR0kEN
Эксперт

BR0kEN - 28 ноября 2012 16:20 -

Не заметил версию DLE. Даже если и 9.2, то что мешает впихнуть кусок кода в show.full.php, show.short и show.custom.php?

Открыть /engine/modules/show.short.php, найти строку:
if ($smartphone_detected) {

и выше добавить:
            $row['short_story'] = stripslashes($row['short_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_count=0;
                    foreach($images as $url) {
                        $i_count++;
                        $tpl->copy_template = str_replace( '{image-'.$i_count.'}', $url, $tpl->copy_template );
                        $tpl->copy_template = str_replace( '[image-'.$i_count.']', "", $tpl->copy_template );
                        $tpl->copy_template = str_replace( '[/image-'.$i_count.']', "", $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 );
    
            }


Для show.full и show.custom повторить действия.


Цитата: bartelo
а это куда писать?

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

Sander
PHP-developer

Sander - 28 ноября 2012 16:27 -

Тогда и {short-story limit=200} надо...
Две одинаковые картинки в коротком описании как-то не очень красиво будет...
Хотя лучше будет наверно стилями скрыть img... но улетят все смайлы, которых в принципе можно вернуть js-ом :)

По-моему вариант на js как-то элегантнее...
$(function(){
$(".shortstory img[src*='uploads/posts/']").click(function(){
  window.location = $(this).parent('.shortstory_container').find('a').attr('href');
  return false;
});
})

shortstory и shortstory_container естественно заменить на свои.

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

bartelo
Юзер

bartelo - 28 ноября 2012 15:39 -

Цитата: BR0kEN
<a href="{full-link}"><img src="{image-1}" alt="{title}" /></a>

а это куда писать?

bartelo
Юзер

bartelo - 28 ноября 2012 17:13 -

Цитата: Sander
По-моему вариант на js как-то элегантнее...$(function(){ $(".shortstory img[src*='uploads/posts/']").click(function(){  window.location = $(this).parent('.shortstory_container').find('a').attr('href');  return false; });})shortstory и shortstory_container естественно заменить на свои.

Прошу простить мое незнание, но можно подробнее, куда это вписывается? Заменить на свое опять таки что? Очень прошу разъяснить пошагово, буду сильно благодарен.
И после этих действий и старые новости будут открываться по клику картинки в краткой новости?

Texty
Юзер

Texty - 28 ноября 2012 19:11 -

Если нет возможности вывести по типу {image-1}, ту думаю, доп.полем можно
[full-link][xfgiven_image]<img src="[xfvalue_image]" alt="{title}" />[/xfgiven_image][/full-link]
Где Image имя поля. В доп.поле просто класть ссылку на изображение, при нужде через css задать максимально возможный размер.

bartelo
Юзер

bartelo - 29 ноября 2012 09:34 -

Цитата: Texty
ту думаю, доп.полем можно

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

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

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

наверх