ReJump

 

Описания:

 
 



Форум



Основы движка 1



Основы движка 2



Школа ReJump-а





Скачать:

 
 


Движок



Движок old


Утилиты


Bomber игра для сайта




Как начать использовать 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?

 

Это возможно, об этом я напишу чуть позже подробнее.

Для начала:

  1. Нужно сложить все в одну директории в /templates (например /templates/modul_one)
  2. Нужно создать инсталлер, который породит объект в базе данных, это может быть скрипт в формате ReJump в поддиректории /templates/modul_one/actions
  3. Нужно все другие скрипты тоже положить в /templates/modul_one/actions
  4. Нужно написать инструкцию для пользователей, в которой рассказать о том, как сочетать их уже существующие объекты с объектами порождаемыми вашим модулем.

(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(номер объекта,назначаемое имя,"сообщение об ошибке");
именованные объекты используются в системных целях, чтобы формулы вычисления списков выглядели лучше, и для пользователей, логин - это имя пользователя, поэтому для регистрации пользователя сначала создается объект, потом именуется и привязывается пароль. В имени объекта используются маленькие латинские буквы и цифры. Такова традиция.

(8b) Как организовать вызов создающего кода из формы?

  <form id="contacts-form" action="/" method="post"> <input type="hidden" name="a" value="input"> <input type="hidden" name="ok_tpl" value="main-ok"> <input type="hidden" name="err_tpl" value="article-add"> <input type="hidden" name="act_tpl" value="actions-add_article"> <input type="hidden" name="res_link" value="/articles"> <label>Заголовок:</label> <input type="text" name="title" value=""/> <label>Анонс:</label> <textarea name="brief"></textarea> <label>Текст:</label> <textarea name="full_text"></textarea> <input type=submit value=' Разместить статью '> </form>

Опишем параметры указанные как hidden, скрытые

<input type="hidden" name="ok_tpl" value="main-ok"> /шаблон успешного завершения операции/

Вместо main-ok - поставьте путь к своему шаблону. В данном случае используется файл templates/main/ok. Вызывается только тогда, когда не задан "res_link" (смотри ниже).

<input type="hidden" name="err_tpl" value="article-add"> /шаблон завершения операции с ошибкой/

Вместо article-add - поставьте путь к своему шаблону. Обычно это та же страница, на которой находится форма. Через элемент <&i.err_mes> вы можете посмотреть, что случилось при отработке скрипта. Также, через конструкции <&i.text>

<input type="hidden" name="act_tpl" value="actions-add_article"> /путь к исполняему скрипту/

Именно в этом скрипте создаются объекты, ссылки между объектами и прочее. Можно передавать информацию через 0, 0,а можно через конструкции $i.title, $i.full_text, $i.brief

Пример скрипта, который создает новость + привязывает объект с анонсом:

add_acticle=add(); add_acticle_brief=add(); addLink(-1,-1,add_acticle); addLink(add_acticle,-1,-1); update(add_acticle,Value,$i.title); update(add_acticle,Text,$i.full_text); addLink(add_acticle,-1,add_acticle_brief); addLink(add_acticle_brief,-1,-1); update(add_acticle_brief,Text,$i.brief);

<input type="hidden" name="res_link" value="/articles"> /ссылка для редиректа после создания объеата/

После того, как скрипт успешно отработает, пользователь будет перенаправлен на эту страницу. Если указан res_link, то main-ok не отрабатывается (смотри выше).

(8a) Как узнать с какими ошибками отработал код?

  Вцелом вызов выглядит следующим образом:
<&i.err_mes> /сообщение об ошибке/

Следует добавить, что эта конструкция сработает после того, как с ошибкой отработает action скрипт. Стандартные ошибки: ограничения по доступу, не существующие объекты, которые получаются черзе акронимы (по именам).

(9) Как получить данные из базы данных?

  Данные из базы данных получаются следующими конструкциями.

<&номер?Value> - строка

<&номер?Value_Int> - цифровое значение

<&номер?Text> - текст (до 64 кб)

<&номер?Img> - адрес картинки

<&номер?Acronim> - имя объекта (если объект именованный)

(10) Как получить список связанных объектов?

  Для этого служит конструкция:

<&номер объекта один:номер объекта типа связи>

либо:

<&номер объекта три.номер объекта типа связи>

Как легко заметить, две конструкции отличаются оператором ":" (двоеточие) или "." точка.

Поясним все на примере, вот таблица ссылок:
id1id2id5
id1id2id23
id2id22id23
id4id2id1
id4id22id23

Тут используются обозначения 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.




© 2002-2009 Алексей Мась / ReJump