ReJump

 

Описания:

 
 



Форум



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



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



Школа ReJump-а





Скачать:

 
 


Движок



Движок old


Утилиты


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




Как продолжать использовать ReJump. И получить удовольствие.

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

(+1) Какие виды конструкций есть в ReJump?

  В ReJump есть следующие виды констукций

$1 или $1

Выводит параметр переданный в шаблон.

<&выражение>

Вычисляет выражение. Например <&$1?Value> выводит строку, которая содержится в объекте, который передан в виде первого параметра в шаблон.

[&выражение]

Вычисляет выражение.

Например: [&1+1] выведет 2.

А [&<&$1?Value_Int>+<&$2?Value_Int>] из параметров 1 и 2 получит номера объектов, из объектов получит числа, потом эти числа сложит.

В арифметических выражениях допускаются операции +(плюс),-(минус),*(умножить),/(разделить),%(процент) и скобки ().

<@шаблон@>

Вставляет шаблон. При этом параметры шаблону можно передавать через косую. Параметры - числовые, либо имена объектов. <@шаблон/параметр1/параметр2@>

<@выражение<шаблон@>

Вставляет последовательность шаблонов. Выражение вычисляет группу, и для каждого элемента группы вставляется шаблон. Пример <@$1:news<news_t/#1@>, где первый элемент находит именованные ссылки (с типом news) ведущие с объекта переданного как $1. Как только список найден (допустим в нем 5 элементов), для каждого из них вызывается шаблон news_t, где первым параметром через #1 передается номер объекта из списка. То есть если в списке допустим были объекты, 101, 102 и 103, то эта запись равноценна трем вставкам шаблона попроще <@news_t/101@> <@news_t/102@> <@news_t/103@>.

То есть:

<@$1:news<news_t/#1@> =
<@{101,102,103}<news_t/#1@> =
<@news_t/101@> <@news_t/102@> <@news_t/103@>

При этом:

<&$1:news> = {101,102,103}

(+2) Какие виды операций допустимы с последовательностями в ReJump?

 

Сортировка

Для этого используется параметр sort, наример <@$1:news?sort=sort_news_cnt<news_tpl/#1>. Где sort_news_cnt, это шаблон, который вызывается для каждого объекта, по примеру вызова <@sort_news_cnt/111@> и выводит число, которое заносится

Обращенная сортировка

<@$1:news?sort=sort_news_cnt&desc<news_tpl/#1> - просто добавьте desc. Кстати, по умолчанию объекты сортируются по id.

Ограничение

<@$1:news?sort=sort_news_cnt&on_page=20&skip=10<news_tpl/#1> - тут сразу два параметра, on_page - количество в выборке, и skip = отступ. Сортировка оставлена для того, чтобы вы о ней не забывали.

Выбор случайного элемента

Добавляем к списку ?Rand. Пример: <&in_cinema.film_is-hit_of_week.in_group?Rand>, выводит случайный ID из спика фильмов хитов недели.

(+3) Как работать с датами?

 

?Time

Наример <&$1?Time> покажет время создания объекта, где $1 - это объект переданный первым в шаблон.

?Date - получает дату

Например <&$1?Date> покажет дату создания объекта, где $1 - это объект переданный первым в шаблон.

Cуществуют также функции: ?Mod_Time, и ?Mod_Date которые выполняют какие-то недокупментированные функции. Вероятно это - альтернативное время.

С помощью невидимых глазу ссылок можно получить из объекта, объекты дат в которые он создан.

?Time_Num - возвращает количество секунд с 1980 года, до создания объекта

Пример:
<&$1?Time_Num> или <&222?Time_Num>, где 222 - это номер объекта для примера.

?Mod_Time и ?Mod_Date - выводят соответственно время модификации, а не создания

?Mod_Time_Num - количество секунд с начала 1980 года до время модификации.

(+3a) Работа с календарем

 

<&TODAY> - укажет на объект календаря, он во многом - виртуален, этот объект, но вы можете привязывать к нему события

<&номер объекта даты:wday> - вернет вам день недели

Можно использовать так <&$1:wday> для объекта, переданного первым в шаблон, а можно так: <&TODAY:wday> - покажет вам день недели сегодня, как цифру от 1 до 7, то есть понедельник = 1

Можно использовать так <&$1:day> для объекта, переданного первым в шаблон, а можно так: <&TODAY:mday> - покажет вам день недели сегодня, как цифру от 1 до 7, то есть понедельник = 1 Также существуют: next, prev, month, day, month:year (то есть :year применимо уже к объектам типа даты-месяца, а не даты-дня), month:day - вернет вам все даты-дни этого месяца

(+4) Как при закачке изображений проверить, было ли оно закачано?

 

Используйте следующую конструкцию:
<IF $i.img_fx 101>

Пример:
<IF $i.img_fx 101>
upload($1,img_fx);
<ELSE 101>
<ENDIF 101>

Где img_fx - имя поля типа file в html форме закачки, а $1 в данном случае - просто пример объекта. Как видно при закачке имя поля указывается как имя.

(+5) Как при отображении объектов проверить, закачана ли картинка?

 

Используйте следующую конструкцию:
<IF <&$1?Img> 202>

Пример:
<IF >&$1?Img> 202>
upload($1,img);
<ELSE 202>
<ENDIF 202>
//это кусок шаблона отображения

$1 в данном случае - просто пример объекта. Как видно при закачке имя поля указывается как имя.

101 и 202 в предыдущих примерах всего лишь позволяют свызывать вместе операторы <IF>, <ELSE> и <ENDIF>

(+6) Как организовать поиск?

 

1. Вставьте на титул форму поиска:

<form action="/search-film/">
<input type=text name=search value="$SEARCH">
<input type=hidden name=search_id1 value="<&main>">
<input type=hidden name=search_id2 value="<&film>">
<input type=submit value="Найти">
</form>

2. Вставьте в шаблон search/film/index для вывода: <@search<film-in_list/#1@> - ищет фильм

при этом в браузере вызов этого шаблона выглядит так:
http://kinoman.com.ua/search-film/?search=%E4%F0%F3%E3&search_id1=12&search_id2=13

3. Вам остается оформить файл film/in_list так, чтобы он выводил фильм в списке.

Если оформить вывод в виде:

<table>
<@search<film-in_list/#1@>
<table>

То файл film/in_list следует начинать с <tr>, а заканчивать c </tr>

(+7) Как организовать листание длинных списков?

 

SKIP и ON_PAGE

Что это означает?

Что существуют переменные $SKIP и $ON_PAGE, в которые передаются параметры сверху, из адресной строки, например ?skip=44&on_page=10.

Существует способ указать в списке, что нужно показывать не весь список а его часть, если вы передаете туда переменную $SKIP, а вместо $ON_PAGE используете просто 10, то обращение к такому списку может выглядеть так:

<center>
<@$1.reply?skip=$SKIP&on_page=10&prev<<a href="/reply-list/$1/?skip=$PREV_SKIP">< Предыдущие</a>@>    
<@$1.reply?skip=$SKIP&on_page=10&next<<a href="/reply-list/$1/?skip=$NEXT_SKIP">Следующие ></a>@> <br>
<@$1.reply?skip=$SKIP&on_page=10&of<$OF_THIS из $OF_CNT@>
</center>
<ENDIF 1>

<@$1.reply?skip=$SKIP&desc&on_page=10<reply-one/#1@>

Тут мы видем использование сразу нескольких конструкций

Везде используется одна база для списка $1.reply, которая получает список отзывов на объект, переданный в переменной $1.

При использовании парметров ?prev и ?next вызывается вставка шаблона, в котором формируется ссылка "Предыдущие" и "Следующие", при этом в $PREV_SKIP и в $NEXT_SKIP передаются смещения на следующей и на предыдущей страницах.

Потом идет вызов параметра ?of который выводит значения $OF_THIS и $OF_CNT, а именно диапазон значений на этойт странице, например 1-10, и общее количество объектов в выборке.

Последняя строка в примере непосредственно формирует вставку подшаблонов в шаблон, для каждого из подобъектов.

(+8) Как получить случайное число?

 

Такая функция может быть нужна в капче.

используется конструкция
$rand.10000 которая выводит число от 1 до 10000 включительно (на самом деле от 0 до 9999. Число 10000 - тут пример, у вас может быть любое, ваше число.

Пример применения
<@main-code/$rand.10000@>

(+9) Как организовать голосование

 

Иногда вам захочется посчитать голоса с уникальных IP адресов.

используется конструкция
<$IP_SLASH> и Выводит адрес объекта, если нет то -1, либо акроним, имя, такое как "_123_12_22_33", что позволяет вам создать для каждого IP адреса свой объект и привязать к нему всю его деятельность, такую как голосование.

Пример применения:
<IF <&IP_SLASH>=-1 222>
ip_sl=add();
acronim(ip_sl,<&&IP_SLASH>,"такой уже есть");
addLink(vote_a,<&ip_vote>,ip_sl);
<ELSE 222>
addLink(vote_a,<&ip_vote>,<&IP_SLASH>);
<ENDIF 222>

Тут приведен кусок кода, который в случае отсутствия объекта соотносящегося с IP адресом создает его. А после создания привязывает к нему голос от объекта голсования, который в данном скрипте носит имя vote_a.

(+10) Активные (автоматические) функции

 

Для того, чтобы создать автоматические функции, стартуемые при удалении или создании ссылки вам необходимы будут следующие системные объекты action, act_type0, act_type1, act_root, act_obj, act_dot. Их можно легко создать через систему browser, которая поставляется вместе с движком. Смотри меню "Системные объекты".

Такие функции (автоматические) используются для разных вспомогательных операций. Таких как голосование, или высылка пароля. Они могут запускаться от лица любого пользователя (точнее от лица того, кто их создал), в том числе от пользователя admin, который обладает абсолютными правами.

Для создания функции вы должны воспользоваться пунктом меню "Автоматические функции", в системе browser. Необходимо занести тип ссылки. Указывать объекты с какого и на какой идет ссылка - не обязательно.

Все три объекта, с какого, на какой и тип ссылки - будут переданы в скрипт функции под именами. $ID, $Stream_ID, $Type_ID

(+11) Взять один элемент из набора

 

Часто конструкции типа <0:video_element> возвращают больше одного элемента. А нужен только один. В таком случае выручит конструкция <выражение?ID> <0:video_element?ID> вернет только ID первого элемента



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




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