Puzzler

Движок для проектно-фрагментных сайтов

Пэт-проект

 Веб-разработка

Легковесное решение для построения независимых от БД проектно-фрагментных сайтов с адаптацией под архитектуру контента, основанную на ориентированном ацикличном дереве с автономными узлами

Демо — этот сайт

Dummy — пример конечного фрагмента без межсоединений

форк Juggler — «Умные страницы» для e-commerce

 Демо — переключён на другой проект (его фрагменты и конфигурации)

Абстрактный граф выполнения

Детализированный flow

Необходимая и опциональная конфигурация

Flowchart основных функций

Система отладки и логирования

Puzzler 1.1

Движок построен по принципу иерархического разделения:

Ядро
+
Шаблоны темизации
Маршрутизация
Проект
&&
конфигурациЯ
Контентные фрагменты
&&
конфигурациИ

Добавочные модули для торговых предложений:

Маркетинг
,
Логистика
,
Лингвистика и лексика
,
Трейдинг

Особенности и преимущества

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

  • полная независимость и отсутствие необходимости в выделенных ресурсах для управления СУБД, абстракций над хранилищем и накладных расходов ORM
  • совместимость с PHP 5.2+
  • эффективное функционирование даже на low-end серверах с ограничениями нагрузок
  • упрощённая переносимость и развёртывание с минимизацией компонентных зависимостей

Недетерминированный роутинг с URI-декодингом и предсказуемой интерпретацией маршрутов

  • гибкая динамическая регистрация маршрутов и связей полагаясь на физическую файловую структуру, что позволяет легко переопределять точки входа без модификации кодовой базы
  • безопасность на уровне файловой системы, механизмов контроля доступа серверного ПО, перехвата и обслуживания запросов
  • защиты от PHP-инъекций и отсутствие SQL-инъекций по определению

Многопроектность и автономность контентных фрагментов

  • поддержка многосайтовости с параметризованными конфигурациями независимых изолированных проектов и возможностью переключения между ними
  • возможность повторного использование контентных фрагментов в различных узлах с минимальными каскадными изменениями связей
  • уникализация фрагментов через инкапсуляцию их слоёв представления, стилей и сценариев с динамической инъекцией в узел без нарушения целостности окружения проекта

Темизация и шаблонизация

  • динамическое переключение тем проектов в режиме выполнения
  • файловый рендеринг шаблонов (PHP-based)
  • кэширование статических ресурсов с механизмом принудительного сброса кэша user-agent’а (через хэш-значения только для изменённых ресурсов)
  • базовый шаблон на основе Semantic UI framework и 3rd party компонентов

Дополнительные возможности

  • Встроенная система отладки и логирования
  • Ролевая модель идентификации, аутентификации и авторизации

Структурированная преднастройка проекта

Проект рассматривается как полнофункциональная бизнес-единица с параметризуемыми атрибутами и мета-данными, полностью масштабируемыми в его рамках и задействуемыми движком при формировании результатов:

  • Брендирование и идентификация — имеет уникальное имя (name), торговую марку (trademark или brandname), спецификацию вида деятельности (specification), слоган (slogan) и описание (about), год запуска проекта (launchyear), ценовой диапазон (pricerange) в свободной форме (по запросу / от ? / от ? до ? / по размерам изделия м2 ...), фраза-стимул в контактной информации (stimulus), ключевые слова (keywords) для маркетингового продвижения
  • Локализация и региональные настройки — поддержка многозначных языковых и валютных параметров: коды валют в соответствии с ISO 4217 (currency), языки по регистру языковых меток IANA (language), локализацию объектов по лексической единице (lexical unit) или словарю $lu (используя адаптер констант "def" с программной среды, лексические и единицы языка)
  • Контактная информация и мультимодальная коммуникация — конфигурация поддерживает:
    • contact — контактная информация, способ связи/схема → данные
      • location — местонахождение
        • region — регион по регистру языковых меток IANA
        • country — страна
        • timezone — временная зона по базе данных 2019.1
        • city — город или населённый пункт, район, область, посёлок, село, деревня...
        • postcode — почтовый индекс
        • address — название улицы, номер дома, корпус, строение, павильон, офис, комната, квартира...
        • geo — географические координаты (широта, долгота)
          • lat — широта
          • lon — долгота
      • phone — телефонный номер по закрытому плану нумерации (рекомендации ITU-T номер E.164)
        • pref — префикс
          • intl — международный
          • locl — местные вызовы/внутризоновой (8)
        • code — код геозоны
        • num — номер абонента
        • ext — добавочный номер
      • email — электронная почта
      • other — другие способы связи (можно использовать HTML и CSS разметку)
  • Динамическое управление временем работы — массив workhours задаёт гибкий график, адаптируемый под специфику (например, почасовое расписание или круглосуточный режим), compact – компактная форма (несколько или промежутки дней и время, пн–пт с 9:00 до 24:00, сб–вс - выходной / ежедневно с 9 до 24 / ежедневно, круглосуточно / график разный), micro - для корректного использования в стандарте схем семантической разметки данных SCHEMA.ORG и микроданных. Используется для составления компактной и микро формы, расчёта оставшегося рабочего времени или времени до открытия
  • Инъекции для верификации и встроенного контента: verify — коды для подтверждения прав на ресурс, embed — коды сторонних ресурсов и сервисов для встраивания (веб-аналитика, счётчики, отчёты, расширенная электронная торговля (Enhanced Ecommerce UA), виджеты, кнопки, офлайн-данные и т. д.)
  • uvp - Уникальное ценностное предложение (Unique Value Proposition), масштабируется на весь проект
  • specials - Особые и необычные предложения (Specials && Uncommon offers)
  • usp - Дополнительные торговые преимущества (Unique Selling Points)
  • clients - Значимые клиенты

Фрагменты могут представлять не только статический контент, но и структурированные товарные предложения, включающие:

  • title, =name, название
  • description для человека (direct), для ПС (SE) составиться из данных юнита, его айтемсов
  • уникальное торговое предложение (Unique Selling Proposition, Unique Selling Point)
  • предложения, основываясь на семантической разметке SCHEMA.ORG по схемам product -> aggregateoffer (=aggregate, совокупное) -> offer

Автоматически добавляются:

  • total - их кол-во
  • lowPrice - минимальная цена
  • highPrice - максимальная цена
  • image - дополнительные изображения (если файлы существуют)
  • available - и юниту и айтемсам наличие (по умолчанию, всегда в наличии), можно использовать: Discontinued, InStock, InStoreOnly, LimitedAvailability, OnlineOnly, OutOfStock, PreOrder, PreSale, SoldOut
  • date - дата публикации (по умолчанию, всегда сегодняшняя, если не указана конкретно)
  • кол-во перекрёстных юнитов (cross-promotion, cross-reference, xRef), 3-5-7 (для перелинковки)
  • кол-во доступных(!) способов доставки
  • найденное наименьшее время ожидания доставки в минутах
  • доступные временные интервалы доставки
  • кол-во свободных доставщиков/курьеров каждые n минут (0..60)

Для поисковых систем (ПС) и страниц результатов (SERP) автоматически генерируются релевантные мета- и структурированные данные, учитывающие:

  • разделители , - // | / > · ... (может предотвратить урезание заголовка и не включение в него бренда)
  • предотвращение возможного усечения meta tags ПС
  • минимальные размеры для эффективного отображения сниппета
  • оптимальные размеры для избегания пенальти по урезанию сниппета (пенальти по размеру)