digitorum.ru

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

Профиль

icq: 4415944

Что такое djem и с чем его едят: выводим содержимое таблицы в grid

DJEM, DJEM 2.0, php

Начнем с того, что я вообще имею в виду под словом "грид". Гридом я буду называть в рамках этой заметке область, где выводится список документов и ее настройки. В документации об этом можно почитать на странице "Шаблоны отображения".

Из phpDjem нам потребуются некоторые классы (DJEMDatabase, DJEMXml, DJEMServer, DJEMGeneric), обязательно убедитесь в том, что все они присутствуют в папке "Главная  – Системные файлы - php" в клиенте (не забудьте их опубликовать). Если они по какой-то из причин отсутствуют, вы можете зайти на сайт CMS DJEM и попросить их вам выслать.

Вернемся к нашим баранам. У нас есть таблица со списком тэгов (tagdict). Нужно вывести ее содержимое в грид.

Для этого нужно сделать несколько простых шагов.

1.       Создаем контент-шаблон

В котором под каждое из полей таблицы создаем отдельное поле (в примере он лежит в документе с путем "settings.contenttemplates.generic_tag").

2.       Создаем плагин.

Плагины для djem лежат в директории "cgi-bin/djem/plugins/".

Сразу скажу о том, что текстовый документ, содержащий код плагина, должен быть оформлен "unix-style". То есть никаких символов "\r"!

Перед тем как что-либо делать, убедитесь, что в этой директории существует файл .htaccess в котором прописано:

order allow,deny
deny from all

 

В указанной выше директории создаем файл generic-tags.php (не забыв выдать ему права на выполнение):

#!/usr/local/bin/php
<?php
	require_once('<['main.system.php.config'].documentRoot><['main.system.php.config']._url>');
	
	$columns = array(
			array(
						'id'		=> true,
						'name'		=> 'tagdict_id',
						'type'		=> 'text',
						'desc'	 	=> 'ID',
						'width'		=> 40,
						'readonly'	=> 1
			)
			,
			array(
						'name'		=> 'tagdict_word',
						'type'		=> 'text',
						'desc'		=> 'Тэг',
						'width'		=> 60,
						'readonly'	=> 1
			)
	);
	
	// Ну и собстввенно work
	$gdb = new DJEMGeneric();
	$gdb->SetTable('tagdict')
		->SetColumns($columns)
		->SetCtpl(<['settings.contenttemplates.generic_tag']._id>)
		->CommandCase();
?>

 

В первой строке указываем путь до интерпретатора (это обязательно), в данном случае я использую php, но можно писать почти на чем угодно.

Массив $columns описывает столбцы в гриде.  Рассмотрим подробнее свойства одной колонки:

<?php
	array(
		'id'		=> true, 			// является ли поле уникальным идентификатором (ОБЯЗАТЕЛЬНО дольно быть int'ом)
		'name'		=> 'tagdict_id',		// название поля в таблице
		'type'		=> 'text',			// тип поля
		'desc'	 	=> 'ID',			// название колонки в гриде
		'width'		=> 40,				// ширина поля
		'readonly'	=> 1				// флаг, отвечающий за то, можно ли будет редактировать запись прямо из грида (вообще это лучше не использовать (и всегда оставлять значение равным 1), проверено на практике - это максимально не удобно)
	)
?>

 

Еще раз остановлюсь на том, что уникальный идентификатор должен быть integer'ом.

Ну и собственно с плагином почти все. Осталось создать инстанс класса DJEMGeneric и закормить его данными, что мы и делаем на последних строках.

3.       Изменяем свойства папки.

В свойствах папки, в которой нужно отобразить список документов, выставляем настройки отображения согласно скриншоту.

Профит . Если все сделано верно, то в папке, вместо списка документов, будет отображаться содержимое таблицы.