Форум о социальных сетях Поиск по форуму Инвестиции SMM обучение SMM курсы
Форум о социальных сетях Поиск по форуму Инвестиции SMM обучение SMM курсы
  • Страница 1 из 1
  • 1
Убрать категории в hide
#1
Суббота, 02.07.2011, 16:54
Snamp
Проверенный
Сообщения: 587
Репутация: 1187
Есть проблема небольшая, слишком много категорий - надо убрать некоторые под кат
в меню есть такая строчка

Code
// Формируем массивы скрываемых категорий
  if ( $hidden != 0 ) $hiddens = explode( ',', $hidden );
  else $hiddens = array();


незнаю как точно прописать чтоб допустим как на сайте http://horroralbum.ru/ (не реклама) убрались все дискографии под кат... по какому признаку по id категории?и если да то прописывать можно через запятые?допустим так 4, 6, 17...
#2
Суббота, 02.07.2011, 17:03
Kонстантин
Пользователь
Сообщения: 50
Репутация: 49
До боли знакомый шаблон от CSR(http://verstka.pro/)
Наверняка, не приобретали его? Если бы приобретали, то автор вечером помог Вам с категориями.

По поводу проблемы: вместе с шаблоном должны были идти файлы (engine/modules/), среди которых должны быть:
cat_menu.functions.php
cat_menu.php
..

Не могли бы выложить их содержимое здесь? С данным шаблоном не работал и структуру вывода не знаю.
Ищу достойных журналистов и файловиков к себе в штаб.
Ежедневный просмотр раздела "Вакансии", поиск рабочей силы.
Интересен быстрый зароботок копипастом? Пишите в личку.
#3
Суббота, 02.07.2011, 17:11
Snamp
Проверенный
Сообщения: 587
Репутация: 1187
cat_menu.functions.php

Code
<?php
/*
=====================================================
  Categories Menu version 2.0 Beta
-----------------------------------------------------
  http://www.ikeep.ws/
-----------------------------------------------------
  Copyright (c) 2009, 2010 Chrono
=====================================================
  Данный код защищен авторскими правами
=====================================================
  Файл: cat_menu.functions.php
-----------------------------------------------------
  Назначение: Функции построения дерева категорий
=====================================================
*/

if( ! defined( 'DATALIFEENGINE' ) ) {
  define( 'DATALIFEENGINE', true );
}
if( ! defined( 'ROOT_DIR' ) ) {
  define( 'ROOT_DIR', substr( dirname( __FILE__ ), 0, - 11 ) );
}
if( ! defined( 'ENGINE_DIR' ) ) {
  define( 'ENGINE_DIR', ROOT_DIR . '/engine' );
}

/* Функция сохранения кеш  
(взята с API DLE, API не используется ввиду глючности множественных подключений модов с API) */
function CatMenuSave($fname, $vars) {
  $cache_dir = ENGINE_DIR."/cache/";
  $filename = $fname.".tmp";
  $f = @fopen($cache_dir.$filename, "w+");
  @chmod('0777', $cache_dir.$filename);
  if (is_array($vars)) $vars = serialize($vars);
  @fwrite($f, $vars);
  @fclose($f);
  return $vars;
}

/* Функция загрузки с кеша  
(взята с API DLE, API не используется ввиду глючности множественных подключений модов с API) */
function CatMenuLoad($fname, $timeout=300, $type = 'text') {
  $cache_dir = ENGINE_DIR."/cache/";
  $filename = $fname.".tmp";
  if (!file_exists($cache_dir.$filename)) return false;
  if ((filemtime($cache_dir.$filename)) < (time()-$timeout)) return false;
  if ($type=='text'){
   return file_get_contents($cache_dir.$filename);
  } else {
   return unserialize(file_get_contents($cache_dir.$filename));
  }
}  

/* Функция построения адреса подкатегории для ЧПУ
(аналогична стандартной функции DLE) */
function CatMenuUrl( $id, $all_info ) {
  if ( ! $id ) return;
  $parent_id = $all_info[$id]['parentid'];
  $url = $all_info[$id]['alt_name'];
  while ( $parent_id ) {
   $url = $all_info[$parent_id]['alt_name'] . "/" . $url;
   $parent_id = $all_info[$parent_id]['parentid'];
   if ( $all_info[$parent_id]['parentid'] == $all_info[$parent_id]['id'] ) break;
  }
  return $url;
}

/* Функция подсчета общего количества новостей и комментариев */
function CatMenuStats( $all_info = array() ) {
  $allstats['post_new'] = 0;
  $allstats['post_all'] = 0;
  $allstats['comm_new'] = 0;
  $allstats['comm_all'] = 0;
  foreach ( $all_info as $cats ) {
   $allstats['post_new'] += $cats['new'];
   $allstats['post_all'] += $cats['all'];
   $allstats['comm_new'] += $cats['newc'];
   $allstats['comm_all'] += $cats['allc'];
  }
  $allstats['post_all'] -= $allstats['post_new'];
  $allstats['comm_all'] -= $allstats['comm_new'];
  return $allstats;
}

/* Функция подсчета сумм новостей и комментариев из подкатегорий  */
function CatMenuNews( $current = 0, $all_info = array(), $start = 0, $news = array() ) {
  global $config; // конфигурация движка
  static $news;
   
  // При первом вызове берем за основу новости самой категории
  if ( $current == $start ) {
   $news['new'] = $all_info[$current]['new'];
   $news['all'] = $all_info[$current]['all'];
   $news['newc'] = $all_info[$current]['newc'];
   $news['allc'] = $all_info[$current]['allc'];
  }
   
  // Если стоит настройка НЕ выводить новости опубликованные в субкатегориях, то не выводим их и в меню - закомментируйте строчку ниже, если хотите, чтобы сумма новостей в ветке категорий считалась независимо от настроек движка
  if ( $config['show_sub_cats'] == 0 ) return $news;
   
  // если есть категории, продолжаем...
  if ( count( $all_info ) > 0 ) {
    
   // ищем, есть ли подкатегории у текущей категории
   foreach ( $all_info as $cats ) {
    // если у текущей категории есть потомки
    if ( $current == $cats['parentid'] ) $children[] = $cats['id'];
   }
    
   $subcount = count( $children );
    
   if ( $current != $start ) {
    $news['new'] += $all_info[$current]['new'];
    $news['all'] += $all_info[$current]['all'];
    $news['newc'] += $all_info[$current]['newc'];
    $news['allc'] += $all_info[$current]['allc'];
   }
    
   // если у текущей категории есть подкатегории
   if ( $subcount > 0 ) {
    // потом собираем блок подкатегорий
    foreach ( $children as $id ) {
     CatMenuNews( $id, $all_info, $start, $news );
    }
   }
   
  }
   
  // если это последний вызов функции
  if ( $current == $start ) {
   return $news;
  }
   
}

/* Функция построения дерева меню */
function CatMenu( $current = 0, $all_info = array(), $new_days = 0, $com_days = 0, $iconimg = 0, $cute = 0, $hiddens = array() ) {
  global $config, $member_id; // конфигурация движка
  static $build; // переменная сборки
   
  // если есть категории, продолжаем...
  if ( count( $all_info ) > 0 ) {
    
     
   if( !in_array($current, $hiddens) ) {
    // ищем, есть ли подкатегории у текущей категории
    foreach ( $all_info as $cats ) {
     // если у текущей категории есть потомки
     if ( $current == $cats['parentid'] ) {
      // собираем их идентификаторы
      $children[] = $cats['id'];
     }
    }
   }
    
   $subcount = count( $children );
    
   // проверка, это первый вызов
   if ( $current != 0 ) {
    
    if( !in_array($current, $hiddens) ) {
     
    // создаем стрелку если необходимо
    if ( $subcount > 0 ) {$arrow = " class=\"subcat\"";}
    else { $arrow = ''; }
    
    // создаем описание если доступно и обрезаем имя, если требуется
    $name = stripslashes( $all_info[$current]['name'] );
    if ( $all_info[$current]['descr'] ) {
     $descr = " title=\"" . strip_tags( stripslashes( $all_info[$current]['descr'] ) ) . "\"";
    }
    else $descr = '';
    if ( $cute > 0 and $cute < strlen($name) ) {  
     $name = substr($name, 0 , $cute-3) . "...";
    }
    
    // создаем смену иконок если необходимо
    if ( $iconimg == 1 ) {
     $caticon = "<img src=\"";  
     $parent = $all_info[$current]['parentid'];
     // если есть иконка...
     if ( $all_info[$current]['icon'] ) {$caticon .= $all_info[$current]['icon'];}
     // если нет иконки, берем от родительской
     elseif ( $all_info[$parent]['icon'] ) {$caticon .= $all_info[$parent]['icon'];}
     // а если нет и родительской иконки - ставим по умолчанию
     else {$caticon .= "{THEME}/dleimages/no-icon.gif";}
     $caticon .= "\" border=\"0\" alt=\"\" align=\"middle\" />";
    }
    elseif ( $iconimg == 2 and $all_info[$current]['parentid'] == 0 ) {
     $caticon = "<img src=\"";  
     // если есть иконка...
     if ( $all_info[$current]['icon'] ) {$caticon .= $all_info[$current]['icon'];}
     // если нет иконки, берем от родительской
     else {$caticon .= "{THEME}/dleimages/no-icon.gif";}
     $caticon .= "\" border=\"0\" alt=\"\" align=\"middle\" />";
    }
    elseif ( $iconimg == 3 and $all_info[$current]['parentid'] == 0 and $all_info[$current]['icon'] ) {
     $caticon = "<img src=\"" . $all_info[$current]['icon'] . "\" border=\"0\" alt=\"\" align=\"middle\" />";
    }
    else { $caticon = ''; }
    
    $newmarker = '';
    $alls_info = '';
     
    // создаем информацию о комментариях в категории, если необходимо
    if ( $com_days > 0 ) {
     // получаем инфу о количестве новостей в категории и входящих в нее подкатегориях
     $count = CatMenuNews( $current, $all_info, $current );
     $newc = $count['newc'];
     $allc = $count['allc'];
     if ($newc > 0) {
      $newmarker = " class=\"newc\"";
      $newc = "+".$newc;
      $allc -= $newc;
     }
     else {
      $newmarker = '';
      $newc = '';
     }
     // формируем показ информации о комментариях
     $comm_info = $allc . "<span class=\"newc\">" . $newc . "</span>";
    } else $comm_info = false;
     
    // создаем информацию о новостях категории, если необходимо
    if ( $new_days > 0 ) {
     // получаем инфу о количестве новостей в категории и входящих в нее подкатегориях
     $count = CatMenuNews( $current, $all_info, $current );
     $new = $count['new'];
     $all = $count['all'];
     // маркер категорий с новыми новостями
     if ($new > 0) {
      $newmarker = " class=\"new\"";
      $new = "+".$new;
      $all -= $new;
     }
     else {
      if (!$newmarker) $newmarker = '';
      $new = '';
     }
     // формируем показ информации о новостях
     #$post_info = $all . "<span class=\"new\">" . $new . "</span>";
     $post_info = $all . "<span class=\"new\"></span>";
    } else $post_info = false;
     
    // формируем итоговый показ информации
    if ( $comm_info or $post_info ) $alls_info .= '<span class="post_info">';
    if ( $post_info ) $alls_info .= $post_info;
    if ( $comm_info ) $alls_info .= ' (' . $comm_info;
    if ( $comm_info ) $alls_info .= ')';
    if ( $comm_info or $post_info ) $alls_info .= '</span>';
     
    // создаем линк
    if ( $config['allow_alt_url'] == "yes" ) $build .= "<li" . $newmarker . "><a href=\"" . $config['http_home_url'] . CatMenuUrl( $current, $all_info  ) . "/\" rel=\"index section\"" . $descr . $arrow . ">" . $caticon  . "" . $name ."</a> (".$alls_info.")";
    else $build .= "<li" . $newmarker . "><a href=\"{$config['http_home_url']}index.php?do=cat&category=" . $all_info[$current]['alt_name'] . "\" rel=\"index section\"" . $descr . $arrow . ">" . $caticon  . "" . $name ."</a> (".$alls_info.")";
    
    }
    
   } else {
    // если это первый вызов - создаем меню
    $build = '';
   }
    
   // если у текущей категории есть подкатегории
   if ( $subcount > 0 ) {
    // то создаем ветку подкатегорий
    if ( $current != 0 ) $build .= "</li>";
    // потом собираем блок подкатегорий
    for ( $i = 0; $i <= $subcount; $i++ ) {
     // если подкатегории завершились, закрываем блок и  пункт списка
     if ( $i == $subcount ) {
      $build .= "";  
     }
     // а если нет - продолжаем строить
     else {
      CatMenu( $children[$i], $all_info, $new_days, $com_days, $iconimg, $cute, $hiddens );
     }
    }
   }
   // если нет подкатегорий, закрываем пункт списка
   else {
    $build .= "</li>";
   }
  }
  else {echo 'No categories';}
   
   
  // если это последний вызов функции
  if ( $current == 0 ) {
   // завершаем дерево категорий
   return $build;
  }
   
}

/* Функция сборки рабочего массива */
function CatMenuInit ($post_list=false, $new_days = 0, $comm_list=false, $com_days=0) {
  global $cat_info;
   
  // формируем свой массив категорий без лишних данных
  foreach ( $cat_info as $key => $cats ) {
    
   // все необходимые нам сведения
   $all_info[$key]['id'] = $cats['id'];
   $all_info[$key]['parentid'] = $cats['parentid'];
   $all_info[$key]['posi'] = $cats['posi'];
   $all_info[$key]['name'] = $cats['name'];
   $all_info[$key]['alt_name'] = $cats['alt_name'];
   $all_info[$key]['icon'] = $cats['icon'];
   $all_info[$key]['descr'] = $cats['descr'];
    
   // если нужно кол-во новостей - включаем в обработку
   if ($new_days > 0 and $post_list != false) {
    $new_posts = 0;
    $all_posts = 0;
    $new_comms = 0;
    $all_comms = 0;
    foreach ( $post_list as $news ) {
     // если новости есть для данной категории
     if ( $news['category'] == $cats['id'] ) {
       
      $all_posts++; // увеличиваем счетчик всех новостей самой категории      
      // создаем метку устаревания новости
      $old = strtotime($news['date']) - time() + 86400 * $new_days;
      // если новость не устарела увеличиваем счетчик новых новостей всех новостей самой категории  
      if ( $old > 0 ) $new_posts++;
       
      // если нужно количество комментариев - включаем их в обработку
      if ($com_days > 0 and $comm_list != false) {
       $newc = 0;
       $allc = 0;
       foreach ( $comm_list as $comms ) {
        if ( $comms['post_id'] == $news['id'] ) {
         $allc++;
         $oldc = strtotime($comms['date']) - time() + 86400 * $com_days;
         if ( $oldc > 0 ) $newc++;
        }
       }
       $new_comms += $newc;
       $all_comms += $allc;
      }
       
     }
    }
    // сохраняем данные для категории
    $all_info[$key]['new'] = $new_posts;
    $all_info[$key]['all'] = $all_posts;
    if ($com_days > 0 and $comm_list != false) {
     $all_info[$key]['newc'] = $new_comms;
     $all_info[$key]['allc'] = $all_comms;
    }
   }
    
  }
   
  return $all_info;

}

?>


cat_menu.php

Code
<?php
/*
=====================================================
  Categories Menu version 2.0 Beta
-----------------------------------------------------
  http://www.ikeep.ws/
-----------------------------------------------------
  Copyright (c) 2009, 2010 Chrono
=====================================================
  Данный код защищен авторскими правами
=====================================================
  Файл: cat_menu.php
-----------------------------------------------------
  Назначение: Вывод меню категорий
=====================================================
*/
if(!defined('DATALIFEENGINE'))
{
   die("Hacking attempt!");
}

/* ===== ИНИЦИАЛИЗАЦИЯ ===== */

// Определение параметров конфигурации через шаблон
if ( $copy ) $copy = intval( $copy );
else $copy = 0;
if ( $cache_time ) $cache_time = intval( $cache_time );
else $cache_time = 14400;
if ( $new_days ) $new_days = intval( $new_days );
else $new_days = 0;
if ( $com_days ) $com_days = intval( $com_days );
else $com_days = 0;
if ( $iconimg ) $iconimg = intval( $iconimg );
else $iconimg = 0;
if ( $cute ) $cute = intval( $cute );
else $cute = 0;
if ( $hidden ) $hidden = preg_replace( "/[^0-9,]/", "", urldecode($hidden) );
else $hidden = 0;

// Подключаем функции построения меню
if( $copy == 0 ) include_once ( ENGINE_DIR.'/modules/cat_menu.functions.php' );

/* ===== ВЫВОД МЕНЮ ===== */
// получаем из кеша или формируем данные для вывода
$cat_menu = CatMenuLoad( 'cat_menu_c'.$copy, $cache_time, 'text' );
if ( !$cat_menu ) {
  // собираем сведения обо всех одобренных публикациях, если необходимо
  if ($new_days > 0) {
   $sql = $db->query( "SELECT id, date, category FROM " . PREFIX . "_post WHERE approve = '1' ORDER BY id ASC" );
   while( $row = $db->get_row( $sql ) ) {$post_list[] = $row;}
  }
  else $post_list = false;
  // собираем сведения обо всех одобренных комментариях, если необходимо
  if ($com_days > 0) {
   $sql = $db->query( "SELECT id, date, post_id FROM " . PREFIX . "_comments WHERE approve = '1' ORDER BY id ASC" );
   while( $row = $db->get_row( $sql ) ) {$comm_list[] = $row;}
  }
  else $comm_list = false;
  // получаем рабочий массив со всеми данными
  $all_info = CatMenuInit($post_list, $new_days, $comm_list, $com_days);
  // очищаем память
  unset($post_list);
  unset($comm_list);
  // Формируем массивы скрываемых категорий
  if ( $hidden != 0 ) $hiddens = explode( ',', $hidden );
  else $hiddens = array();
  // получаем готовое дерево категорий
  $cat_menu = CatMenu( 0, $all_info, $new_days, $com_days, $iconimg, $cute, $hiddens );
  if ( $mode == 1 ) unset($all_info);
  // сохраняем в кеш
  CatMenuSave( 'cat_menu_c'.$copy, $cat_menu );
  unset($all_info);
}

// вывод меню
echo "<ul class=\"cat_menu\" id=\"cat_menu_c".$copy."\">".$cat_menu."</ul>";

?>
#4
Суббота, 02.07.2011, 17:25
Kонстантин
Пользователь
Сообщения: 50
Репутация: 49
2Snamp

А если попробовать через запятую в ^ попробовать указать?
ID тех, кого скрыть надо.
Ищу достойных журналистов и файловиков к себе в штаб.
Ежедневный просмотр раздела "Вакансии", поиск рабочей силы.
Интересен быстрый зароботок копипастом? Пишите в личку.
#5
Суббота, 02.07.2011, 17:31
Snamp
Проверенный
Сообщения: 587
Репутация: 1187
Kонстантин, ты имеешь ввиду здесь?вместо нуля

Code
if ( $hidden != 0 ) $hiddens = explode( ',', $hidden );
#6
Суббота, 02.07.2011, 17:39
Kонстантин
Пользователь
Сообщения: 50
Репутация: 49
Да, там.
У меня вывод точ-также сформирован, но в скрытии не нуждаюсь.
Ищу достойных журналистов и файловиков к себе в штаб.
Ежедневный просмотр раздела "Вакансии", поиск рабочей силы.
Интересен быстрый зароботок копипастом? Пишите в личку.
#7
Суббота, 02.07.2011, 17:47
Snamp
Проверенный
Сообщения: 587
Репутация: 1187
Kонстантин, попробывал, результат ноль
#8
Суббота, 02.07.2011, 17:58
Kонстантин
Пользователь
Сообщения: 50
Репутация: 49
Пока сам не знаю решения, узнал у автора:

Александр: Если не ошибаюсь, в этом шаблоне стоит другая версия модуля вывода категорий. Я могу вам дать дистрибутив новой версии, где можно исключать категории. Если вы хотите чтобы я его настроил и подогнал, это будет 100 рублей.
Ищу достойных журналистов и файловиков к себе в штаб.
Ежедневный просмотр раздела "Вакансии", поиск рабочей силы.
Интересен быстрый зароботок копипастом? Пишите в личку.
#9
Суббота, 02.07.2011, 18:03
Snamp
Проверенный
Сообщения: 587
Репутация: 1187
Kонстантин, я подумаю и если не ничего не придумаю напишу вам.
  • Страница 1 из 1
  • 1
Поиск:
Форум
Социальные сети
Хостинг от uCoz