Просто так сюда зашло человек

Форум просто так

Объявление

Хорошо меж подводных стеблей.
Бледный свет. Тишина. Глубина.
Мы заметим лишь тень кораблей.
И до нас не доходит волна.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум просто так » Скрипты » Скрытие категорий


Скрытие категорий

Сообщений 1 страница 18 из 18

1

Что делает скрипт:
   Делает категории форума скрывающимися

Даёт возможность установить начальное состояние категории (скрыта или нет)
Скрипт использует куки, чтобы запомнить какие категории были скрыты, а какие - нет
Запускается только на главной странице

<script type="text/javascript">

str_hide = "http://uploads.ru/images/k/karpoff/up.gif"
str_show = "http://uploads.ru/images/k/karpoff/down.gif"
tit_hide = "Скрыть категорию."
tit_show = "Показать категорию"
offset=0
tableOffset=0
catCount=0

str=document.URL
page=str.substring(str.lastIndexOf('/')+1)

if( page=="" || page=="index.php" ) {
  findT();
  findO();

  //Добавляйте категории здесь
  hideCat("Общение")
  hideCat("Ысчо одна категория","close")
  hideCat("Админка","close")
}

function checkCookie(name,index) {
if(window.navigator.appName!="Microsoft Internet Explorer")
  return false
cook = unescape(document.cookie)

if( pos=cook.indexOf(name) )
{
    state=cook.substring(pos-2,pos)
    if(state=="op")
    showCat(index)
    else closeCat(index)
   
    return true
}
return false
}

function saveCookie() {
s=""
for(i=0;i<20;i++)
{
    elem=document.getElementById("inp"+i)
    if(elem)
    {
    if(document.getElementById("tab"+i).style.display=="none") state="cl"
    else state="op"
    name = document.getElementById("tab"+i).name
    s+=escape(state+name+'\n');
   
    catCount--
    }
   
    if(catCount==0)
    break;
}
document.cookie=s+'; expires=Fri, 01-Jan-2010 00:00:01 GMT';
}

window.onunload = saveCookie

function hideCat(name, state){
  index = findCat(name)

  if(index==-1) return -1
  catCount++

  str  = "<div class=\"catleft\"><!-- --></div>"
  str += "<img title=\"" + tit_show + "\" align=\"right\" style=\"cursor: hand;\" src=" + str_show + " id=inp"+index+" onclick='changeCat("+index+")'>"   
  str += name
  str += "<div class=\"catright\"><!-- --></div>"
  document.getElementsByTagName ("h2") [index+offset] .innerHTML = str
 
  document.getElementsByTagName ("table") [index+tableOffset] .id = "tab"+index
  document.getElementById("tab"+index).name = name

  cl=checkCookie(name,index)
  if(state=="close" && !cl)
  closeCat(index) 
}

function findT()
{
  i=0
  arr=document.getElementsByTagName ("table")
 
  while(arr[i].summary.toLowerCase().substring(0,27)!="список форумов в категории:")
    i++

  tableOffset = i
}
function findO()
{
  arr = document.getElementsByTagName ("h2")
  i=0
  while(arr[i].innerHTML.substring(0,2)!="<D")
    i++
 
  offset=i
}

function findCat(name)
{
  arr = document.getElementsByTagName ("h2")
  i=offset

  while(arr[i].innerHTML.substring(0,2)=="<D")
  {
if(arr[i].innerHTML.toLowerCase().indexOf(name.toLowerCase())!=-1)
    return (i-offset)
i++
  }
 
  return -1
}

function changeCat(index){
  if(index==-1) return

  if(  document.getElementById("tab"+index).style.display!="none") closeCat(index)
  else showCat(index)
}

function closeCat(index){
  document.getElementById("tab"+index).style.display="none"
  document.getElementById("inp"+index).src = str_show
  document.getElementById("inp"+index).title = tit_show + " " + document.getElementById("tab"+index).name
}

function showCat(index){
    document.getElementById("tab"+index).style.display="block"
document.getElementById("inp"+index).src = str_hide
document.getElementById("inp"+index).title = tit_hide + " " + document.getElementById("tab"+index).name
}
</script>

Чтобы сделать категорию скрывающейся и изначально скрыть её, после строки //Добавляйте категории здесь вставьте строку hideCat("ИМЯ_КАТЕГОРИИ","close"), чтобы по умолчанию категория оставалась открытой, вставьте hideCat("ИМЯ_КАТЕГОРИИ")

В первых строчках скрипта можно менять названия кнопок Скрыть/Показать и картинки, которые отображаются справа от названия категории.

0

2

А пример работы есть? Дай описание скрипта

0

3

Пример смотри на этом же форуме.
На главной странице около названия категории слева треугольничек. Понажимай его

0

4

<script type="text/javascript">

str_hide = "http://uploads.ru/images/k/karpoff/up.gif"
str_show = "http://uploads.ru/images/k/karpoff/down.gif"
tit_hide = "Скрыть категорию."
tit_show = "Показать категорию"
offset=0
tableOffset=0
catCount=0

str=document.URL
page=str.substring(str.lastIndexOf('/')+1)

if( page=="" || page=="index.php" ) {
  findT();
  findO();

  //Добавляйте категории здесь
  hideCat("Общение")
  hideCat("Ысчо одна категория","close")
  hideCat("Админка","close")
}

function hideCat(name, state){
  index = findCat(name)

  if(index==-1) return -1
  catCount++

  str  = "<div class=\"catleft\"><!-- --></div>"
  str += "<img title=\"" + tit_show + "\" align=\"right\" style=\"cursor: hand;\" src=" + str_show + " id=inp"+index+" onclick='changeCat("+index+")'>"   
  str += name
  str += "<div class=\"catright\"><!-- --></div>"
  document.getElementsByTagName ("h2") [index+offset] .innerHTML = str
 
  document.getElementsByTagName ("table") [index+tableOffset] .id = "tab"+index
  document.getElementById("tab"+index).name = name
}

function findT()
{
  i=0
  arr=document.getElementsByTagName ("table")
 
  while(arr[i].summary.toLowerCase().substring(0,27)!="список форумов в категории:")
    i++

  tableOffset = i
}
function findO()
{
  arr = document.getElementsByTagName ("h2")
  i=0
  while(arr[i].innerHTML.substring(0,2)!="<D")
    i++
 
  offset=i
}

function findCat(name)
{
  arr = document.getElementsByTagName ("h2")
  i=offset

  while(arr[i].innerHTML.substring(0,2)=="<D")
  {
if(arr[i].innerHTML.toLowerCase().indexOf(name.toLowerCase())!=-1)
    return (i-offset)
i++
  }
 
  return -1
}

function changeCat(index){
  if(index==-1) return

  if(  document.getElementById("tab"+index).style.display!="none") closeCat(index)
  else showCat(index)
}

function closeCat(index){
  document.getElementById("tab"+index).style.display="none"
  document.getElementById("inp"+index).src = str_show
  document.getElementById("inp"+index).title = tit_show + " " + document.getElementById("tab"+index).name
}

function showCat(index){
    document.getElementById("tab"+index).style.display="block"
document.getElementById("inp"+index).src = str_hide
document.getElementById("inp"+index).title = tit_hide + " " + document.getElementById("tab"+index).name
}
</script>

Вариант без использование куков

0

5

брал скрипт на странице техподдержки. Что можно сделать что бы кнопку скрытия вставлял не вниз колонки а вверх?

скрипт

Свернутый текст

Cкрипт сворачивания категорий.
Наконец я доразобралась с подлыми кукисами и сделала то, что давно хотела: усовершенствовала скрипт сворачивания категорий, предложенный  karpoff'ым, который пользуется большой популярностью.

Что нового:
1.Не надо вводить названия категорий вручную (надеюсь, у вас появится меньше шансов запутаться при его установке, хотя без работы моска все ранво не обойдется=)))

2.идентично работает во всех браузерах (все для меня - это ИЕ, Firefox и Опера, другими даже не хочу заниматься =)))

3.Закрытие и открытие категорий запоминаются и сохраняются в кукисах (также во всех браузерах). Разумеется пока вма не взбредет в голову вручную эти кукисы пойти потереть. =))

    <script type="text/javascript">

    function findCat()
    {
    var ni=1
    for (ni=1; ni<=5; ni++)
    {var idx="pun-category"+ni
    var im="image"+ni
    document.getElementById(idx).getElementsByTagName("h2")[0].innerHTML
    if (document.cookie.indexOf("category")!=-1)
    {var cook1=document.cookie.substr(document.cookie.indexOf("category"))
    var cook=cook1.substr((cook1.indexOf(ni)+String(ni).length), 2)
    if (cook=="op")
    {document.getElementById(idx).getElementsByTagName("table")[0].style.display="block"
    var pic="http://uploads.ru/images/k/karpoff/up.gif"
    var tit="Скрыть"
    }
    else if (cook=="cl")
    {document.getElementById(idx).getElementsByTagName("table")[0].style.display="none"
    var pic="http://ro.3bb.ru/uploads/ro/2_FolderUp.gif"
    var tit="Показать"
    }}
    else if (document.cookie.indexOf("category")==-1)
    {document.getElementById(idx).getElementsByTagName("table")[0].style.display="block"
    var pic="http://uploads.ru/images/k/karpoff/up.gif"
    var tit="Скрыть"
    }
    document.getElementById(idx).getElementsByTagName("h2")[0].innerHTML+="<div align='right'>"+"<img src='"+pic+"' "+"id='"+im+"' "+"style='cursor: hand;'"+"title='"+tit+"' "+"onclick='changeCat("+ni+")' />"+"</div>"}
    }
    if (document.title.indexOf(" - Форум")!=-1)
    {findCat()
    window.onunload=saveCooks}

    function changeCat(ru)
    {var tb="pun-category"+ru
    var img="image"+ru
    if (document.getElementById(tb).getElementsByTagName("table")[0].style.display!="none")
    {document.getElementById(tb).getElementsByTagName("table")[0].style.display="none"
    document.getElementById(img).src="http://ro.3bb.ru/uploads/ro/2_FolderUp.gif"}
    else
    {document.getElementById(tb).getElementsByTagName("table")[0].style.display="block"
    document.getElementById(img).src="http://uploads.ru/images/k/karpoff/up.gif"}
    }

    function saveCooks()
    {
    var sample="category="
    var vi=1
    for (vi=1; vi<=5; vi++)
    {var ct="pun-category"+vi
    if (document.getElementById(ct).getElementsByTagName("table")[0].style.display!="none")
    {sample+=vi+"op"}
    else if (document.getElementById(ct).getElementsByTagName("table")[0].style.display=="none")
    {sample+=vi+"cl"}}
    var day=new Date()
    day.setDate(day.getDate()+365)
    sample+=";expires="+day.toGMTString()
    document.cookie=sample}

    </script>

Вместо жирной пятерки (ОБРАТИТЕ ВНИМАНИЕ, ЧТО В ДВУХ МЕСТАХ) - количество категорий у вас
Вместо ссылки курсивом - ссылка на картинку Скрыть
Вместо Ссылки подчеркнутой

Отредактировано Klush (2007-03-21 16:15:53)

0

6

а ты не пробовал поставить картинку поменьше?

0

7

Это не решает проблему. Да, немного строка сужается. Но если бы картинка стояла в строке названия категории было бы еще уже.

0

8

karpoff написал(а):

Пример смотри на этом же форуме.
На главной странице около названия категории слева треугольничек. Понажимай его

Справа.

Есть ли какой-нибудь параметр в этом скрипте отвечающий за ширину окна?

Дело в том, что если использовать стиль с маленькими полями столбец "форум" сжимается в 2 раза и соответственно столбец "последнее сообщение" увеличивается в 2 раза и проподает часть шапки с текстом "последнее сообщение".
Эффект замечен только в браузерах Mozilla Firefox и Opera

Отредактировано Klush (2007-03-23 21:46:05)

0

9

не за свои скрипты отвечать не могу

0

10

Извиняюсь. Ваш скрипт работает правильно. Единственное в  Mozilla Firefox 2.0.0.3 не работает. Буду пользоваться вашим скриптом.

0

11

Ага...в Мозила 2.0.0.3 усе работает))

0

12

Код:
<script type="text/javascript">
str_hide = "http://forumupload.ru/uploads/0000/26/b8/3604-1.gif"
str_show = "http://img100.imageshack.us/img100/82/10801088108310881083vf9.gif" 
tit_hide = "Скрыть категорию."
tit_show = "Показать категорию"
offset=0
tableOffset=0
catCount=0
str=document.URL
page=str.substring(str.lastIndexOf('/')+1)
if( page=="" || page=="index.php" ) {
  findT();
  findO();
  //Добавляйте категории здесь
  hideCat("Гостевая
")
  hideCat("Правила форума
","close")
  hideCat("Опросы
","close")
hideCat("Знакомства
")
hideCat("Законодательство Украины
")
hideCat("Международный опыт
")
hideCat("Примеры дел
")
hideCat("Полезная информация
")
hideCat("Всё о дизайне форума
")
hideCat("Разное
")
hideCat("Корзина
")
}
function checkCookie(name,index) {
if(window.navigator.appName!="Microsoft Internet Explorer")
  return false
cook = unescape(document.cookie)
if( pos=cook.indexOf(name) )
{
    state=cook.substring(pos-2,pos)
    if(state=="op")
    showCat(index)
    else closeCat(index)
    
    return true
}
return false
}
function saveCookie() {
s=""
for(i=0;i<20;i++)
{
    elem=document.getElementById("inp"+i)
    if(elem)
    {
    if(document.getElementById("tab"+i).style.display=="none") state="cl"
    else state="op"
    name = document.getElementById("tab"+i).name
    s+=escape(state+name+'\n');
    
    catCount--
    }
    
    if(catCount==0)
    break;
}
document.cookie=s+'; expires=Fri, 01-Jan-2010 00:00:01 GMT';
}
window.onunload = saveCookie
function hideCat(name, state){
  index = findCat(name)
  if(index==-1) return -1
  catCount++
  str  = "<div class=\"catleft\"><!-- --></div>"
  str += "<img title=\"" + tit_show + "\" align=\"right\" style=\"cursor: hand;\" src=" + str_show + " id=inp"+index+" onclick='changeCat("+index+")'>"    
  str += name
  str += "<div class=\"catright\"><!-- --></div>"
  document.getElementsByTagName ("h2") [index+offset] .innerHTML = str
  
  document.getElementsByTagName ("table") [index+tableOffset] .id = "tab"+index
  document.getElementById("tab"+index).name = name
  cl=checkCookie(name,index)
  if(state=="close" && !cl)
  closeCat(index)  
}
function findT() 
{
  i=0
  arr=document.getElementsByTagName ("table")
  
  while(arr[i].summary.toLowerCase().substring(0,27)!="[b]список форумов в категории:[/b]")
    i++
  tableOffset = i
}
function findO() 
{
  arr = document.getElementsByTagName ("h2")
  i=0
  while(arr[i].innerHTML.substring(0,2)!="<D")
    i++
  
  offset=i
}
function findCat(name)
{
  arr = document.getElementsByTagName ("h2")
  i=offset
  while(arr[i].innerHTML.substring(0,2)=="<D")
  {
if(arr[i].innerHTML.toLowerCase().indexOf(name.toLowerCase())!=-1)
    return (i-offset)
i++
  }
  
  return -1
}
function changeCat(index){
  if(index==-1) return
  if(  document.getElementById("tab"+index).style.display!="none") closeCat(index)
  else showCat(index)
}
function closeCat(index){
  document.getElementById("tab"+index).style.display="none"
  document.getElementById("inp"+index).src = str_show
  document.getElementById("inp"+index).title = tit_show + " " + document.getElementById("tab"+index).name
}
function showCat(index){
    document.getElementById("tab"+index).style.display="block"
document.getElementById("inp"+index).src = str_hide
document.getElementById("inp"+index).title = tit_hide + " " + document.getElementById("tab"+index).name
}
</script>

Вот поставил а не работает что не так??? http://xxabtoputetxx.3bb.ru/

там где выдилино чтото менять нада?

0

13

hideCat("Гостевая
")
  hideCat("Правила форума
","close")

ты так и вставлял с переходами на новую строку?

0

14

Код:
<script type="text/javascript">
str_hide = "http://woweb.ucoz.ru/flist/clp/552/1.gif"
str_show = "http://woweb.ucoz.ru/flist/clp/552/7.gif" 
tit_hide = "Скрыть категорию."
tit_show = "Показать категорию"
offset=0
tableOffset=0
catCount=0
str=document.URL
page=str.substring(str.lastIndexOf('/')+1)
if( page=="" || page=="index.php" ) {
  findT();
  findO();
  //Добавляйте категории здесь
  hideCat("Гостевая")
  hideCat("Правила форума","close")
  hideCat("Опросы","close")
hideCat("Знакомства")
hideCat("Законодательство Украины")
hideCat("Международный опыт")
hideCat("Примеры дел")
hideCat("Полезная информация")
hideCat("Всё о дизайне форума")
hideCat("Разное")
hideCat("Корзина")
}
function checkCookie(name,index) {
if(window.navigator.appName!="Microsoft Internet Explorer")
  return false
cook = unescape(document.cookie)
if( pos=cook.indexOf(name) )
{
    state=cook.substring(pos-2,pos)
    if(state=="op")
    showCat(index)
    else closeCat(index)
    
    return true
}
return false
}
function saveCookie() {
s=""
for(i=0;i<20;i++)
{
    elem=document.getElementById("inp"+i)
    if(elem)
    {
    if(document.getElementById("tab"+i).style.display=="none") state="cl"
    else state="op"
    name = document.getElementById("tab"+i).name
    s+=escape(state+name+'\n');
    
    catCount--
    }
    
    if(catCount==0)
    break;
}
document.cookie=s+'; expires=Fri, 01-Jan-2010 00:00:01 GMT';
}
window.onunload = saveCookie
function hideCat(name, state){
  index = findCat(name)
  if(index==-1) return -1
  catCount++
  str  = "<div class=\"catleft\"><!-- --></div>"
  str += "<img title=\"" + tit_show + "\" align=\"right\" style=\"cursor: hand;\" src=" + str_show + " id=inp"+index+" onclick='changeCat("+index+")'>"    
  str += name
  str += "<div class=\"catright\"><!-- --></div>"
  document.getElementsByTagName ("h2") [index+offset] .innerHTML = str
  
  document.getElementsByTagName ("table") [index+tableOffset] .id = "tab"+index
  document.getElementById("tab"+index).name = name
  cl=checkCookie(name,index)
  if(state=="close" && !cl)
  closeCat(index)  
}
function findT() 
{
  i=0
  arr=document.getElementsByTagName ("table")
  
  while(arr[i].summary.toLowerCase().substring(0,27)!="список форумов в категории:")
    i++
  tableOffset = i
}
function findO() 
{
  arr = document.getElementsByTagName ("h2")
  i=0
  while(arr[i].innerHTML.substring(0,2)!="<D")
    i++
  
  offset=i
}
function findCat(name)
{
  arr = document.getElementsByTagName ("h2")
  i=offset
  while(arr[i].innerHTML.substring(0,2)=="<D")
  {
if(arr[i].innerHTML.toLowerCase().indexOf(name.toLowerCase())!=-1)
    return (i-offset)
i++
  }
  
  return -1
}
function changeCat(index){
  if(index==-1) return
  if(  document.getElementById("tab"+index).style.display!="none") closeCat(index)
  else showCat(index)
}
function closeCat(index){
  document.getElementById("tab"+index).style.display="none"
  document.getElementById("inp"+index).src = str_show
  document.getElementById("inp"+index).title = tit_show + " " + document.getElementById("tab"+index).name
}
function showCat(index){
    document.getElementById("tab"+index).style.display="block"
document.getElementById("inp"+index).src = str_hide
document.getElementById("inp"+index).title = tit_hide + " " + document.getElementById("tab"+index).name
}
</script>

Вот так ставил ( картинки уменьшил и в верх и низ ставил ) и нечего

0

15

xxABTOPUTETxx написал(а):

Вот так ставил ( картинки уменьшил и в верх и низ ставил ) и нечего

Попробуй тогда взять скрипт с техподдержки

0

16

karpoff написал(а):

Попробуй тогда взять скрипт с техподдержки

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

0

17

xxABTOPUTETxx написал(а):

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

может тогда дело в руках?

0

18

karpoff написал(а):

может тогда дело в руках?

:D  а х..... его знаетhttp://www.sbopka.ru/forum/Smileys/default/big_boss.gif

0


Вы здесь » Форум просто так » Скрипты » Скрытие категорий