Руководства
Введение в веб-платформу Falcon Space. C чего начать?Мануал для начинающего разработчика Falcon SpaceВидео о создании сайтов на Falcon SpaceВопросы и ответы для тех, кто начал разрабатывать на Falcon SpaceТиповые ситуации для админа-разработчика в панели управления Как создать таблицу на сайте по шагамКак создать форму на сайте по шагамКак создать дашборд в личном кабинете пользователяПример создания системы по учету Кадры (HR) на сайтеКак улучшить свой код - заметки по ревизии кодаКак сделать аналитический отчет или таблицу на сайтеПодробное описание процесса создания формы Обратная связьСоздание системы уведомлений из внешних источников (через API)Как отслеживать историю действий пользователя или историю событий по объекту системыКак сделать отслеживание посещений сайта конкретными людьми?Как сделать перевод сайта на другой язык для нетехнического специалистаКак сделать функционал оценки полезности материалаСоздание из под editor структуры личных кабинетов (роли, страницы)Улучшение адаптивности страниц под мобильные устройстваСоблюдение порядка в проекте в процессе сопровождения сайтаКак считать показатели год-к-году (YoY) в отчете по периодамКак добирать данные по объекту из внешних источников по API
Основа Falcon SpaceОсновные компонентыВозможностиКоммуникация пользователейДизайн, стилизация, юзабилити
Гид по стилям Falcon SpaceРуководство по юзабилити сайтов на Falcon SpaceЭлементы стилизации в разметке страниц кабинетов на Falcon SpaceУправление темами сайта. Как создать новую тему дизайна сайтаКак внедрять готовую верстку в страницуКак внедрить форму настроек внешнего вида сайтаГорячие клавиши Falcon SpaceСоздание своей темы для сайтаОграничения по изменению дизайнаКак сделать дизайн сайта со скругленными элементами (или без скруглений)Как сделать свою верхнюю полоску сайта (customHeader)Как внедрить новый шрифтКак через CSS управлять стилями конкретных страницКак показать элемент увеличенным при наведении (например ячейка таблицы)Изменение стилизации через CSSКак поменять столбцы местами на смартфоне (order-1 order-md-2)Как сделать анимацию иконокАнимация элементов. Как работать с анимациейДобавление анимацииУправление анимацией для форм, таблицКастомные CSS файлы для страницыПанели с тенью и со скруглением Как внедрить свой CSS на каждой странице порталаКак сделать основное меню горизонтальнымКак убрать все тени и сделать дизайн плоскимКастом разметка верхней панели (TopMakeup)Интерфейс кабинета - это не методы репозитория CRUD!Как сделать липкую панель сверху страницыКак сделать основное меню белымВывод справа на странице float панелиКак поменять степень затемнения фона у диалогового окнаУправление иконкой в окне alert справа вверху окнаКак стилизовать иконкуВывод на экран денежных сумм (отображение рублей, валюты) - as-moneyКак увеличить картинку на страницеВизуализация воронки на основе данныхКак сделать модальное окно определенной шириныПанели показа подсказок (для базовых инструкций по странице)Как сделать левое меню по умолчанию свернутым?
Лендинги
Работа с лендингами (lands)Как создать новый лендинг?Как максимально быстро создать лендинг на базе Falcon SpaceКак внедрить лендинг со своим шаблоном и стилямиКак создать сайт полностью на лендингах?Как устроен механизм лендингов внутриКак переместить лендинг на главную страницу (или на любую другую)Как сделать набор типовых лендингов (например, карточки товаров)?Как сделать копию лендинга с другим адресом или перенести лендинг на другой сайтКак использовать много раз одну секцию в разных лендахКак отключить секцию лендинга или менять их порядок на лендингеКак задать высоту/подложку секции лендингаКак для ленда подключить скрипты или CSSКак прописать SEO параметры для лендаКак создать свой шаблон новой секции лендинга?Как редактировать секцию лендингаГде посмотреть список лендингов?Как сделать меню лендинга или меню сайта на лендахКак сделать подстановочными фавикон, seo title у лендингаКак сделать так, чтобы PWA работал для лендингов
Универсальный APIИнтеграции
Подключение к удаленным серверам SQL Server через Linked ServerZapier интеграция на платформе Falcon SpaceПрием платежей через Яндекс.КассуИнтеграция с Робокассой (платежный шлюз)Пополнение средств через Yookassa (Юкасса)Прием платежей на сайте через CloudPaymentsИнтеграция с платежным шлюзом LifePayУведомление от ТБанка по операциям с расчетным счетомИнтернет-эквайринг Тинькоф БанкИнтеграция API DaData.ru подсказки по адресамИнтеграция коллтрекинга МАНГО ОФИС (режим Площадка)Интеграция API Курсы валют Центрального Банка РФИнтеграция API Почта РФИнтеграция API Служба доставки СДЭК (CDEK)Интеграция API Служба доставки Деловые линииИнтеграция API IpGeoBase Город по IP-адресуИнтеграция API DaData.ru Город по IP-адресуКак вычислить расстояние между 2 геоточками через Google MapsКак сделать интеграцию с Мой СкладКак сделать вебхук для передачи данных с Тильды на Falcon SpaceСканирование штрихкодов и QR кодов через камеру смартфонаПолучение данных контрагента по ИННВнедрение подсказок dadata на сайтВывод точек на карте Яндекс. Интеграция с Яндекс КартыИнтеграция с телефонией Zadarma.comПолучение данных о контрагенте - интеграция ЗаЧестныйБизнесИнтеграция с AMO CRMИмпорт контактов в CRM из Google КонтактыВход/регистрация через ВКонтакте(vk.com)Интеграция CRM с онлайн чатом на сайте (Replain)Как связать yandex metrika clientID с пользователем сайта?Как сделать обработку входящей почты (создание клиента в CRM из Email)Интеграция сайта с ChatGPT (openAI)Интеграция с Яндекс МетрикаИнтеграция с Youtube. Получение роликов каналаИнтеграция с Ozon, Wildberries - извлечение статистикиИнтеграция с API Яндекс Вебмастер
КаталогиНавигацияДокументыДополнительные компонентыПродвижение, SEOСистемные моменты
Отслеживание изменений хранимых процедур и страниц (logChanges)Логирование изменений объектов на примере хранимых процедурРабота с редактором кода в личном кабинете разработчикаЛогирование событий в приложении (trace)Действия в браузере actions JSONКак быстро перенести решение (таблицы, формы, страницы) на другую базу?Настройка диалоговых окон и alert окошекМелкие удобства для разработчика в личном кабинетеКак отследить и ограничить большое количество однородных запросов на сайтеИзменение процедуры поиска, процедуры общих элементов Layout, процедуры периодического запускаКак изменить длительность показа сообщенийФорма обратной связи по ошибкам, предложениям suggestionКак разграничивать права на уровне бизнес-логики хранимых процедурБезопасная обработка данных и проверка доступа в хранимых процедурахИспользование типовой разметки в виде сниппетов для решения различных задачКак логировать клики на определенных элементах в системеОбработка старых браузеров (сообщение об устаревшем браузере)Безопасность. Как скрыть некоторые заголовки (http headers) в запросахОтображение сообщения об offline (Нет сети)Рабочее место разработчика через терминалОбновляемые метки времени в сообщениях на сайтеПодсказка по интерфейсам хранимых процедур компонентовЗащита от CSRF атак через дополнительный токен в формахДополнительные параметры в @parameters (во многих хранимых процедурах)Как логировать события в Falcon в другую базу (чтобы ограничить рост основной базы данных)Сообщение об использовании куки (Cookies)Как искать код некоего компонента (таблицы, формы и т.д.) на страницеКак сделать так, чтобы почта отправлялась асинхронно без задержекРабота со сниппетами кодаУниверсальная кнопка действия as_submitРежим показа таблицы/формы в alert окнеРеализация системы анализа IP посетителей
Системное администрированиеHOWTO
Как сделать отдельный универсальный поискМодальная ссылка (as-modal)Как идентифицировать анонимного пользователя (по куки)?Дашборды. Как вызвать коллбек после загрузки дашбордаКак вынести правила редиректа в отдельный файл configСтраницы. Как сделать редирект на другую страницу при загрузкеСтраницы. Как изменить текст на главнойСтраницы. Как использовать дополнительные параметры на страницеСтраницы. Как выводить списковые данные в теле страницы (repeater)Страницы. Настройки страницы для формирования главного менюСтраницы. Мне нужен в URL параметр itemID, но там передается из-за сущностей InstanceIDСтраницы. Как сделать мастер описания функционала страницыКак добавить событие в календарь GoogleКак сделать кнопку определенного действияКак сделать горячие клавиши для событий (нажатие кнопки)Как показывать баланс пользователя вверху кабинета?Где взять фото пользователяКак сделать поддомены с разными языками для сайтаКак управлять страницей “404 Страница не найдена”Отслеживание всех действий пользователя в системеКак выводить денежные данныеКак дать возможность некоторым ролям вводить html в формах?Что делать если открытая вкладка (tab) сбрасывается при перезагрузке страницы?Как реализовать создание периодического отчета на почтуПопап (popup) окна - показ модальной формы по событию или таймаутуКак быстро просматривать типовые отчеты с возможностью редактирования SQLКак максимизировать показатели Google PageSpeed для сайта на Falcon SpaceКак реализовать окно уведомления об использовании куки (cookies)Вывод на странице штрихкода (barcode) и QR кодаКак в тексте сделать ссылки кликабельнымиКак внедрить на сайте автоопределение города с возможностью выбораКак внедрить оглавление в текстКак вставить универсальный поиск в любое место страницыКак определить координаты lat lng пользователя в текущий моментКак сделать сортировку дерева с Drag-and-DropКак обновить часть страницы по клику на кнопкеЗагрузка дашборда по ссылке as-dashboard-linkКак запретить копировать текст с сайта. Как добавлять ссылку копирайта в текст при копировании с сайтаКак изменить шаблоны хранимых процедур для Формы, Таблицы и др.Определение местоположения пользователя по IP через API (as-ip)Форма Нашли ошибку по Ctrl+EnterКак определить откуда пришел пользователь на сайт? Фиксация источника посещения пользователем сайтаКак сделать ссылку, которая скроллит к элементу на страницеКак показать/скрыть область на странице по ссылке - as-collapseКак сделать обновление интрефейса у другого пользователя по некоему событию
Таблицы
Как сделать таблицу в модальном окне (открывается в диалоговом окне)Как реализовать подтаблицу (вложенная таблица), подформу в таблицеКак связать 2 таблицы Загрузка таблицы по ссылкеКак связать таблицу и редактирование сущности (зависимая страница)Как использовать комментарии в таблицахКак добавить в фильтре значение Не выбрано со значениемКак установить ширину колонки в таблице Как добавить диапазон даты или чисел (слайдер) в фильтрКак сделать операции только для некоторых строкКак делать различный набор столбцов одной таблицы для разных ролейКак убрать показ количества строк результата в заголовке таблицы? Как сделать сортировку в таблицеКак сделать Editable для галочки (Да/Нет) в AS CRUDКак редактировать колонку с датойКак скрыть строчные операции в таблице для определенных строкКак добавить коллбек после загрузки таблицыОтображение таблиц на смартфонеКак работать с галочками в таблицеЧастые ошибки при настройке таблицы (почему не работает таблица)Как обновить подтаблицу после выполнения некой операцииКак обрабатывать групповые операции через модальную формуКак создать предустановленные фильтры для таблицыКак сделать сворачивание таблицы (collapse table)Как убрать старые dict процедуры в формах и таблицахКак сделать фильтр с деревом галочекКак отключить сохранение состояния таблицы (фильтры)Как сделать ссылку на всю строку таблицыКак передать через URL значение фильтраКак сделать обрезание ячеек таблицыСортировка строк в таблицеСоздание сущности с учетом значений фильтровОптимизация запроса SQL - извлечение данных для таблицыКастомная разметка в таблицеРежим кастом вывода через JS (custom)Как настроить дополнительные шапку и подвал у таблицыКак сделать зависимые фильтры в таблицеИмпорт данных в формате файлов txt, csv через таблицуКак гибко управлять видимостью столбцов таблицыКак сделать раскрытие подстроки через любую ссылкуРежим быстрой фильтрации строк без обращения на серверВыпадающая панель рядом с названием таблицы dropdownPanelКак убрать при загрузке установку фокуса ввода на фильтр (data-nofocus)?Как сделать аналитику по периодам (таблица с интервалами дат)Кастомизация вида операций таблицыСтилизация фильтров таблицы
Формы
Как вывести форму во всплывающем окне рядом с кнопкой (popover)Загрузка формы по ссылкеКак принимать в форму не 1 параметр (itemID), а несколько входящих параметров? data-param-p1Как сделать модальную форму Как добавить коллбек после загрузки формы и после сохранения формы.Как показывать на форме прогресс заполнения (прогресс заполнения формы)Как сделать форму в виде мастера шаговКак сделать подтверждение действия в СМС (SMS) в формеКак установить поля в форме по умолчанию при загрузкеКак показывать изменяющуюся информацию при изменении полейФормы. Как сделать в форме более 1 кнопки действий (несколько кнопок действий на форме)Как правильно обрабатывать цены (дробные числа) на формеКак передать в форму скрытый параметрКак в форме добавить примеры заполнения полей (example)Как выбрать значение списка через справочник в модальном окнеКак сделать окно подтверждения действия формыДинамическое изменение itemID у формы в зависимости от других элементов страницыКак скрывать/показывать, обновлять область на странице при изменении поля формыКак добавить новый элемент, если в списке на форме его нетКак перезагрузить страницу после сохранения формыКак вывести списковые данные или таблицу внутри формыКак сделать зависимые поля в форме (Страна, Город)Как сделать кастомную HTML разметку для формы (jsRender)Как создать кастом форму с подтверждением действия по Email или SMSУстановка фоновой панели для формыКак сделать задержку при сохранении формы (saveDelay)Подсказки-ограничители длины для полей в формеКак динамически изменять тип поля формыКак сохранить значение поля в браузере, чтобы каждый раз его не вбивать при загрузке (оставлять последнее сохраненное). Запоминание поля формы в браузереКак выводить разные данные на одной форме для разных ролейКак сделать форму с сохранением состоянияКак сделать поля с анимацией значенийИспользование Google Recaptcha в формахКак обновить таблицу после сохранения формы в модальном окнеКак указать произвольную маску для поля ввода в формеКастом проверка полей формы через JSКак в выборе даты (datepicker) задать доступные датыКак создать форму для редактирования сущностиЗагрузка формы в выпадающем окне (dropdown)Добавление смайликов (emoji) в поля формКак у формы сделать progress bar при загрузке формыРабота с датами в формахПоказ количества символов рядом с полем в формеКнопка очистки формы ResetКонтроль заполнения ключевых форм на сайтеКак сделать форму с простым подтверждением действия (confirm)Как поменять соотношение длины метки и поляКак при сохранении формы вывести сообщение printlog, а не alert
Поля формы
Поле Список поиска значения (autocomplete, search-select) Как в форме вывести список галочек (множественный выбор поля)Как сделать списки select и chosen с категориями (optgroup)Как сделать выбор адреса и сохранение координат места (lat,lng).Установка графика работы (поле формы weekTime)Как в форму в SaveItem передать некий скрытый параметр (например Куки или параметр URL)Как работать с полем типа Слайдер (ползунок)Как использовать в форме поле Выбор файлов. Типы полей формы files, remoteFile, fileContentКак редактировать текст элементов  HTML в Rich-редактореУправление настройками поля через options_ поляВставка ссылок по шаблону (ютуб ссылка, patternString)Как использовать Флажки и выбор радио с картинкойКак работать с полем ТаймерКак сделать выбор цвета в формеКак вывести дерево с выбором галочекКак выводить и сохранять множественный список через chosen поле.Обработка даты из поля datetime-localРедактор текста - код поля формы html2Как работать с полем Дробное числоКак настроить выбор вариантов для поля Интервал датВыбор из элементов с табуляцией - поле формы tabsТип поля imageCheckbox (флажок-картинка)Поле формы Градиент (gradient)
Загрузка файлов, картинок
Работа с ресурсами. Загрузка картинок, файловУправление файлами на сервере (файловый менеджер)Загрузка на форме текстовых файлов и обработка их в процедуре SaveItemКак добавить в колонку таблицы управление файламиЗагрузка файлов с drop областью и гибкой разметкой (компонент as-files)Как приводить картинки к заданным размерам при загрузке на сайтИмпорт и парсинг файла CSVЧем отличается код типа ресурса от типа объектаКак получить ссылку на ресурсКак установить права доступа на менеджер ресурсов?Как загружать фото с обрезкой Как увеличить размер подгружаемых файлов (как загружать большие файлы)Передача файлов по FTPКак искать битые ресурсы, картинкиПодбор оптимальных параметров менеджера ресурсовПодгружаемые файлыМассовая загрузка картинок в систему ресурсовНе грузится файл через менеджер ресурсовФайлы загружаются на сервер, но при скачивании выходит ошибка 404.3 (загрузка ODT, Проблема с MIME типами)Поддержка Webp формата для оптимизации картинокМассовая оптимизация картинок в менеджерах ресурсовНе выводятся картинки на сайте (401, 403 ошибка при загрузке картинок)Как установить JS callback после выполнения crop картинкиНе отображается картинка юзера справа вверхуКак изменить текст "Нет файлов" в as-resourceManager?Обработка спецсимволов в названии файлов Как поставить водяной знак на картинку при загрузкеКак оптимизировать качество картинок при загрузке на сайтКак создавать для загружаемой картинки копии с разными размерамиКак загружать файл, когда задействовано диалоговое окноКак загрузить файл по конкретному путиКак сделать возможность грузить только 1 фотоКак поставить фильтр на типы файлов и ограничить форматы загрузки картинок?Как обработать событие после удаления или добавления файлов? Не выводятся картинки в менеджере ресурсов. Что делать?Как вставить менеджер ресурсов в форму с заданным itemID
HOWTO SQLHOWTO JSHOWTO ВерсткаРешение проблем

Выгода от использования Falcon Space

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности

Мануал для начинающего разработчика Falcon Space

Введение

Общее введение в платформу Falcon Space можно найти здесь - https://falconspace.ru/docs/vvedenie-v-falcon-space--c-chego-nachat

В этой статье мы познакомимся с процессом создания сайта на Falcon Space и ключевыми вопросами, которые возникают у новичков Falcon Space.

Как построен процесс разработки

В системе определяются основные области (неавторизованная область и личные кабинеты) и страницы в них. 

К примеру неавторизованная область может содержать ленд на главной, страницы info и contacts. 

Личный кабинет содержит страницы, которые будут доступны пользователям с определенной ролью. Например, кабинет менеджера будет содержать страницу Клиенты, Карточка клиента, Заказ.

На каждой странице размещается либо некий статичный контент, либо компонент в виде сниппета разметки. 

Вывод обычного контента удобно делать через HTML блоки. А компоненты (Таблицы, Формы и т.д.) создаются также в Панели управления, после чего для них прописываются нужные хранимые процедуры по шаблону (процедура автогенерируются из шаблона соответсвующей SP при их первом редактировании). 

Далее мы рассмотрим как создавать каркас приложения + добавлять начинку на страницы сайта. 

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

Идем в /roles и создаем роли в системе. Роль задает некую группу пользователей, на которую можно давать доступы к объектам сайта - страницы, формы, таблицы, ресурсы и т.д. К примеру, создайте роль seller.  

 

Далее идем в /members и создаем пользователя (например, seller1 с паролем 123456) в системе (выбираем роль seller).

См. также Доку по работе с ролями и пользователями.

Теперь попробуйте зайти на сайт под новым пользователем в другом браузере (чтобы не выходить из системы из под админа). Вы увидите его пустой кабинет (т.к. нет пока для этой роли страницы). Давайте их создадим. 

В /pages мы можем создать новые страницы и прописать в доступах роль seller. Тем самым мы даем доступ пользователям с ролью seller к этой странице. В этом поле можно прописывать несколько ролей через запятую. Также есть 2 специальных значения: * - для всех авторизованных пользователей, all - для всех пользователей (неавторизованных и авторизованных). 

Чтобы они появились в меню в настройках системы надо задать: 

  • Включить переключатель "В меню" 
  • Указать Порядок в меню
  • Указать иконку в меню

В теле страницы просто укажите пока текстовое описание "страница такая-то".

Создайте все необходимые страницы по подобию и посмотрите теперь кабинет пользователя с ролью seller. В меню появятся новые страницы (если поставили переключатель В меню). 

См. также Доку по работе со страницами. В ней вы узнаете как делать хлебные крошки, указывать SEO Title, Description, делать редирект, вставлять JS, CSS и т.д.

Примечание. Для неавторизованной зоны вам вероятно захочется сделать лендинг - это особый вид страницы в системе и его необходимо создавать по этой статье.  Ленд отличается от обычной страницы тем, что он не содержит практически стилей от стандартного шаблона кабинета платформы и позволяет редактировать контент страницы по секциям (контент секции может быть как в виде статичной верстки, так и динамическим - генерироваться на основе хранимой процедуры). 

Добавляем начинку для страниц - компоненты или контент

В разделе /pages находим нужную страницу и переходим на ее редактирование. 

Мы можем добавить на страницу сниппет некоего компонента (через кнопку Сниппеты либо некую статичную разметку). 

 

Сниппет - это некая простая разметка для div со спец классом (as-table, as-form и т.д.) с передачей еще неких data- параметров. Самые частые параметры: 

  • data-code - определяют код компонента, например форма newClient. 
  • data-itemID - некий идентификатор, который передается в компонент (например для формы editContragent может быть data-itemID="123"). 

Примечание:

  1. вы можете передать неявно параметр из URL адреса в разметку через такой прием url-itemID в фигурных скобках - т.е. из URL возьмется URL параметр itemID и подставится в разметку.
  2. вы можете использовать на странице sp параметры. В разметке пишем {sp-name1} и SP процедуре страницы в SELECT 3 указываем значение этого параметра. Таким образом на страницу можно поместить любую динамическую разметку.  

Реализация компонентов Таблица, Форма и т.д.     

Как сниппет превращается в таблицу или форму? При загрузке страницы платформа ищет типовые сниппеты. Если находит, то начинается процесс загрузки в них компонента - идет обращение к серверу, получаем данные и визуализируем их на основе тех настроек, что пришли от сервера.  В итоге в DIV подгружается сам компонент (таблица, форма).

Настройки компонентов задаются на странице редактирования компонента с нужным кодом (например на странице управления формы newContact), а также в ее хранимых процедурах. 

У каждого компонента есть строго определенный набор хранимых процедур, которые имеют фиксированный вид входных (входные параметры храннимой процедуры) и выходных параметров (выходные SELECT из процедуры). К примеру у форм это процедуры GetItem, SaveItem CheckField, SaveField, Progress и др.  Их формат описан в документации Работа с формами. 

 

Для примера выведем Таблицу первых 5 записей из системной таблицы as_trace.

Работа с таблицами описана в этой статье

ВАЖНО! Компонент таблицы и таблица базы данных - это совершенно несвязанные сущности. Вы можете выводить таблицу не на основе данных из таблицы БД (а например формировать данные прямо в ХП или на основе JSON данных из API). 

Примечание. Таблицы базы данных вы можете создать в БД, следуя этой документации

Давайте на странице разместим сниппет таблицы с кодом showTrace: 

<div class="as-table" data-code="showTrace"></div>

Добавим теперь такой компонент - создаем таблицу showTrace

Укажем столбцы вывода таблицы id, header, username:

Укажем процедуру вывода записей  GetItems: 

Процедура создается всегда по шаблону. Наша задача  - просто правильно подменить данные в типовой процедуре и настроить параметры вывода. 

Здесь мы в SELECT 1 выдали табличные данные для заполнения таблицы.

В SELECT 2 надо указать общее количество (для работы пагинации). 

В SELECT 3 мы указываем различные настройки вывода таблицы.

Информацию о параметрах и структуре процедуры GetItems можно посмотреть в доке Работа с таблицами

Важный момент - укажите в настройках таблицы параметр Роли = seller. Иначе ваш пользователь не получит доступа к этой таблице. Таким образом доступ к странице не означает доступа ко всем компонентам на этой странице. 

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

После проверки страницы под пользователем seller1 она будет выглядеть примерно так: 

Если что-то не так сработало, то проверьте как указан сниппет, доступ по ролям, а также точное совпадение кодов полей с выходными кодами полей в SELECT 1 GetItems. 

Решение общесистемных вопросов 

Изменение глобальных настроек выводимого Layout страницы

Смотрите процедуру GetLayout в Настройки системы. Эта процедура выполняется при загрузке каждой страницы сайта и  определяет общие настройки страницы (класс для body, логотип, тема сайта и т.д.), служебное меню пользователя, панель быстрых действий и т.д.

Настройка меню

Для кабинетов обычно используется стандартное меню, оно управляется на основе ролей и строится на базе страниц сайта. См. раздел /menu

Если вы делаете общее меню для лендингов, то обычно это кастомное меню, которое делается на основе HTML блока (обычно для него мы используем код topbar). См. статью Как создать динамическое меню для лендингов. 

Регистрация пользователя и вход пользователя на сайт. 

Форма регистрации создается под проект. Вы можете за пример взять форму создания пользователя на сайте на странице /members.

Важно, там есть особенность - outer процедуры для выполнения дополнительных действий после выполнения операции регистрации пользователя в системе через Внешнее действие.  Подробнее про Внешние действия. Также используется JS коллбек (для saveItem) для обработки результата выполнения операции. 

Форма входа используется стандартная и у нее есть ограниченные возможности кастомизации. См. подобнее здесь. Можно сделать свою форму входа, но мы используем стандартную форму из соображений безопасности. 

Сами пользователи хранятся в таблице БД as_users

Настройка стилей сайта 

В настройках /settings есть форма Настройки дизайна, где вы можете настроить некоторые параметры для стандартного дизайна. 

 

В начальных настройках можно настроить фавикон, логотип. 

В быстрых действиях есть возможность управлять CSS для всего сайта. Там же вы можете загрузить новый шрифт. 

Если вам нужно использовать полностью кастом страницы, то используйте механизм Лендов - см Работа с лендами

Как управлять структурой базы данных

Есть отдельный раздел для управления таблицами базы данных /dbtables - там вы можете управлять столбцами, отношениями, индексами на таблицах, получать SQL код для переноса структуры таблицы БД.

 

Также вы можете напрямую работать с таблицами БД через SQL Server Management Studio. 

Заносить данные в таблицы вы можете либо через Insert запросы в RunSQL в Быстрых действиях, либо создать таблицу управления для внесения данных 

Как подлезть со своим JS

Свой JS можно внедрять в Быстрые действия / JS, а также на отдельных страницах - раздел JS (2 поля - для вставки добавления скриптов разметки, так и для кода JS).

В /settings настройка CommonScripts предназначена для добавления кода различных счетчиков, внешних чат-консультантов и т.д. Если хочется добавить что-то в head, то это настройка CommonStyles

У многих компонентов есть свои коллбеки, которые позволяют в нужном месте подлезть со своим JS кодом (например, после загрузки таблицы или после сохранения формы).

Также смотрите доку по кастомной разработке на JS в платформе

Отправка почты

Для отправки почты требуется настроить почту на странице /email-settings. После занесения настроек на той же странице можно проверить как идет отправка email. 

Документация по работе с почтой на Falcon Space. 

Сама почта отправляется через внешнее действие с кодом email.   

HTML блоки - блоки типовой верстки

Блок может быть статичным (например, footer блок) либо динамическим (например, блок вывода списка статей). 

Где-то в коде SP мы можем получить HTML блоки и вывести их разметку.

Управление блоками находится на /htmlblocks

У блока мы указываем тело блока (статичный HTML), либо процедуру генерации блока (она выдает строку с разметкой). 

Работа с HTML блоками описана здесь . 

Можно сказать, что HTML блок инкапсулирует в себе некую сложность, связанную с разметкой некой области на странице, например, футер, кастом-меню, блок отзывов, карточка товара, список похожих товаров и т.д. Т.е. работает как функция, выдающая некую разметку на основе входящих параметров. 

Дополнительные важные настройки в /settings

domain - используется для организации полных ссылок. 

isDemo - используется на деморешениях для вывода некоторых рекламных демонстрационных элементов.

Лендинги

Лендинг - это настройка над механизмом страниц.

Лендинг не имеет стилей кабинетов и разделяется на секции (у каждой секции свой HTML блок, который может быть динамическим или статическим). 

При добавлении секции вы можете выбрать один из шаблонов разметки секции. Также примеры секций с кодом можно взять здесь - https://falconspace.ru/landguide

Раздел про лендинги.

Более сложные вопросы для проработки

Получение уведомлений в Телеграм. Создание телеграм-бота

Вы можете создать бота (через @botfather в телеграм) и прописать токен в appsettings.json. 

Это позволит платформе управлять ботом через хранимую процедуру (она находится в /syssp).

Когда кто-то пишет боту, то эта команда попадает на вход в хранимую процедуру action. И в выходном select мы указываем боту что сделать (отправить такое-то сообщение). 

Бота также можно использовать для уведомлений пользователей телеграм. Для этого пользователь сначала должен указать в профиле телеграм, обратиться к боту (бот создаст привязку chatID). Затем при появлении нового уведомления в системе, если у пользователя привязан chatID, то ему будет отправлено сообщение в телеграм от бота.

Дока по телеграм ботам

Создание API методов

В платформе есть универсальный механизм для отправки запросов во внешние системы - это исходящие запросы API.

Также вы можете создать свой слой API методов или веб-хуки, к которым будут обращаться извне другие системы. Это входящие запросы API

Управление API методами находится в разделе /asapi.

Внешние действия

В SQL можно делать многое, но нельзя напрямую отправить почту, или вызвать метод API (отправить запрос во внешнюю систему).

Для этого мы используем систему Внешних действий. Мы выдаем некий SELECT, который платформа воспринимает как  команду что-то сделать (например, отправить письмо на email). 

Дашборды, графики, визуализация данных 

Дашборды можно строить как на базе компонента Дашборд, так и на базе простой разметки с множеством панелей as-panel и таблицами формами в них. 

Пример разметки для подобного дашборда: 

       <div class="row mt-3 ">
        	<div class="col-12 col-md-12 col-lg-8">
            	<div class="row mb-3">
                	<div class="col">
                        <a href="/searchprojects" class="btn btn-outline-primary btn-block mb-1"><i class="fa fa-search"></i> Искать проект</a>
                    </div>
                	<div class="col">
                        <a href="/favorites" class="btn btn-outline-primary btn-block mb-1"><i class="fa fa-heart"></i> Избранные проекты</a>
                    </div>
                	<div class="col">
                    </div>
                </div>           
				<div class=" as-table as-panel" data-code="supplierBidsShort">                	
                </div>
                <div class=" as-table as-panel" data-code="supplierProjectsShort">                	
                </div>           
                <div class=" as-table as-panel" data-code="supplierReviewsShort">                	
                </div>
                <div class=" as-table as-panel" data-code="supplierordersShort">                	
                </div>
                
			</div>
        	<div class="col-12 col-md-12 col-lg-4">
            	<div class="as-panel text-center">
                     <h3 class="mt-3">Мой баланс</h3>
                     <a href="/balance" class="h1 btn-block mb-1 text-decoration-none mb-1">
                        	<span class="as-money" data-nocolor="1" data-value="100" data-hidesign="1"></span>
                            
                     </a>     
                     <a href="/addbalance" class="btn btn-outline-primary btn-block">Пополнить баланс</a>
                </div>    
                <div class="as-form as-panel" data-code="tariffInfo" data-itemid=""></div>
            </div>        
        </div>

Графики и другие способы визуализаци данных - это специальные режимы работы таблиц

Особо можно выделить создание графиков на основе Apex Chart. Вся задача сводится просто к созданию правильного JSON с данными на входе

Визуализацию данных можно смотреть на демостенде - https://demo.web-automation.ru/list/watch/dashbord

Некие периодические действия

К примеру необходимо запускать каждый день в 2 часа ночи что-то. Или раз в неделю. 

Для этого используем sync процедуры, они находятся в /syssp (Час, День, Месяц) и в них добавляем вызовы нужных процедур. Пример:

CREATE PROCEDURE [dbo].[falcon_nt_sync_hour]
AS
BEGIN
	EXEC [dbo].[as_trace_warn]
		@code = N'sync',
		@header = N'hour',
		@itemID = 2,
		@text = N'3',
		@username = N''
	if(DATEPART(HOUR, GETDATE())=23) begin 
    	-- обновляем рейтинги, кол-во отзывов, проектов всех supplier
   		exec [dbo].[au_updateSuppliers] 
        exec [dbo].[au_updateProducts]        
	end
END

Подробнее про периодические действия 

Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Насколько полезной была статья?

Google поиск по нашей документации

Нужна бесплатная консультация?
Планируете делать веб-проект?
Если видео Youtube плохо грузится, то попробуйте найти видео в ВК видео на канале Falcon Space
Сайт использует Cookie. Правила конфиденциальности OK
Подождите...