Архив - только для чтения | |
Модератор форума: JonMagon |
Сообщество uCoz Модули uCoz Форум Функция "Избранные ссылки" на форуме (сохранение нужных тем в избранном) |
Функция "Избранные ссылки" на форуме |
Как правило на небольших форумах, где общение не кипит на столько бурно... найти какую-либо тему не составит труда... но форумы развиваются и становятся больше... для многих пользователей поиск интересных, а так же и просто своих любимых тем становится труднее... и в этом случае функция "Избранные ссылки" , а вернее ссылки на темы была бы весьма полезна... на ФТП уже несколько раз спрашивали об этом... теперь для тех кому нужно, выкладываю:
Сам скрипт (отдельным файлом) вставляем в head форума:
Code // ** bookmark functions var sepchar = "@"; var BMtotal = 10; var ShowCount = 0; var expDays = 30; var exp = new Date(); exp.setTime(exp.getTime() + (expDays*24*60*60*1000)); function GetTotalBookmarks() { var NumBookmarks = GetCookie('PT_NumBookmarks'); var i; var Bookmark; var count = 0; if (NumBookmarks == null) { NumBookmarks = 0; } for (i=1; i <= NumBookmarks ; i++) { Bookmark = GetCookie('PT_Bookmark'+i); if (Bookmark != null) { count++; } } if (count == 0) { return 0; } else { return 1; } } function ListBookmarks() { var NumBookmarks = GetCookie('PT_NumBookmarks'); var i; var Bookmark; if (NumBookmarks == null) { NumBookmarks = 0; } ShowCount = 0; SwapColour = 0; for (i=1; i <= NumBookmarks ; i++) { Bookmark = GetCookie('PT_Bookmark'+i); if (Bookmark != null) { PrintBookmark(Bookmark, i); } } } function DeleteBookmark(Count) { DeleteCookie('PT_Bookmark'+Count); window.location = window.location; } function PrintBookmark (Bookmark, Count) { var color = ""; var pairs = Bookmark.split(sepchar); pairs[0]= unescape(pairs[0]); pairs[1]= unescape(pairs[1]); pairs[2]= unescape(pairs[2]); var BMtitle = pairs[0]; var BMaddress = pairs[1]; var BMtitleFull = pairs[2]; ShowCount++; document.write("<tr><td width=90%><a class=m href='"+BMaddress+"' title='"+BMtitleFull+"'>"+BMtitle+"</a></td>"); document.write("<td><a href='javascript:DeleteBookmark(" + Count + ")' title='Удалить'><font color=red><b>X</b></font></a></td>"); document.write("</tr>"); } function AddBookmark(BMtitle, BMaddress) { var NumBookmarks = GetCookie('PT_NumBookmarks'); var i; var ToDoItem; var Bookmark; var OldestBookmark = 0; var CountBookmarks = 0; var new_title; var BMtitleFull; BMtitleFull = BMtitle; new_title = BMtitle.substring(0,19)+'..'; BMtitle = new_title; if (NumBookmarks == null) { NumBookmarks = 0;} // check if already exists, and count bookmarks for (i=1; i <= NumBookmarks ; i++) { Bookmark = GetCookie('PT_Bookmark'+i); if (Bookmark != null) { CountBookmarks++; if (OldestBookmark == 0) { OldestBookmark = i; } } if (Bookmark == BMtitle+sepchar+BMaddress+sepchar+BMtitleFull) { alert("Ссылка уже существует: "+BMtitleFull); return; } } // check if limit reached if (CountBookmarks > BMtotal) { DeleteBookmark(OldestBookmark); } // now add it NumBookmarks++; SetCookie('PT_Bookmark'+NumBookmarks, BMtitle+sepchar+BMaddress+sepchar+BMtitleFull, exp); SetCookie('PT_NumBookmarks',NumBookmarks, exp); alert("Добавлена новая ссылка: "+BMtitleFull); } // cookie functions function getCookieVal (offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr)); } function GetCookie (name) { var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return getCookieVal (j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } function SetCookie (name, value) { var argv = SetCookie.arguments; var argc = SetCookie.arguments.length; var expires = (argc > 2) ? argv[2] : null; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); } function DeleteCookie (name) { var exp = new Date(); exp.setTime (exp.getTime() - 1); var cval = GetCookie (name); document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString(); } На форуме!!! создаём блок избранных ссылок: <!-- --> Синее - это то, что можно изменить... В "Виде материалов" форума там где хотите вывести кнопку, нужно вставить: <input type="button" href="javascript://" onClick="javascript:AddBookmark(document.title, window.location)" value="Добавить в Избранное" title="В избранное!"> Готово... теперь, если Вы зашли в тему по ссылке "К последнему прочитанному сообщению" , то при нажатии на кнопку "Добавить в избранное" ссылка добавится именно на это сообщение... если из списка в разделе зашли на определённую страницу темы, то добавленная ссылка будет вести именно на эту страницу... И ещё... var BMtotal = 10; - максимальное количество ссылок в блоке... когда добавляется одиннадцатая ссылка то самая первая удаляется... и так далее... Учитесь читать, читая - вчитывайтесь, вчитываясь - вдумывайтесь, вдумываясь - понимайте, поняв - делайте. ©
|
|
football-sport,
Посмотрите у меня на форуме... где сообщения, под статусом он-лайн , офф-лайн есть кнопка "Добавить в избранное" Добавьте любое сообщение, потом выйдите на главную страницу форума и справа под меню сайта будет блок с ссылкой на тему в которой Вы нажали на кнопку... Учитесь читать, читая - вчитывайтесь, вчитываясь - вдумывайтесь, вдумываясь - понимайте, поняв - делайте. ©
|
интересно..
Добавлено (20-Мар-2008, 11:11:23) www.vopros.ucoz.ru - Сайт-помощник системы Ucoz
|
kydapodatsya,
Это да, куки куки куки... Хотя можно и под именно отдельных пользователей переделать Учитесь читать, читая - вчитывайтесь, вчитываясь - вдумывайтесь, вдумываясь - понимайте, поняв - делайте. ©
|
|
Quote (badi) А я у себя просто каталог сайтов для этого использую: сылко С скриптом "Избранные ссылки" каждый пользователь может выбрать лучшее для себя отдельно от других... Учитесь читать, читая - вчитывайтесь, вчитываясь - вдумывайтесь, вдумываясь - понимайте, поняв - делайте. ©
|
Попробовала. Получилось.
Inkvizitor, спасибо за идею! У меня только один маленький вопрос - какие параметры нужно откорректировать, чтобы в списке избранных тем названия отражались полностью, а не только первые 20 знаков? Простите, не сильна в этом.. Сообщение отредактировал Electa - Суббота, 06 Дек 2008, 14:04:27
|
Quote (Eudelis) А для 4каталога файлов таким же способом делается? можно для любого модуля Quote (Electa) меня только один маленький вопрос - какие параметры нужно откорректировать, чтобы в списке избранных тем названия отражались полностью, а не только первые 20 знаков? -> Quote (Inkvizitor) new_title = BMtitle.substring(0,19)+'..'; Учитесь читать, читая - вчитывайтесь, вчитываясь - вдумывайтесь, вдумываясь - понимайте, поняв - делайте. ©
|
Inkvizitor, спс за скрипт, но хотел бы спросить, если делать такую штуку по всему сайту (!) то можно ли как то распределить по категориям сами ссылки, например если ссыль с каталога файлов то она прописываеться в категорию файлы и тп
Добавлено (10-Янв-2009, 00:43:29) |
Quote (n1ght) Inkvizitor, спс за скрипт, но хотел бы спросить, если делать такую штуку по всему сайту (!) то можно ли как то распределить по категориям сами ссылки, например если ссыль с каталога файлов то она прописывается в категорию файлы и тп в скрипте есть такие строчки как GetTotalBookmarks() .. можно для каждого модуля скрипт по своему подредактировать.. например в каталоге файлов.. вместо GetTotalBookmarks() писать GetTotalBookmarksFiles() .. и так везде подписать.. в общем сделать можно.. но это уже сами.. Quote (n1ght) ps не мог бы ты кинуть ссыль где взять гостевую для пользователей? в смысле гостевую? Учитесь читать, читая - вчитывайтесь, вчитываясь - вдумывайтесь, вдумываясь - понимайте, поняв - делайте. ©
|
Quote (n1ght) как у тя на сайте, ну в профиль мона коменты писать юзерам, как это осуществить? это не совсем в тему.. здесь описывать не буду.. но для этого нужен один, полностью свободный модуль.. Учитесь читать, читая - вчитывайтесь, вчитываясь - вдумывайтесь, вдумываясь - понимайте, поняв - делайте. ©
|
Хм желательно бы написать примечание своим пользователям что ссылки временные... а то наделал себе этих закладок где нить в инет кафешке пришел домой хоп... А список пуст.. не хорошо... Или же сменил браузер таже картина... Про тех у кто постоянно чистит кукисы вобще можно не говорить.. Вобще идея в целом хорошая..
http://perenosbd.ru
Работа с базами данных ICQ 117921 |
Блин а у мя не получилось, вставил самй большой и верхний код в управление дизайном/стили, блок избраннИх ссИлок свтавил в кправлние дизайном/шаблоны на форум, и кнопку вставил - нет результата, точнее кнопка нжимается, а действия никакого
|
| |||