Forumlar / National / Russian / Идеи / новый скин админки

Sergey
#34482 2012-05-31 13:52

Страница, как шаблон. Для этой цели я использую так называемый мной тег-процессор. Соответствующим заключительным этапом я предоставляю возможность юзеру вставлять теги в текст страницы.

формат: {{ассоциация или имя тега}возможная замена сообщения}

Для чего нужна ассоциация. Она позволяет просто написать:

Размер телевизора по диагонали {{ДИАГОНАЛЬ}}

что даст отображение:

Размер телевизора по диагонали 61см

механизм позволяет интерпритировать ассоциацию с конкретным экстраполем.

Вот и получается, что наряду с категорией надо вводить и ассоциацию.

Вот пример функции для Генуи:

function тег_процессор			//	функция процессора тегов вида {{тег}аргумент замены для тегов, которые включают HTML тег А}
								//  аргумент замены для тегов, которые включают HTML тег А =значение необязательно
								//	В том случае, если имеется указание на то, что тег содержится внутри другого тега,
								//	то тогда из тега должен быть извлечен аргумент HTML параметр hreff и зменнет аналогичным из тега
	(
	$входная_строка=FALSE,		//@param string	- обрабатываемая строка
	$тег_в_якоре=FALSE,
	$tags
	)
{
global $cfg;

if	(empty($входная_строка)) return $входная_строка;

$голова='';
$тело=$входная_строка;

while(TRUE)
	{
	$найден_тег=FALSE;
	$это_меняем=FALSE;
	$это_заменяем=FALSE;
	$часть=preg_split('/\\{\\{\\s*([a-zA-Z0-9_'.$cfg['alpha_national'].']*)(\\})/ui', $тело,2,PREG_SPLIT_DELIM_CAPTURE); 
 	if	(count($часть) == 4)
		{
		$голова.=$часть[0];
		$найден_тег=$часть[1];
		$тело=$часть[3];
		$аргумент_замены=preg_split('/(\\})/ui', $тело,2,PREG_SPLIT_DELIM_CAPTURE);
		if	(count($аргумент_замены) != 3) break;
		$тело=$аргумент_замены[2];
		if	(empty($найден_тег) or !isset($tags->vars[$найден_тег]))
			{
			$голова .="{?{".$найден_тег."}?}";
			continue;
			}
        $найден_тег=$tags->vars[$найден_тег];
		$это_меняем=TRUE;
		if	(!$тег_в_якоре)
			{
			$ищем_якорь_в=$найден_тег;
			$это_заменяем=$часть[0];
			while(TRUE)
				{
				$порция=preg_split('/a\\s*(href)*\\s*\\=/ui', $ищем_якорь_в,2,PREG_SPLIT_DELIM_CAPTURE);
    			if	(count($порция) == 3)
					{
					if	(empty($порция[2])) break;
					    else $ищем_якорь_в=$порция[2];
					}
               	else	{$это_заменяем=FALSE; break;}
               	}
			}
		else if (!empty($аргумент_замены[0]))
				{
				$порция=preg_split('/(\>)/ui', $найден_тег,2,PREG_SPLIT_DELIM_CAPTURE);
                if  (count($порция) == 3)
                    {
                    $замена=preg_split('/(<\\/a|A>)/ui', $порция[2],2,PREG_SPLIT_DELIM_CAPTURE);
                    $найден_тег=$порция[0].'>'.$аргумент_замены[0].'</A>';
                    }
				}
        if	($это_меняем)
        	{
         	$голова .= $найден_тег;
        	}
		}
     	else break;
return $голова.$тело;
}
www.cotonti.mobi
Bu gönderi Sergey tarafından düzenlendi (2012-05-31 14:11, 12 yıllar önce)