Данный материал предоставлен сайтом ProWebber.cc исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Скачать бесплатно Кнопка "В избранное" и раздел "Мои Закладки" - теперь доступный всем, в т.ч. и гостям.
Скачать бесплатно Кнопка "В избранное" и раздел "Мои Закладки" - теперь доступный всем, в т.ч. и гостям.
может быть не совсем хак, но и не мод точно, а расширение функционала,
теперь Кнопка "В избранное" и раздел "Мои Закладки" - доступный всем, в т.ч. и гостям,
для гостей работает на куках, если юзер имеет закладки, а незалогинен, то после того
как он залогинется закладки под гостем прибавятся к закладкам на аккаунте
тестировал на чистом дле 9.3 cp1251, шаблон Default
1.открываем
(примерно 49 строка) после:
добавить:
// 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. открываем
находим такие строки
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&doaction=add&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&doaction=del&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&doaction=add&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&doaction=del&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. открываем
(примерно 337 строка) после:
$tpl->set( '{all-pm}', $member_id['pm_all'] );
добавляем:
// start || избранное для гостей
$count_fav_news = ( $member_id['favorites'] !='' ) ? count(explode("," , $member_id['favorites'])) : ' ';
$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.открываем
и заменяем функцию
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. открываем файл:
(примерно 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"> </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"> </li>' );
// end || избранное для гостей
7.открываем файл:
(примерно 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.открываем файл:
(примерно 79 строка)ищем:
$list = explode( ",", $member_id['favorites'] );
заменить на:
// start || избранное для гостей
$list = ($is_logged) ? explode(",", $member_id['favorites']) : explode(',', $_COOKIE['fav_news']);
// end || избранное для гостей
9. в шаблонах
вынимаем
10. открываем файл:
(примерно 316 строка) ищем и удаляем строку:
'fav_error' => "Данный раздел доступен только зарегистрированным пользователям",
т.к. Данный раздел доступен абсолютно всем, и эта строка перевода нигде не используеться
Всё.
архив со всем необходимым
П.С.: если хочется увидеть в действии не прописывая ничего - в архиве есть все файлы с необходимыми прописями что-бы залить для установки на ЧИСТЫЙ движок.
теперь Кнопка "В избранное" и раздел "Мои Закладки" - доступный всем, в т.ч. и гостям,
для гостей работает на куках, если юзер имеет закладки, а незалогинен, то после того
как он залогинется закладки под гостем прибавятся к закладкам на аккаунте
тестировал на чистом дле 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]$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'] ) {
добавить:
// 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&doaction=add&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&doaction=del&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&doaction=add&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&doaction=del&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'])) : ' ';
$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"> </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"> </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
MD5: cf8f46d5bf147e02f90a4889207eaf2f
П.С.: если хочется увидеть в действии не прописывая ничего - в архиве есть все файлы с необходимыми прописями что-бы залить для установки на ЧИСТЫЙ движок.