Отложенные функции в PHP. На примере реализации отложенных функций для title, keywords, description как в 1c-Bitrix.

Отложенные функции в PHP. На примере реализации отложенных функций для title, keywords, description как в 1c-Bitrix.

Записки программиста

Отложенные функции предназначены для вывода нужных функций и алгоритмов выше по коду, чем там где они были вызваны.

Разработчики на 1c-Bitrix, как правило, хорошо знакомы с этой ситуацией, а все потому, что данная cms использует файловую систему структуры сайта. Чтобы для каждой страницы была возможность указывать свои title, keywords и description в мета-тегах, были реализованы отложенные функции. То есть, мета-теги запускаются непосредственно в контентной части страницы, но устанавливаются в шапке сайта. Данная технология очень важна для оптимизации сайта.

Давайте рассмотрим работу функций на примере, кстати, эта технология используется на нашем сайте:


	<?
		function setTitle($title,$keys,$desc){	//отложенная функция, принимающая 3 переменные, указанные в body
			$out = ob_get_contents();
			ob_end_clean(); 	//очищаем буфер
						//и продолжаем код после "setTitle('титл','ключи,ключ,ключики','титл с ключами')"
			echo "<title>".$title."</title>";
			echo "<meta name='keywords' content='".$keys."'>";
			echo "<meta name='description' content='".$desc."'>";
			echo $out;		//выводим все, что было до "setTitle('титл','ключи,ключ,ключики','титл с ключами')"
		}
	?>
	<html>
		<head>
			<?ob_start();?>		//запускается буферизация, 
		</head>
		<body>
			<?setTitle('титл','ключи,ключ,ключики','титл с ключами');?> 
		</body>
	</html>
				

В итоге получаем код, так, как надо, мета-теги в head:


	<html>
		<head>
			<title>титл</title>
			<meta name="keywords" content="ключи,ключ,ключики">
			<meta name="description" content="титл с ключами">	
		</head>
		<body>
					
		</body>
	</html>
				

Как видите, мета-теги прописались в head несмотря на то, что мы указали их в body. В этом и есть смысл использовать отложенные функции на php, чтобы устанавливать свои определенные мета-данные на отдельной страницы, НАПРИМЕР, что ОЧЕНЬ важно для сео-продвижения.

Примерно такая реализация используется в cms 1c-Bitrix для указания мета-тегов с помощью некоторых функций.