CMS Eleanor - Поиск
Полная версия этой страницы: Официальный форум Eleanor CMS » Парсер тегов RC5
Официальный форум Eleanor CMS » Поддержка пользователей системы Eleanor CMS » Разработка системы
Djadka
Написал тут что бы теги при добавлени статьи подсвечивались, выкладываю на ваш суд. Добавить надо в файл /classes/other/class_editor.php
$text = $this->_ParseTag($text);

Примерна на строки 265-266 перед return $text;
и после любой функции добавить ниже функцию.
private function _ParseTag($text)
	{
		set_time_limit(300000);
		$tags=$this->Mainclass->Db->Query('SELECT `name` FROM `f_news_tags`',__file__,__line__);
		$g = false;
		$td = NULL;
		$m = $ma = $update = array();
		
		#Теги, приходиться обрабатывать
		while($t=$this->Mainclass->Db->Fetch_row($tags))
		{
			
			(string)$t[0]=strtolower((string)$t[0]);# в нижний регистр всё
			// if(empty($t[0])) continue;
			if(strcasecmp($td,$t[0])!=0)# Сраниваев строки с предыдущим, а то бывает повторяется
			{
				
				$tag[]=str_replace(array('“','”','„','"'), '',(string)$t[0]);
			}
			$td=$t[0];//Записываем для сравнения с предыдущим
		}

		$tag = array_unique($tag);//По сути то же отрезаем повторяющиеся
	

		foreach($tag as &$t)
		{
			if(stripos($text, $t)!==false)
			{
				$leng = strlen($t);
				$url_tag =urlencode($t);

				
				preg_match_all('/.{0,20}'. $t .'.{0,20}/i', $text, $ma, PREG_OFFSET_CAPTURE);
				

				if (!empty($ma)) {
					
					foreach($ma[0] as $ke => &$v) {
						if(preg_match('/title=.*'.$t.'.*/i',$v[0])) {
							unset($ma[0][$ke]);
							continue;
						}

						if(preg_match('/alt=.*'.$t.'.*/i',$v[0])) {
							unset($ma[0][$ke]);
							continue;
						}
						
						if(preg_match('/src=.*'.$t.'.*/i',$v[0])) {
							unset($ma[0][$ke]);
							continue;
						}

						if(preg_match('/href=.*'.$t.'.*/i',$v[0])) {
							unset($ma[0][$ke]);
							continue;
						}
					}

					unset($v, $ke);
					
					if (!empty($ma)) {
					
						foreach($ma[0] as $k => &$v) {
							$word = substr($text, (int)$v[1]+20, $leng);
							$left = substr($text, (int)$v[1]+19, 1);
							$right = substr($text, (int)$v[1]+20+$leng, 1);

							if(!preg_match('/[\w]/',(string)$left))
							{
								if(!preg_match('/[\w]/',(string)$right))
								{
									$update[$k] = $v[0];
									$up = '<a href="news/tag_'.$url_tag.'.html">'.$word.'</a>';
									$m[$k] = mb_eregi_replace($t, $up, $v[0]);
									$g = true;
								}
							}
						}
						
						unset($v, $ke);
					}
				}
			}
		}
		
		if($g) {
			return str_replace($update,$m,$text);
		} else return $text;
	}
Loader
Цитата (Djadka @ 2020-11-29 23:05)
Примерна на строки 265-266 перед return $text;
и после любой функции добавить ниже функцию.

В какой файл? Видимо в класс какой-то...
И он всю базу тегов перерабатывает судя по всему?
Цитата (Djadka @ 2020-11-29 23:05)
Написал тут что бы теги при добавлени статьи подсвечивались, выкладываю на ваш суд. Добавить надо

Опять же, куда добавить-то? :blink:
Djadka
Да всю базу перабатывает, сейчас надо оттестить и сделаю файл уже который пропарсит уже имеющие новости. Изменил первую новость
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.