|
|
Как начать использовать ReJump. И получить удовольствие.
Основы движка 1 / Основы движка 2.
(1) Зачем нужен ReJump?
|
| |
Возможно вам нужо быстро построить сайт. Как например всегда хотелось мне. И вам нужен иструмент, который позволит это сделать быстро и качественно. Это - ReJump. У него есть свои ограничения (пока есть). То есть вы не сможете построить сильно посещаемый сайт,
Скорее это движок для средних и мелких сайтов.
Он достаточно концептуален, этот движок, и вам будет интересно в нем разбираться. Как-то так получилось, что я люблю теорию программирования и люблю всякие теоретические вещи. ReJump задумывался как платформа, он очень забавный. В частности - построен на трехзвенных ссылках. Поэтому вы можете изучать этот движок и в том случае, если любите головоломки либо красивые вещи.
Движок строится на шаблонах. Что это значит? Это значит, что раздел /templates - основополагающий. В этой директории на своем сервере вы найдете всю логику сайтов. Стандартный сайт это движок + /templates.
|
|
(2) Базовая настройка ReJump
|
| |
Для того, чтобы настроить реджамп, вы должны положить в директории htdocs (или любой другой где у вас лежит файл index.html) файл .htaccess следующего содержания:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /cgi-bin/rejump_db.pl?0 [L]
Эта нехитрая конструкция на самом деле очень мощная.
Она позволяет запускать движок для всех тех случаев, когда нет файла для выдачи. То есть если у вас нет файла index.html, то корень вашего сайта выдаст движок.
Эту конструкцию мне помогли создать зарубежные пользователи (АМ).
|
|
(3) Базовая конструкция ReJump
|
| |
<@подшаблон@>
Эта штука вставит один шаблон в другой.
Пример:
У вас есть шаблон index, лежащий в файле /templates/index (который, как мы помним показывается вместо файла index.html). Вы хотите в этот шаблон /templates/header, то вам нужно написать
<@header@>, если же вы хотите в этот шаблон добавить templates/footer, то нужно написать <@footer@>
|
|
(4) Базовая благодарность ReJump
|
| |
Если вы хотите отблагодарить, то лучшей благодарностью для нас будет поставить кнопку.
вот код:
<a href="http://rejump.com" title="Сделано на ReJump">
<img src="http://rejump.com/i/rejump88x31.gif" border=0>
</a>
|
|
(5) Где хранить картинки к оформлению?
|
| |
Там же где и обычно.
То есть, они должны лежать в директории htdocs/images/, а обращаться вы к ним должны по относительному урлу "/images/".
То есть, если вы хотите прописать картинку htdocs/images/head.gif в файл template/header, то вам достаточно написать <img src="/images/head.gif">, а картинку закачать в директорию images/.
|
|
(6) Как написать компонент к ReJump?
|
| |
Это возможно, об этом я напишу чуть позже подробнее.
Для начала:
- Нужно сложить все в одну директории в /templates (например /templates/modul_one)
- Нужно создать инсталлер, который породит объект в базе данных, это
может быть скрипт в формате ReJump в поддиректории /templates/modul_one/actions
- Нужно все другие скрипты тоже положить в /templates/modul_one/actions
- Нужно написать инструкцию для пользователей, в которой рассказать о том, как сочетать их уже существующие объекты с объектами порождаемыми вашим модулем.
|
|
(7) Какова теория ReJump?
|
| |
ReJump построен на теории активных шаблонов. Вся логика сайта скрыта в этих шаблонах. База данных при этом служит хранилищем данных, но именно из шаблонов происходит управление базой данных. С одной стороны кажется, что это делает визуализацию основной.
|
|
(8) Какие команды есть в action скриптах?
|
| |
В системе ReJump есть очень мало команд, и вам легко будет их выучить:
add() /добавление объекта/
синтаксис:
имя=add();
где имя - это имя переменной в action скрипте ReJump.
del() /удаление объекта/
синтаксис:
del(номер объекта);
где номер объекта - число, говорящее о том, какой объект удалять
(интересно, что у вас должны быть права, на удаление этого объекта,
система проверит эти права автоматически).
Создать объект может каждый, а вот удалить - совсем нет :).
Заметим, что после каждой команды ставится - ; (точка с запятой).
update() /обновление объекта/
синтаксис:
update(номер объекта,имя поля, значение);
где имя номер объекта - число
где имя поля - имя поля в базе данных, возможные варианты (Value,Value_Int,Text)
где:
Value - строковое поле
Value_Int - числовое поле
Text - текстовое поле
В каждом объекте с каким-то номером (номерация общая для всего сайта), могут быть заполнено как все три поля, так и какое-то одно. То есть в полях Value, Value_Int, и Text может храниться разная информация.
upload() /загрузка изображения/
синтаксис:
upload(номер объекта,имя поля с файлом);
пример upload(photo_id,img_rf);
photo_id повявляется раньше в скрипте как photo_id=add();
img_rf появлятся раньше в форме ввода как
Где номер объекта - число.
Имя поле с файлом, это input поле, типа file с файлом, нужно только следить за тем, чтобы поле имело тип enctype='multipart/form-data', потому что иначе не получится закачать на сервер изображение.
addLink() /создание ссылки между объектами/
синтаксис:
addLink(номер объекта один,номер объекта два, номер объекта три);
Более подробная информация будет в описании системы ссылок.
login() /вход польователя/
синтаксис:
login(номер объекта пользователя,пароль для входа);
либо
синтаксис:
login(номер объекта пользователя,пароль для входа,1);
Где "номер объекта пользователя" - номер ассоциированный с пользователем,
к нему по традиции привязан объект с паролем. Система входит в режим администратора, сверяет пароль и устанавливает куки на пользователя.
Если указан последний парметр 1, то вход осуществляется на постоянной основе, то есть на год.
logout() /выход польователя/
синтаксис:
logout();
заметим, что параметров нет, просто убирается куки, которая была установлена на текущего пользователя.
acronim() /назначение имени объектв/
синтаксис:
acronim(номер объекта,назначаемое имя,"сообщение об ошибке");
именованные объекты используются в системных целях, чтобы формулы вычисления
списков выглядели лучше, и для пользователей, логин - это имя пользователя, поэтому для регистрации пользователя сначала создается объект, потом именуется и привязывается пароль. В имени объекта используются маленькие латинские буквы и цифры. Такова традиция.
|
|
(9) Как получить данные из базы данных?
|
| |
Данные из базы данных получаются следующими конструкциями.
<&номер?Value> - строка
<&номер?Value_Int> - цифровое значение
<&номер?Text> - текст (до 64 кб)
<&номер?Img> - адрес картинки
<&номер?Acronim> - имя объекта (если объект именованный)
|
|
(10) Как получить список связанных объектов?
|
| |
Для этого служит конструкция:
<&номер объекта один:номер объекта типа связи>
либо:
<&номер объекта три.номер объекта типа связи>
Как легко заметить, две конструкции отличаются оператором ":" (двоеточие) или "." точка.
Поясним все на примере, вот таблица ссылок:
| id1 | id2 | id5 |
| id1 | id2 | id23 |
| id2 | id22 | id23 |
| id4 | id2 | id1 |
| id4 | id22 | id23 |
Тут используются обозначения id1, просто как обозначение некоторого числа. Например 102223 - что является номером объекта.
Вот запросы и их выдача:
<&id1:id2> = {id5,id23}
<&id4:id22> = {id23}
То есть - вы указываете два первых столбца - и получаете третий.
Выражение (точка) "." позволяет указать третий и второй и получить первый.
Пример:
<id23.id22> = {id2,id4}
|
|
(11) Как передать парметр в шаблон?
|
| |
Для этого служит конструкция:
/имя шаблона/число
В этом случае в шаблоне конструкция $1 выведет переданный номер, а конструкция <$1?Value> выведет значение Value для переданного объекта. Подобный способ вызова шаблонов работает и при первом их вызове, то
есть из адресной строки. Набрав /news/10, вы вызовете шаблон news, и передадите в параметре $1 число 10, которое может означать как номер объекта, так и что-то другое.
|
|
(12) Как оформить список связанных объектов в шаблоны?
|
| |
Для этого служит конструкция:
<@номер объекта один: номер объекта типа связи<имя шаблона/#1@>
В данном случае для каждого из объектов списка по очереди будет вызван шаблон. #1 - передает объект из списка, то есть его фактический номер, #2 передает номер порядовый, это может пригодиться, если вы хотите вывести номера в списке, или чередовать серый и белый фон.
<@номер объекта один: номер объекта типа связи<имя шаблона/#1/$1@>
Тут передается номер объекта сверху и номер объекта в списке. Напоминаем, что $1 позволяет в шаблоне обратиться к объекту переданному при вызове первым, а $2 позволяет обратиться к объекту переданному вторым. Стандартный вызов шаблона, или страницы - шаблон/id1/id2, где после задания шаблона, задаются чиста связанные с объектами в системе. При этом в шаблоне $1 будет равно id1, а $2 будет равно id2. Допускаются следующие возможные значения id1 и id2 - число, либо имя объекта (если объект именнованный).
В более общем виде:
<@номер объекта один: номер объекта типа связи<вызов шаблона@>
|
|
(13) Как узнать залогиненного пользователя?
|
| |
Для есть выражение:
<&GEN_USER@>
В таком виде оно выводит номер объекта связанного с пользователем. Но с ним применимы все те же методы, что и с обычными объектами.
<&GEN_USER?Acronim@>
Выведет имя объекта, а соответственно и имя пользователя.
<&GEN_USER:password?Value@>
Выведет пароль пользвателя, если вы администратор и имеете право чтения на этот объект, либо "нет доступа", если вы обычный пользователь.
Вы можете привязывать к объекту пользователя любую информацию и потом запрашивать ее...
Тогда у вас
<&GEN_USER:url?Value@>
может выводить информацию о сайте пользователя, а <&GEN_USER?Img@> быть его юзерпиком.
|
Основы движка 1 / Основы движка 2.
|