Хак Маленькая доработка topnews

Тема в разделе "DLE", создана пользователем sergeus, 21 дек 2006.

Информация :
Актуальная версия DataLife Engine 11.1
( Final Release v.11.1 | Скачать DataLife Engine | Скачать 11.1 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 10.0 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. sergeus

    sergeus

    Регистр.:
    15 апр 2006
    Сообщения:
    185
    Симпатии:
    34
    После доработки при подведении мыши к новости будет выводиться заголовок длинною в 200 символов.

    Файл engine\modules\topnews.php

    исходный код
    PHP:
     $go_page = ($config['ajax']) ? "onclick=\"DlePage('newsid=".$row['id']."'); return false;\" " "";
     if (
    $config['allow_alt_url'] == "yes")
            
    $link "<a {$go_page}href=\"".$config['http_home_url'].date('Y/m/d/'$row['date']).$row['alt_name'].".html\">".stripslashes($title)."</a>";
     else 
            
    $link "<a {$go_page}href=\"$PHP_SELF?newsid=".$row['id']."\">".stripslashes($title)."</a>";
    меняем на
    PHP:
    $mmm=substr ($row['title'], 0200);
     
    $mmm str_replace("'","`",str_replace('"',"`",$mmm));
     
    $go_page = ($config['ajax']) ? "onclick=\"DlePage('newsid=".$row['id']."'); return false;\" " "";
     if (
    $config['allow_alt_url'] == "yes")
            
    $link "<a onMouseover=\"showhint('".$mmm."', this, event, '100px')\" {$go_page}href=\"".$config['http_home_url'].date('Y/m/d/'$row['date']).$row['alt_name'].".html\">".stripslashes($title)."</a>";
     else 
            
    $link "<a onMouseover=\"showhint('".$mmm."', this, event, '100px')\" {$go_page}href=\"$PHP_SELF?newsid=".$row['id']."  \">".stripslashes($title)."</a>";
    Пример http://www.olimp-sport.com - последние новости
     
    yura, Dali и m1kola нравится это.
  2. m1kola

    m1kola

    Регистр.:
    13 дек 2006
    Сообщения:
    221
    Симпатии:
    55
    О! Спасибо огромное! сделал! хорошая вещь... только как сделать что бы окно появлялось не с права от курсора а слева? Т.к у блок стоит в правой колонке (левой вообще нет :) ) и не видно нечего :(
     
  3. sergeus

    sergeus

    Регистр.:
    15 апр 2006
    Сообщения:
    185
    Симпатии:
    34
    Дай ссылку, я посмотрю...
     
  4. m1kola

    m1kola

    Регистр.:
    13 дек 2006
    Сообщения:
    221
    Симпатии:
    55
    Отправил в личку.
     
  5. sergeus

    sergeus

    Регистр.:
    15 апр 2006
    Сообщения:
    185
    Симпатии:
    34
    Новый, доработанный вариант

    код всего файла (оригинал рекомендую сохранить) :)
    PHP:
    <?php
    if(!defined('DATALIFEENGINE'))
    {
      die(
    "Hacking attempt!");
    }
     
    $topnews dle_cache("topnews"$config['skin']);
    if (!
    $topnews) {
     
    $this_month date ('Y-m-d'time()-(3600*24*30));
     
    $sql_result $db->query("SELECT id, title, date, alt_name FROM " PREFIX "_post WHERE approve='1' AND DATE_FORMAT(date,'%Y-%m-%d') > '$this_month' ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,10");
    $topnews "<table width=100%>\r\n";
     while(
    $row $db->get_row($sql_result)){
     
     
    $row['date'] = strtotime($row['date']);
     
     if (
    strlen($row['title']) > 21)
     
    $title substr ($row['title'], 021)." ...";
     else
     
    $title $row['title'];
      
     
    $mmm=substr ($row['title'], 0200);
     
    $mmm str_replace("'","`",str_replace('"',"`",$mmm));
     
    $go_page = ($config['ajax']) ? "onclick=\"DlePage('newsid=".$row['id']."'); return false;\" " "";
     
    $go_hint "onMouseover=\"showhint('{$mmm}', this, event, '150px')\"";
     
     if (
    $config['allow_alt_url'] == "yes")
            
    $link "<a {$go_hint} {$go_page}href=\"".$config['http_home_url'].date('Y/m/d/'$row['date']).$row['alt_name'].".html\">".stripslashes($title)."</a>";
     else 
            
    $link "<a {$go_hint} {$go_page} href=\"$PHP_SELF?newsid=".$row['id']."\"><font color=#3B84D0>".stripslashes($title)."</font></a>";
      
       
     
    $topnews .= "<tr><td style=\"height:20px;border-bottom: 1px solid #eaeaea; \"><li>$link</li></td></tr>";
     
      }
     
    $topnews .= "</table>";
     
    create_cache ("topnews"$topnews$config['skin']);
     }
    ?>
    У меня все работат, но кто знает.....
     
  6. m1kola

    m1kola

    Регистр.:
    13 дек 2006
    Сообщения:
    221
    Симпатии:
    55
    У меня всёравно... как было так и осталось... ну конечно (кашу удалил) добавились строки как в "последние новости" (отдельное спасибо :) ), но окно всёравно справа... Даже пробовал отключить вообще кеширование :) сёравно :(
     
  7. sergeus

    sergeus

    Регистр.:
    15 апр 2006
    Сообщения:
    185
    Симпатии:
    34
    Тогда пробуем сделать следующее:
    в файле engine\modules\online.php
    находим код
    PHP:
    #Составление списка пользователей
       
    $online_utable=getscript()."<table cellpaddong=0 cellspacing=0 class={$onl_options['tableclass']}><tr>";
    и меняем его на
    PHP:
    #Составление списка пользователей
       
    $online_utable="<table cellpaddong=0 cellspacing=0 class={$onl_options['tableclass']}><tr>";
    Весь вопрос в выводе css. если изменить вывод, то и в админке подсказки будут вылазить полевому.

    Отпишись.

    Как рекомендация: уменьши количество новостей на главной до 7-8.... либо уменьши картинки при загрузке....
     
  8. m1kola

    m1kola

    Регистр.:
    13 дек 2006
    Сообщения:
    221
    Симпатии:
    55
    А блин... фиг вам.. нету у меня такого :(
    и что то не понял.. причём тут engine\modules\online.php ?
    тем более, что он у меня выключен ;)
     
  9. sergeus

    sergeus

    Регистр.:
    15 апр 2006
    Сообщения:
    185
    Симпатии:
    34
    Значисся, если кто сталкивался - вывод подсказки в строго отведенном месте

    Ввывод подсказки в строго отведенном месте:

    находим файл engine\skins\default.js

    находим код
    PHP:
    function showhint(menucontentsobjetipwidth){
    if ((
    ie||ns6) && document.getElementById("hintbox")){
    dropmenuobj=document.getElementById("hintbox")
    dropmenuobj.innerHTML=menucontents
    dropmenuobj
    .style.left=dropmenuobj.style.top=-500
    if (tipwidth!=""){
    dropmenuobj.widthobj=dropmenuobj.style
    dropmenuobj
    .widthobj.width=tipwidth
    }
    dropmenuobj.x=getposOffset(obj"left")
    dropmenuobj.y=getposOffset(obj"top")
    dropmenuobj.style.left=dropmenuobj.x//-clearbrowseredge(obj, "rightedge")+obj.offsetWidth+"px"
    dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj"bottomedge")+"px"
    dropmenuobj.style.visibility="visible"
    obj.onmouseout=hidetip
    }
    }
    Там вставляем 2 слеша после "dropmenuobj.style.left=dropmenuobj.x" (выделено красным)
    Сохраняем файл :D
    открываем templates\Default\css\style.css
    и если отсутствует добавляем, а если присутствует изменяем на
    PHP:
    #hintbox {
     
    position:absolute;top0;
     
    background-color#ffffff;
     
    width170pxpadding5px;
     
    border:1px solid #778899;
     
    font:normal 11px Verdana;
     
     
    margin-left:-170px;
     
     
    opacity0.94;     
     
    FILTERalpha(opacity="100");   
     
    line-height:15px;  z-index:100;
     
    visibilityhidden;
                
    border-collapseseparate;
    }
    Строчка выделенная красным - регулировка вывада по горизонтали от правого края.

    Смотрим, пробуем, отписываемся.... :read:
     
    m1kola нравится это.
  10. m1kola

    m1kola

    Регистр.:
    13 дек 2006
    Сообщения:
    221
    Симпатии:
    55
    О! всё ок :) спасибА!
     
Статус темы:
Закрыта.