Начнем с того, что я вообще имею в виду под словом "грид". Гридом я буду называть в рамках этой заметке область, где выводится список документов и ее настройки. В документации об этом можно почитать на странице "Шаблоны отображения".
Из phpDjem нам потребуются некоторые классы (DJEMDatabase, DJEMXml, DJEMServer, DJEMGeneric), обязательно убедитесь в том, что все они присутствуют в папке "Главная – Системные файлы - php" в клиенте (не забудьте их опубликовать). Если они по какой-то из причин отсутствуют, вы можете зайти на сайт CMS DJEM и попросить их вам выслать.
Вернемся к нашим баранам. У нас есть таблица со списком тэгов (tagdict). Нужно вывести ее содержимое в грид.
Для этого нужно сделать несколько простых шагов.
В котором под каждое из полей таблицы создаем отдельное поле (в примере он лежит в документе с путем "settings.contenttemplates.generic_tag").
Плагины для 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 и закормить его данными, что мы и делаем на последних строках.
В свойствах папки, в которой нужно отобразить список документов, выставляем настройки отображения согласно скриншоту.
Профит . Если все сделано верно, то в папке, вместо списка документов,
будет отображаться содержимое таблицы.