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

Модификация Topnews


     15.08.2011    Модули    4111

вопрос
Я решил модифицировать стандартный модуль топа новостей и у меня такая проблема: в общем я сделал что бы при наведении на новость появлялась картинка новости, но когда нет картинки у новости выводит саму новость, а то есть краткое описание.
Вот файлы которые я модифицировал.
Это в стили:
div#izo{
margin: 0 auto;
}
div.background{
position: relative;
}
div.info{
background:#ccc;
opacity:0.8;
height:150px;
width:110px;
position:absolute;
bottom:0;
right:-180px;
display:none;
padding:10px;
}
div.background:hover div.info{
display: block;
}


вот сам файд topnews:
topnews.rar [920 b] (cкачиваний: 79)

Мне нужно будет сделать, что бы когда картинка отсутствует выводилась картинка noavatar.png

Заранее спасибо ! :)

Ответил: white-master


Как то вот так:
<?php
if (!defined('DATALIFEENGINE')) {
  die("Hacking attempt!");
}
$topnews = dle_cache("topnews", $config['skin']);
if ($topnews === false) {
  $this_month = date('Y-m-d H:i:s', $_TIME);
  $db->query("SELECT id, title, date, category, short_story, flag FROM " . PREFIX . "_post WHERE approve='1' ORDER BY date DESC LIMIT 20");
  while ($row = $db->get_row()) {
    $row['date'] = strtotime($row['date']);
    $row['category'] = intval($row['category']);
    if ($config['allow_alt_url'] == "yes") {
      if ($row['flag'] and $config['seo_type']) {
        if ($row['category'] and $config['seo_type'] == 2) {
          $full_link = $config['http_home_url'] . get_url($row['category']) . "/" . $row['id'] . "-" . ".html";
        } else {
          $full_link = $config['http_home_url'] . $row['id'] . "-" . ".html";
        }
      } else {
        $full_link = $config['http_home_url'] . date('Y/m/d/', $row['date']) . ".html";
      }
    } else {
      $full_link = $config['http_home_url'] . "index.php?newsid=" . $row['id'];
    }
    preg_match_all('/<img.+src=[\'"
]([^\'"]+)[\'"].*>/i', $row['short_story'], $matches);
    $row['short_story'] = $matches[1][0] = $matches[1][0] ? $matches[1][0] : 'http://www.google.ru/images/srpr/logo3w.png';
    if (dle_strlen($row['title'], $config['charset']) > 55)
      $title = dle_substr($row['title'], 0, 55, $config['charset']) . " ...";
    else
      $title = $row['title'];
    $link = "<div id=\"izo\"><div class=\"background\"><a href=\"{image}\">" . stripslashes($title) . "</a><div class=\"info\"><img src=" . $row['short_story'] . " width=\"110\" height=\"150\"></div></div></div>";
    $topnews .= "<li>" . $link . "<li>";
  }
  $db->free();
  create_cache("topnews", $topnews, $config['skin']);
}

?>

Думаю ясно что и как, лого гугла это картинка в случае если не будет в новости найдено изображения.

preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $row['short_story'], $matches);

Ищем картинки, если есть совпадения по шаблону, то помещаем их в matches.
$row['short_story'] = $matches[1][0] = $matches[1][0] ? $matches[1][0] : 'http://www.google.ru/images/srpr/logo3w.png';

Проверяем есть ли картинка в тексте новости, если нету то лого гугла, тот же самый if только форма записи короткая.

Что не понятно спрашивайте, отвечу.

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

ПафНутиЙ
1065

3396 | 2434

ПафНутиЙ - 15 августа 2011 22:34 - Админ

К чему модифицировать скрипт, если есть готовое решение: Расширенный топ новостей

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

kronon
1

57 | 52

kronon - 15 августа 2011 22:49 - Юзер

а я хочу сделать свое, но не могу понять где я сделал ошибку ((((

white-master
2

18 | 16

white-master - 15 августа 2011 23:55 - Юзер

Окно ответа нельзя растянуть и нету загрузки файлов, неудобно recourse

kronon
1

57 | 52

kronon - 16 августа 2011 00:04 - Юзер

спасибо) утром проверю

ПафНутиЙ
1065

3396 | 2434

ПафНутиЙ - 16 августа 2011 06:15 - Админ

Это ограничение для обычных пользователей, т.к. в 90% случаев оно не требуется. Эксперты могут отвечать с админки, там всё что нужно есть )).

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

Kim
1

17 | 13

Kim - 16 августа 2011 14:14 - Юзер

Подскажите пожалуйста, какой параметр отвечает за расстояние между "топ-новостями"

Пример:

Лучшие машины

---------------------------------------------------- как уменьшить пробел между ними?

Самые красивые тачки

Kim
1

17 | 13

Kim - 16 августа 2011 15:01 - Юзер

И еще, сейчас: http://адрес сайта/3670-.html

А как сделать: http://адрес сайта/3670-ххх-ххх-ххх-2008-mkv-bdrip.html

Это отображается в браузере при наведении на любую "топ-новость"

С расстоянием разобрался:
1) $topnews .= "<li>" . $link . "<li>";

2) $topnews .= "" . $link . "";

Так-же height:150px; заменил на height:50% - была проблема с пропорциональным отображением картинок...

А вот с отображением адреса никак не получается...

Kim
1

17 | 13

Kim - 17 августа 2011 16:56 - Юзер

Все, с адресом разобрался... и что-бы я без Вашей помощи делал... wink

ПафНутиЙ
1065

3396 | 2434

ПафНутиЙ - 17 августа 2011 20:55 - Админ

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

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

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

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