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

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


     28.11.2012    Общие вопросы    3714

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

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


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

Sander
1125

1637 | 1204

Sander - 28 ноября 2012 15:00 - Эксперт

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

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

ICQ: 404-037-556
Skype: Sander8804

BR0kEN
163

235 | 275

BR0kEN - 28 ноября 2012 15:11 - Эксперт

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

Sander
1125

1637 | 1204

Sander - 28 ноября 2012 15:54 - Эксперт

Сайт на DLE 9.2.

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

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

ICQ: 404-037-556
Skype: Sander8804

BR0kEN
163

235 | 275

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
1125

1637 | 1204

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 - мой блог.

ICQ: 404-037-556
Skype: Sander8804

bartelo
3 | 3

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

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

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

bartelo
3 | 3

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
1

22 | 25

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

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

bartelo
3 | 3

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

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

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

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

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