Awilum

Я вернулcя в Webdev и начал делать новую разработку - Flextype

Рекомендованные сообщения

Доброго времени суток!

После 8 лет работы в вебдеве я ушел из него и вообще от программерской деятельности в сентябре 2017-го, но вот сейчас ко мне обратился один фотограф, который попросил сделать для него сайт портфолио, я согласился. Посмотрев на разные движки, и особенно WP. Понял что все эти тяжелые движки не годятся - боль от их использования. Решил взять наработки с моей Монстры и Фансоро и стартовал новый проект Flextype!

Flextype - это новая генерация движка Monstra и Fansoro. Flextype максимально простой и расширяемый движок, практически любую задачу можно будет реализовать плагинами, так как движок предоставляет потрясающе простое API для разработчиков плагинов и тем оформлений. Страницы в Flextype - это простые файлы написанные с использованием YAML и Markdown синтаксиса, которые хранятся в папке: /site/pages

Ключевые особенности движка Flextype: 

ПРОСТОТА 
Система очень простая в установке, обновлении и использовании! Достаточно просто скопировать файлы движка на сервер и это все!

СКОРОСТЬ
Flextype очень легкий и быстрый движок!
Никакой базы данных, только файлы!

РАСШИРЯЕМОСТЬ
Плагины, Темы, Шорткоды и многие другие вещи позволяют легко расширять сайт!

MARKDOWN СИНТАКСИС
Вы можете использовать любой редактор для редактирования страниц используя Markdown синтаксис.

ДИНАМИЧНЫЙ ТИП КОНТЕНТА
Flextype позволяет создавать страницы практически любой сложности. Благодаря YAML страницы могут иметь любые необходимые поля!

СВОБОДНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
Flextype - это свободное программное обеспечение с открытым исходным кодом и распространяется под лицензией MIT!

C помощью Flextype можно создать:
- сайт визитку
- домашнюю страничку
- сайт-портфолио
- лендинг-страницы
- блог

Но на самом деле применение Flextype не ограничивается тем, что перечислено выше. Так как это универсальная CMS, которая легко расширяется плагинами!

Цели на ближайшее будущее:
- Улучшить ядро движка, рефакторинг, новые фичи и умное кеширование.
- Улучшить юзабилити сайта движка и улучшить документацию.
- Сфокусироваться на разработке плагинов и тем оформлений.
- К релизу 1.0.0 выпустить стабильный плагин Админки.

Официальный сайт: http://flextype.org

Организация на GitHub: https://github.com/flextype

Цель Создания топика:
- Привлечение разработчиков к Open Source проекту.
- Оценка Flextype: критика, пожелания, предложения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Дорогие Друзья!

Открылся сайт и форум русского сообщества Flextype! 
Сайт: http://flextype.ru
Форум: http://forum.flextype.ru

p.s.
сайт в процессе перевода и наполнения

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Flextype 0.5.0  

Новая версия Flextype более гибкая и расширяемая! 
Идем по пути разделения функционала на компоненты и плагины - это позволит не загружать CMS ненужным функционалом из коробки и позволит собрать систему индивидуально для своего проекта!

На сегодняшний день уже разработано 25 плагинов! 
GitHub: https://github.com/flextype-plugins

Изменения в Flextype 0.5.0:
- Удалена директория site/data
- Удалена директория site/accounts
- Удалена директория site/cache
- Удалена директория site/blocks
- Удалена директория site/logs
- Константы accounts, blocks, data - удалены
- Flextype: добавлен новый метод setSiteConfig()
- Flextype: добавлен новый метод setErrorHandler()
- Content: добавлен новый метод initParsers()
- Content: функционал для Blocks удален - используем Block плагин.
- Content: функционал Section - удален - используем Section плагин.
- Content: функционал Site Url - удален - используем Site Url плагин.
- Content: функционал Registry - удален - используем Registry плагин.
- Content: Markdown парсер больше не создает самостоятельно ссылки
- Content: удален метод registerDefaultShortcodes() 

Новость на офф. сайте: http://flextype.org/blog/flextype-0-5-0-release

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Flextype 0.6.0 

В новой версии Flextype было принято решение отказаться от Markdown разметки и вынести Markdown парсер в отдельный самостоятельный плагин. Теперь страницы можно без проблем оформлять с помощью нативного HTML + Flextype Shortcodes (по типу WP Shortcodes). Если есть необходимость какой-то текст обработать каким либо специфическим парсером - это легко сделать, подключив плагин 🚀

На сегодняшний день уже разработано более 30-ти плагинов! 🔥 
GitHub: https://github.com/flextype/plugins

Изменения в Flextype 0.6.0: 
- Content: Markdown(Parsedown) удален! 
- Theme Simple: Cross-site scripting фиксы! 
- Улучшения в главном .htaccess 
- Рефакторинг кода.

Новость на офф. сайте: http://flextype.org/blog/flextype-0-6-0-release

Планы на Июнь:

Улучшения ядра системы и разработка плагинов. Множество простых но полезных плагинов уже сделано и еще предстоит сделать. Каждый разработанный плагин помогает понять слабые и сильные стороны системы, которые должны быть улучшены. Другая важная часть - это "документация". Хорошая документация позволит привлечь сторонних разработчиков плагинов и тем, а это важно для Open Source проекта, которым является Flextype.

Основная цель на ближайшее время это привлечь как можно больше сторонних разработчиков в проект.

Я вернусь к разработке плагина Админки как только другие не менее важные части проекта будут доведены до ума.

Если у вас есть желание сделать какой нибудь полезный плагин для Flextype и у вас нет идей какой плагин сделать, посмотрите какие плагины уже реализованы для других систем, например для Wordpress и сделайте такой же для Flextype.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Некоторые задают такой вопрос: 

почему такие простые плагины и почему эта функциональность не идет из коробки ?

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

Посмотрите на успешный проект Gulp - потоковый сборщик проектов на JS - в нем абсолютно все расширяется плагинами, поэтому он такой маленький и быстрый, так как человек ставит только нужный ему функционал 🚀

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Awilum

Тогда, возможно, стоит добавить автоматическую сборку? Типо settings.json с автоматически устанавливаемыми/обновляемыми плагинами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, sigma77 сказал:

@Awilum

Тогда, возможно, стоит добавить автоматическую сборку? Типо settings.json с автоматически устанавливаемыми/обновляемыми плагинами.

да в идеале хочется такого добиться, что бы например можно было прямо на сайте галочки проставить на те плагины которые хочешь проставить и скачать систему с набором выбранных плагинов. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: VeraVostro
      Добрый день!

      Я первый раз натягиваю верстку на Wordpress, поэтому прошу прощения если вопрос слишком уж простой и очевидный:

      У меня на страницу выводится расписание предстоящих мастер-классов. И мне нужно чтобы посты выводились по возрастанию даты (дата указана в title поста, если это нужно - можно и пользовательское поле с датой создать).
      А также нужно чтобы не выводились посты с прошедшими датами.

      Подскажите, как это реализовать?

      Сейчас посты выводятся вот так:
      <?php $args = array( 'numberposts' => 0, 'category_name' => schedule, 'orderby' => 'title', 'order' => 'ASC', 'include' => array(), 'exclude' => array(), 'meta_key' => '', 'meta_value' =>'', 'post_type' => 'post', 'suppress_filters' => true, ); $posts = get_posts( $args ); foreach($posts as $post){ setup_postdata($post); ?> <div class="col-md-4 col-sm-6"> <div class="content-wrapper bg-gray schedule-card"> <div class="day"><span><?php the_field('week_day') ?></span><span><?php the_title() ?></span></div> <a class="event" href="<?php the_field('mc_descr_link_1') ?>"><span class="event-time"><?php the_field('time-mc-1') ?></span><span class="event-name"><?php the_field('mc-1') ?></span></a> <a class="event" href="<?php the_field('mc_descr_link_2') ?>"><span class="event-time"><?php the_field('time-mc-2') ?></span><span class="event-name"><?php the_field('mc-2') ?></span></a> <a class="event" href="<?php the_field('mc_descr_link_3') ?>"><span class="event-time"><?php the_field('time-mc-3') ?></span><span class="event-name"><?php the_field('mc-3') ?></span></a> </div> </div> <?php } wp_reset_postdata(); // сброс ?> Заранее спасибо!
    • Автор: kiberchainik
      здравствуйте, надеюсь выбрал тему верно, так вот ...
      на хостинге установили node открыли порт 3000 порт прослушивается, при обращении lptf.it:3000 или http://185.53.160.215:3000/ выводится сообщение Hello Node.js Server!. Казалось бы все хорошо! но! я хочу дальше создание чата, и в корне сайта создаю файлик (сервер) с кодом (пример с интернета, я новичОк):
      var express = require('express'); var app = express(); app.set('port', process.env.PORT || 3000); app.set('host', process.env.HOST || 'localhost'); var logger = require('log4js').getLogger(); var server = require('http').Server(app); var io = require('socket.io')(server); var port = 3000; app.use(express.static('/home/urlyogyj/public_html/views/chat.php')); app.get('/chat.php', function(req,res){ res.sendFile('/home/urlyogyj/public_html/views/chat.php'); }); app.use('/fonts', express.static('/home/urlyogyj/node_modules/uikit/src/fonts/')); app.get('/socket.io.js', function(req,res){ res.sendFile('/home/urlyogyj/node_modules/socket.io-client/dist/socket.io.js'); }); app.get('/jquery.js', function(req,res){ res.sendFile('/home/urlyogyj/node_modules/jquery/dist/jquery.min.js'); }); app.get('/uikit.js', function(req,res){ res.sendFile('/home/urlyogyj/node_modules/uikit/dist/js/uikit.min.js'); }); app.get('/uikit.css', function(req,res){ res.sendFile('/home/urlyogyj/node_modules/uikit/dist/css/uikit.almost-flat.min.css'); }); app.get('/animate.css', function(req,res){ res.sendFile('/home/urlyogyj/node_modules/animate.css/animate.min.css'); }); function usersCountToLog(){ logger.info('User count: '+io.engine.clientsCount); } io.on('connection', function(socket){ function setName(name){ if(name != undefined && name != ''){ socket.session = {}; socket.session.userName = name; socket.session.address = socket.handshake.address; socket.session.id = socket.id; socket.broadcast.emit('newUser', socket.session); socket.emit('userName', socket.session); socket.emit('userList', io.length); logger.info('User '+socket.session.userName+' join from IP: '+socket.session.address); usersCountToLog(); var clients = io.sockets.connected; var clientsList = {} for(var key in clients){ if(clients[key].session) clientsList[key] = clients[key].session; } socket.emit('clientsList', clientsList); console.log(clientsList); } else socket.emit('setName'); } setName(null); socket.on('setName', function(name){ if(name.length > 0) setName(name); else socket.emit('setName'); }); socket.on('message', function(msg){ if(socket.session){ if(socket.session.userName === null || socket.session.userName == '' || socket.session.userName == undefined){ socket.emit('setName'); }else{ logger.trace('———--'); logger.trace('User: ' + socket.session.userName + ' | Message: ' + msg); logger.trace('====> Sending message to other chaters...'); socket.broadcast.emit('messageFromClients', msg, socket.session.userName); socket.emit('messageToClients', msg, socket.session.userName); } } }); socket.on('disconnect', function(){ if(socket.session){ io.sockets.emit('userDisconnected', socket.session); logger.info('User '+socket.session.userName+' left chat'); usersCountToLog(); } }); }); console.log('server started, tipa...'); как видно по коду прописал адреса к файлам, они верные, в консоле перезапускаю сервер командой
          node /home/urlyogyj/public_html/app.js screen

      после этого обновляю адрес lptf.it:3000 и все равно без перемен, выводит Hello Node.js Server!
      я не понимаю почему, и где и как можно отслеживать ошибки.
      чего вообще хочу добиться:
      до авторизации какого-либо пользователя чат не нужен, как только пользователь авторизовывается на сайте, открывается сокет и на сайте для всех остальных пользователей и гостей видна надпись что тот авторизованный пользователь в сети, и напротив его логина появляется кнопка создать чат, но только для авторизованых пользователей, при нажатии на нее открывается окошко чата, как на сайте вконтакте или фейсбуке, у получателя сообщения есть блок со списком все кто прислал ему сообщение, получатель нажимает на автора и пользователи начинают общение, каждый диалог с новым пользователь должен запускать свое окошко чата. причем этот чат существует на всех страницах сайта. после выхода пользователя через кнопку выход или закрытии вкладки сокет закрывается, а все сообщения записываются в базу данных!
    • Автор: gladiolus3228
      Нужно заблокировать выбор города из списка, пока не выбрана область. Как это можно на js реализовать?

Карта разработчиков

Карта участников

Отметь себя на карте для поиска или предложения работы