digitorum.ru

Как меня найти

Профиль

icq: 4415944

Что такое djem и с чем его едят: Оператор template

DJEM 2.0, djemscript

Узнал, что в CMS DJEM есть такая замечательная вещь (не прошло и 4х лет), как оператор template. В документации по этому поводу не написано ничего, ну и ладно - мы сами как-нибудь.

Что вообще это такое и зачем оно нам надо?

Оператор template позволяет наследоваться от родительского дизайн-шаблона и заменять в нем размеченные блоки. Пока наверное не очень понятно, поэтому приведу простой пример.

У нас есть шаблон с ID 1601:

<html>
	<head>
		<title>Шаблон <#_name#></title>
		<template name="tpl_part:meta"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></template>
	</head>
	<body>Привет "<template name="tpl_part:name">GUEST</template>"!</body>
</html>

 

В нем я выделил 2 блока, которые потенциально могут быть заменены: "tpl_part:meta" и "tpl_part:name".

Публикация документа с этим дизайн-шаблоном в результате даст такой html:

<html>
	<head>
		<title>Шаблон TPL1</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	</head>
	<body>Привет "GUEST"!</body>
</html>

 

Что есть ожидаемо.

Теперь создадим новый дизайн-шаблон (ID 1602), который наследуется от дизайн шаблона с ID 1601.

<template extends="1601">
<template name="tpl_part:name">DIGITORUM</template>

 

В этом дизайн-шаблоне описан только блок "tpl_part:name", который нужно заменить.

В результате публикации документа с этим (ID 1602) шаблоном html будет таким:

<html>
	<head>
		<title>Шаблон TPL2</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	</head>
	<body>Привет "DIGITORUM"!</body>
</html>

 

То есть в результирующем html был заменен только переопределенный блок "tpl_part:name", все остальные блоки остались без изменения.

Что самое приятное - эта конструкция так же работает при использовании метода eval, что дает нам очень много интересных возможностей, но об этом в другой раз .

Возможно будет интересно: