Jump to content

Recommended Posts

Привет. Нужна небольшая помощь. Нужно как-то сделать на сайте что-то типа категорий, только чтобы они выводились в шаблон с помощью другого тега. Но в тоже время чтобы и категории тоже были. Это вообще реально организовать? Может есть какие модули? 

Link to post
Share on other sites

ну кастомом выводите

Тег {custom}, отвечает за вывод статей в пользовательском формате, имеет следующие параметры:

{custom id="1,2,5-8" category="2,3,5-8" author="x" days="x" template="custom" available="global" navigation="no" from="0" limit="10" fixed="yes" order="date" sort="desc" cache="yes"}

о параметрах читайте на офф сайте

 

Link to post
Share on other sites
Только что, GUEVARA сказал:

ну кастомом выводите

Тег {custom}, отвечает за вывод статей в пользовательском формате, имеет следующие параметры:

{custom id="1,2,5-8" category="2,3,5-8" author="x" days="x" template="custom" available="global" navigation="no" from="0" limit="10" fixed="yes" order="date" sort="desc" cache="yes"}

о параметрах читайте на офф сайте

 

вы меня не совсем правильно поняли. Во первых мне не нужно выводит содержимое категорий, а лишь что-то по типу {link-category}, только определенные. Например: {link-category:1,2,3,4,5}. А во вторых хочется сделать просто еще одни категории:D.

P.S. как же сложно это объяснить..

Link to post
Share on other sites

Вообще-то у DLE появился custom для меню...

https://dle-news.ru/extras/online/index.html

{catmenu id="1,2,3-5" subcat="yes" template="custom" cache="yes"} 

Стоит иногда документацию посещать.. В связке с [category=] можно сделать что угодно.

Link to post
Share on other sites
2 часа назад, kkey80 сказал:

Вообще-то у DLE появился custom для меню...

https://dle-news.ru/extras/online/index.html

{catmenu id="1,2,3-5" subcat="yes" template="custom" cache="yes"} 

Стоит иногда документацию посещать.. В связке с [category=] можно сделать что угодно.

Для версии 11.3, может у человека ниже версия.

Link to post
Share on other sites
19 минут назад, Canek123 сказал:

Для версии 11.3, может у человека ниже версия.

Не всегда можно обновить систему конечно. Но все таки желательно обновлять постоянно версии, для ТС это может стать хорошим шансом. Ну в конечном итоге, если я не ошибаюсь там в engine/modules/functions.php - одну функцию нужно перенести с новой версии, а вот шаблон, очень просто перенести, достаточно почитать инструкции их много.

 

PS:

Немного ошибся, но вот как можно добавить тег в старые версии DLE:

В файле /enigne/classes/templates.class.php ищем:
 

if( strpos( $this->template, "{include file=" ) !== false ) {

ВЫШЕ ставим:
 

		if (strpos ( $this->template, "{catmenu" ) !== false) {
			$this->template = preg_replace_callback ( "#\\{catmenu(.*?)\\}#is", array( &$this, 'build_cat_menu'), $this->template );
		}
		
		if (strpos ( $this->template, "{catnewscount" ) !== false) {
			$this->template = preg_replace_callback ( "#\\{catnewscount id=['\"](.+?)['\"]\\}#i", array( &$this, 'catnewscount'), $this->template );
		}

Еще раз ищем:
 

if (strpos ( $template, "[not-desktop]" ) !== false) {

ВЫШЕ ставим:

		
		if (strpos ( $template, "{catnewscount" ) !== false) {
			$template = preg_replace_callback ( "#\\{catnewscount id=['\"](.+?)['\"]\\}#i", array( &$this, 'catnewscount'), $template );
		}
		
		if (strpos ( $template, "{catmenu" ) !== false) {
			$template = preg_replace_callback ( "#\\{catmenu(.*?)\\}#is", array( &$this, 'build_cat_menu'), $template );
		}
Ищем:
var $include_mode = 'tpl';

Ниже:
	var $include_mode = 'tpl';

ИЩЕМ:

function _clear() {

ВЫШЕ ставим:

	function catnewscount( $matches=array() ) {
		global $cat_info;
		
		$id = intval($matches[1]);
		
		return intval($cat_info[$id]['newscount']);
	}

	function build_tree( $data ) {

		$tree = array();
		foreach ($data as $id=>&$node) {
			if ($node['parentid'] == 0) {
				$tree[$id] = &$node;
			} else {
				if (!isset($data[$node['parentid']]['children'])) $data[$node['parentid']]['children'] = array();
				$data[$node['parentid']]['children'][$id] = &$node;
			}
		}
		
		return $tree;

	}
	
	function recursive_array_search($needle, $haystack, $subcat = true, &$item = false) {
		
		if(!$item) $item = array();

		foreach($haystack as $key => $value) {

			if(in_array($key, $needle)) {
				
				$item[$key] = $value;
				
				if(!$subcat AND is_array( $value['children'] ) ) {
					unset($item[$key]['children']);
					$this->recursive_array_search($needle, $value['children'], $subcat, $item);
				}

			} elseif (is_array( $value['children'] ) ) {
				$this->recursive_array_search($needle, $value['children'], $subcat, $item);
			}
		}
		
		return $item;
	}

	function build_cat_menu( $matches=array() ) {
		global $cat_info, $config;

		if(!count($cat_info)) return "";

		if( !is_array($this->category_tree) ) {
			
			$this->category_tree = $this->build_tree($cat_info);
			
		}
		
		if(!count($this->category_tree)) return "";
		
		$param_str = trim($matches[1]);
		$allow_cache = $config['allow_cache'];
		$config['allow_cache'] = false;
		$catlist = $this->category_tree;
		$cache_id = md5($param_str);
		
		if( $config['category_newscount'] ) $cache_prefix = "news"; else $cache_prefix = "catmenu";
		
		if( preg_match( "#cache=['\"](.+?)['\"]#i", $param_str, $match ) ) {
			if( $match[1] == "yes" ) $config['allow_cache'] = 1;
		}
		
		$content = dle_cache( $cache_prefix, $cache_id );
		
		if( $content !== false ) {
			
			$config['allow_cache'] = $allow_cache;
			return $content;
		
		} else {
			
			if( preg_match( "#subcat=['\"](.+?)['\"]#i", $param_str, $match ) ) {
				
				$subcat = trim($match[1]);
				
				if($subcat == "yes") $subcat = true; else $subcat = false;
	
			} else $subcat = true;
			
			if( preg_match( "#id=['\"](.+?)['\"]#i", $param_str, $match ) ) {
	
				$temp_array = array();
		
				$match[1] = explode (',', $match[1]);
		
				foreach ($match[1] as $value) {
		
					if( count(explode('-', $value)) == 2 ) $temp_array[] = get_mass_cats($value);
					else $temp_array[] = intval($value);
		
				}
		
				$temp_array = implode(',', $temp_array);
			
				$catlist= $this->recursive_array_search( explode(',', $temp_array), $catlist, $subcat);
				
				if(!count($catlist)) return "";
				
			}
			
			if( preg_match( "#template=['\"](.+?)['\"]#i", $param_str, $match ) ) {
				$template_name = trim($match[1]);
			} else $template_name = "categorymenu";
	
			$template = $this->sub_load_template( $template_name . '.tpl' );
	
			$template = str_replace( "[root]", "", $template );
			$template = str_replace( "[/root]", "", $template );
			
			if( preg_match( "'\\[sub-prefix\\](.+?)\\[/sub-prefix\\]'si", $template, $match ) ) {
				$prefix = trim($match[1]);
				$template = str_replace( $match[0], "", $template );
			}
			
			if( preg_match( "'\\[sub-suffix\\](.+?)\\[/sub-suffix\\]'si", $template, $match ) ) {
				$suffix = trim($match[1]);
				$template = str_replace( $match[0], "", $template );
			}
			
			if($config['allow_cache']) {
				$template = preg_replace( "'\\[active\\](.+?)\\[/active\\]'si", "", $template );
			}
			
			if( preg_match( "'\\[item\\](.+?)\\[/item\\]'si", $template, $match ) ) {
				$item = trim($match[1]);
				$template = str_replace( $match[0], "{items}", $template );
				
				$template = str_replace( "{items}", $this->compile_menu($catlist, $prefix, $item, $suffix, false, 0), $template );
				
			}
			
			create_cache( $cache_prefix, $template, $cache_id);
			
			$config['allow_cache'] = $allow_cache;
			
			return $template;
		
		}

	}

	function compile_menu( $nodes, $prefix, $item_template, $suffix, $sublevelmarker = false, $indent = 0 ) {
		
		$item = "";
		
		foreach ($nodes as $node) {
			
			$item .= $this->compile_item($node, $item_template);
			
			if (isset($node['children'])) {
				if ( stripos ( $item_template, "{sub-item}" ) !== false ) {
					$item = str_replace( "{sub-item}", $this->compile_menu($node['children'], $prefix, $item_template, $suffix, true, $indent+1), $item );
				} else {
					$item .= $this->compile_menu($node['children'], $prefix, $item_template, $suffix, true, $indent+1);
				}
			}
			
		}
		
		if( $sublevelmarker ) {
			
			$item =  $prefix.$item.$suffix;
			
		}
			
		
		return $item;
	}
	
	function compile_item( $row,  $template) {
		global $config, $category_id;
		
		$category = intval($category_id);
		
		$template = str_replace( "{id}", $row['id'], $template );
		$template = str_replace( "{name}", $row['name'], $template );
		$template = str_replace( "{icon}", $row['icon'], $template );
		$template = str_replace( "{url}", $config['http_home_url'] . get_url( $row['id'] ) . "/" , $template );
		$template = str_replace( "{news-count}", intval($row['newscount']), $template );
		
		if($category == $row['id']) {
			$template = str_replace( "[active]", "", $template );
			$template = str_replace( "[/active]", "", $template );
		} else {
			$template = preg_replace( "'\\[active\\](.+?)\\[/active\\]'si", "", $template );
		}
		
	    if(!isset($row['children'])) {
			$template = str_replace( "{sub-item}", "", $template );
			$template = preg_replace( "'\\[isparent\\](.+?)\\[/isparent\\]'si", "", $template );
		} else {
			$template = str_replace( "[isparent]", "", $template );
			$template = str_replace( "[/isparent]", "", $template );
		}
		
		return $template;
		
	}

 

 

Не проверял, но на 10 ветке дле должно работать.

Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...