Мы в твиттере Мы в телеграме!

Провеббер » DataLife Engine » DLE хаки » Кнопка "В избранное" и раздел "Мои Закладки" - теперь доступный всем, в т.ч. и гостям

Набор в команду! Ведется набор в команду, для наполнения сайта новым, интересным контентом. Если у тебя есть предложения, свободное время, ты обладаешь интересным контентом, и хочешь поделиться с другими?
Обращайся к нам в ЛС группы Вконтакте.

Кнопка "В избранное" и раздел "Мои Закладки" - теперь доступный всем, в т.ч. и гостям

Данный материал предоставлен сайтом ProWebber.cc исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Скачать бесплатно Кнопка "В избранное" и раздел "Мои Закладки" - теперь доступный всем, в т.ч. и гостям.

может быть не совсем хак, но и не мод точно, а расширение функционала,
теперь Кнопка "В избранное" и раздел "Мои Закладки" - доступный всем, в т.ч. и гостям,
для гостей работает на куках, если юзер имеет закладки, а незалогинен, то после того
как он залогинется закладки под гостем прибавятся к закладкам на аккаунте

тестировал на чистом дле 9.3 cp1251, шаблон Default



1.открываем
\engine\modules\sitelogin.php


(примерно 49 строка) после:
    [code]
        $member_id = $db->super_query( "SELECT * FROM " . USERPREFIX . "_users where name='{$_POST['login_name']}' and password='" . md5( $_POST['login_password'] ) . "'" );
        
        if( $member_id['user_id'] ) {
    
[/code]

добавить:

            // start || избранное для гостей
            if(isset($_COOKIE['fav_news'])){
                $login_fav_news = explode(',',$member_id['favorites']);
                $cooki_fav_news = explode(',',$_COOKIE['fav_news']);
                
                
                $login_fav_news_res = array();
                foreach($cooki_fav_news as $val){
                    if(!in_array($val, $login_fav_news)) $login_fav_news_res[] = $val;
                }
                
                $member_id['favorites'] = implode(',', $login_fav_news);
                
                $db->query( "UPDATE " . USERPREFIX . "_users set favorites='{$member_id['favorites']}' WHERE user_id='{$member_id[user_id]}'" );
                
                set_cookie( "fav_news", '', 0 );
            }        
            // end || избранное для гостей


2. открываем
\engine\modules\show.short.php, \engine\modules\show.full.php, \engine\modules\show.custom.php


находим такие строки

if( $is_logged ) {
        
        $fav_arr = explode( ',', $member_id['favorites'] );
            
        if( ! in_array( $row['id'], $fav_arr ) or $config['allow_cache'] == "yes" ) $tpl->set( '{favorites}', "<a id=\"fav-id-" . $row['id'] . "\" href=\"$PHP_SELF?do=favorites&amp;doaction=add&amp;id=" . $row['id'] . "\"><img src=\"" . $config['http_home_url'] . "templates/{$config['skin']}/dleimages/plus_fav.gif\" onclick=\"doFavorites('" . $row['id'] . "', 'plus'); return false;\" title=\"" . $lang['news_addfav'] . "\" style=\"vertical-align: middle;border: none;\" alt=\"\" /></a>" );
        else $tpl->set( '{favorites}', "<a id=\"fav-id-" . $row['id'] . "\" href=\"$PHP_SELF?do=favorites&amp;doaction=del&amp;id=" . $row['id'] . "\"><img src=\"" . $config['http_home_url'] . "templates/{$config['skin']}/dleimages/minus_fav.gif\" onclick=\"doFavorites('" . $row['id'] . "', 'minus'); return false;\" title=\"" . $lang['news_minfav'] . "\" style=\"vertical-align: middle;border: none;\" alt=\"\" /></a>" );

        $tpl->set( '[complaint]', "<a href=\"javascript:AddComplaint('" . $row['id'] . "', 'news')\">" );
        $tpl->set( '[/complaint]', "</a>" );
    
    } else {
        $tpl->set( '{favorites}', "" );
        $tpl->set_block( "'\\[complaint\\](.*?)\\[/complaint\\]'si", "" );
    }


и меняем их на:


        // start || избранное для гостей
        if( $is_logged ) {
            
            $fav_arr = explode( ',', $member_id['favorites'] );
            
            $tpl->set( '[complaint]', "<a href=\"javascript:AddComplaint('" . $row['id'] . "', 'news')\">" );
            $tpl->set( '[/complaint]', "</a>" );
        
        } else {
            
            $fav_arr = explode( ',', $_COOKIE['fav_news'] );
            
            $tpl->set_block( "'\\[complaint\\](.*?)\\[/complaint\\]'si", "" );
        }        
        
            if( ! in_array( $row['id'], $fav_arr ) or $config['allow_cache'] == "yes" ) $tpl->set( '{favorites}', "<a id=\"fav-id-" . $row['id'] . "\" href=\"$PHP_SELF?do=favorites&amp;doaction=add&amp;id=" . $row['id'] . "\"><img src=\"" . $config['http_home_url'] . "templates/{$config['skin']}/dleimages/plus_fav.gif\" onclick=\"doFavorites('" . $row['id'] . "', 'plus'); return false;\" title=\"" . $lang['news_addfav'] . "\" style=\"vertical-align: middle;border: none;\" alt=\"\" /></a>" );
            else $tpl->set( '{favorites}', "<a id=\"fav-id-" . $row['id'] . "\" href=\"$PHP_SELF?do=favorites&amp;doaction=del&amp;id=" . $row['id'] . "\"><img src=\"" . $config['http_home_url'] . "templates/{$config['skin']}/dleimages/minus_fav.gif\" onclick=\"doFavorites('" . $row['id'] . "', 'minus'); return false;\" title=\"" . $lang['news_minfav'] . "\" style=\"vertical-align: middle;border: none;\" alt=\"\" /></a>" );
        // end || избранное для гостей


3. открываем
\engine\init.php

(примерно 337 строка) после:

$tpl->set( '{all-pm}', $member_id['pm_all'] );

добавляем:

            // start || избранное для гостей
            $count_fav_news = ( $member_id['favorites'] !='' ) ?  count(explode("," , $member_id['favorites'])) : '&nbsp;';
            $tpl->set( '{favorite-count}',   ' <span id="count_fav_news">'. $count_fav_news .'</span>'  );    
            // end || избранное для гостей
            


тутже (строка примерно 347) удаляем за ненадобностью строки:

if ($member_id['favorites']) {
    $tpl->set( '{favorite-count}', count(explode("," ,$member_id['favorites'])) );
}
else $tpl->set( '{favorite-count}', '0' );




4.открываем
\engine\classes\js\dle_js.js


и заменяем функцию

function doFavorites(a,b){ShowLoading("");$.get(dle_root+"engine/ajax/favorites.php",{fav_id:a,action:b,skin:dle_skin},function(b){HideLoading("");$("#fav-id-"+a).html(b)});return!1}

на


function doFavorites( id, event )
{
    ShowLoading('');

    $.post(dle_root +"engine/ajax/fav.php", { id: id, action: event }, function(a){

        HideLoading('');
        
        $("#fav-id-" + id).html(a);
        
        $.post(dle_root +"engine/ajax/favlink.php", { id: id }, function(b){
            $('#favlink').html(b);
        });            
        
        $.post(dle_root +"engine/ajax/favcount.php", { id: id }, function(c){
            $("#count_fav_news").html(c);
        });
        
    });

    return false;
};


5. заливаем 3-а файла из архива:

\engine\ajax\fav.php
\engine\ajax\favcount.php
\engine\ajax\favlink.php


6. открываем файл:
index.php


(примерно 47 строка )и после:
[/code]
$tpl->set ( '{speedbar}', $tpl->result['speedbar'] );


добавить:

[code]
    // start || избранное для гостей
    if((!$is_logged && isset($_COOKIE['fav_news']) && $_COOKIE['fav_news']!='') || ($is_logged && $member_id['favorites']!='') ){
        
        $favnews_link = ($config['allow_alt_url'] == "yes") ? $config['http_home_url'].'favorites/' : $config['http_home_url'] . "index.php?do=favorites";
        
        $fav_count = ( $is_logged ) ? count(explode( ',', $member_id['favorites'] )) : count(explode( ',', $_COOKIE['fav_news'] ));
        
        $fav_count = ($fav_count >=1) ? ' <span id="favcontlink">'.$fav_count.'</span>' : '<span id="favcontlink">&nbsp;</span>';
        
        $tpl->set ( '{favnews-link}', '<li id="favlink"><a href="'. $favnews_link .'"><b>'. $lang['title_fav']. $fav_count .'</b></a></li>' );
    } else $tpl->set ( '{favnews-link}', '<li id="favlink">&nbsp;</li>' );
    // end || избранное для гостей



7.открываем файл:
/engine/engine.php

(примерно 84 строка) ищём:

    case "favorites" :
        if ($is_logged) {
            
            $config['allow_cache'] = false;
            
            include ENGINE_DIR . '/modules/favorites.php';
        
        } else
            msgbox ( $lang['all_err_1'], $lang['fav_error'] );
        break;


и меняем на:

    case "favorites" :
            
        $config['allow_cache'] = false;
            
        include ENGINE_DIR . '/modules/favorites.php';

        break;



8.открываем файл:
\engine\modules\favorites.php

(примерно 79 строка)ищем:

    $list = explode( ",", $member_id['favorites'] );


заменить на:

    // start || избранное для гостей
    $list = ($is_logged) ? explode(",", $member_id['favorites']) : explode(',', $_COOKIE['fav_news']);
    // end || избранное для гостей


9. в шаблонах
shortstory.tpl, fullstory.tpl


вынимаем
{favorites}
из тегов
[not-group=5] ... [/not-group]



10. открываем файл:
\language\Russian\website.lng

(примерно 316 строка) ищем и удаляем строку:


'fav_error'        =>    "Данный раздел доступен только зарегистрированным пользователям",


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


Всё.

архив со всем необходимым
favorites_files.rar [53.27 Kb] (cкачиваний: 178)
MD5: cf8f46d5bf147e02f90a4889207eaf2f


П.С.: если хочется увидеть в действии не прописывая ничего - в архиве есть все файлы с необходимыми прописями что-бы залить для установки на ЧИСТЫЙ движок.


Дополнительные ссылки на скачивание ТОЛЬКО для зарегистрированных


+2
Просмотры: 8 385 :: Комментарии (8) :: :: Нужна помощь? Задайте вопрос на форуме ::
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

#195Osman

  • 9 августа 2011 15:42
  • Регистрация: 3.02.2011
  • Был(а) онлайн: 26.06.2013
  • Комментариев: 44
  • 0
Ух до фига чего переделывать надо, Спасибо

#2dragonstyle

  • 9 августа 2011 21:05
  • Регистрация: 16.11.2010
  • Был(а) онлайн: 10.12.2012
  • Комментариев: 7
  • 0
если открыть гостям, можно будет и базу конкретно запороть.

#3rashpil

  • 9 августа 2011 22:05
  • Регистрация: 25.12.2009
  • Был(а) онлайн: 4.04.2016
  • Комментариев: 123
  • 0
dragonstyle, Это ещё почему? Если неавторизированный пользователь просмотрит какие у посетителя избранные статьи, это добавит +100500 запросов? А вот и нет! Нагрузка будет такой же, как и при просмотре избранных авторизированным пользователем. Рекомендую посмотреть код внимательно

#4westen

  • 10 августа 2011 00:35
  • Регистрация: 6.08.2011
  • Был(а) онлайн: 13.08.2011
  • Комментариев: 2
  • 0
dragonstyle,
ммм.... спс за критику...
добавил проверку куки...
все изменения в обновлённом архиве пункты 1, 8 и поправил пункт 3 (для лучшей ясности)

все файлы, изменения и описание в архиве

http://depositfiles.com/files/z4fs46zaz

кстати, тем кто скачал архив ранее:
в 1-м пункте описания я допустил опечатку,
файлы же в полном порядке...
поэтому настоятельно рекомендую скачать и установить
обновлённый архив и ознакомиться с обновлёным РИДМИ

#5SaD

  • 10 августа 2011 01:20
  • Регистрация: 23.02.2011
  • Был(а) онлайн: 8.01.2020
  • Комментариев: 498
  • 0
Очень полезная штука. Сам хотел такое сделать, но знания не позволяют. Большое спасибо.

--------------------

#6dragonstyle

  • 10 августа 2011 22:42
  • Регистрация: 16.11.2010
  • Был(а) онлайн: 10.12.2012
  • Комментариев: 7
  • 0
Цитата: rashpil
dragonstyle, Это ещё почему? Если неавторизированный пользователь просмотрит какие у посетителя избранные статьи, это добавит +100500 запросов? А вот и нет! Нагрузка будет такой же, как и при просмотре избранных авторизированным пользователем. Рекомендую посмотреть код внимательно


Ты не совсем понял, я имел виду множество добавлений, а не просмотра закладок.

#7westen

  • 11 августа 2011 12:22
  • Регистрация: 6.08.2011
  • Был(а) онлайн: 13.08.2011
  • Комментариев: 2
  • 0
Цитата: dragonstyle
... я имел виду множество добавлений, а не просмотра закладок.


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

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

#8dimaguru

  • 24 июля 2012 21:51
  • Регистрация: 19.02.2011
  • Был(а) онлайн: 24.07.2012
  • Комментариев: 3
  • +1
Сделал все как сказано в архиве, но чето не хочет добавлять в закладки. http://igrobazar.com/
Нажимаю добавить, вроде добавилось, но если обновить страницу, оказывается что ничего не добавилось. В чем проблема?

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Архив новостей
Ноябрь 2024 (9)
Октябрь 2024 (169)
Сентябрь 2024 (13)
Август 2024 (60)
Июль 2024 (12)
Июнь 2024 (30)

Последние комментарии: