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 Если вы хотите отблагодарить, то лучшей благодарностью для нас будет поставить кнопку. вот код:
(5) Где хранить картинки к оформлению? Там же где и обычно. То есть, они должны лежать в директории htdocs/images/, а обращаться вы к ним должны по относительному урлу "/images/". То есть, если вы хотите прописать картинку htdocs/images/head.gif в файл template/header, то вам достаточно написать

, а картинку закачать в директорию 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} То есть - вы указываете два первых столбца - и получаете третий. Выражение (точка) "." позволяет указать третий и второй и получить первый. Пример:
= {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