LPF Landing Page Framework

Создай Landing page бесплатно!

C помощью php-фреймворка «Landing Page Framework»

LPF — это высочайшая скорость работы. Не требует базы данных. Прост в освоении. Легко настраивается. Бесплатный. Имеет собственную админ-панель

Основные возможности

  • Не требует базы данных
  • Поддержка ЧПУ
  • Собственная админ-панель
  • Произвольная вложенность страниц
  • Возможность A/B-тестирования
  • Поддержка HTML, BBCode, Markdown, Textile
  • Работа с любым CSS-framework'ом
  • Поддержка jQuery и любого js-фреймворка
  • Создание «статичных» сайтов
  • Наличие мощного html/php-шаблонизатора

Используйте для...

  • целевых/продающихся страниц — Landing pages;
  • быстрого HTML-прототипирования;
  • создания демо-примеров на своем сайте;
  • сайтов, состоящих из небольшого количества страниц;
  • обучения верстке сайтов;
  • отладки произвольного HTML/CSS/JS/PHP-кода;
  • исследования любых CSS и JS-фреймворков;
  • изучения HTML, CSS, Less, Saas, Js, PHP, BBCode, Markdown, Textile.

Быстрый старт

  1. Скачайте архив LPF
  2. Загрузите файлы на сервер.
  3. Наберите в браузере http://сайт/

Общие сведения о Landing Page Framework

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

Большинство рутинных операций LPF выполняет автоматически. Например подключение css-стилей, js-скриптов не требуют правки исходного кода: достаточно разместить файлы в соответствующих каталогах.

С помощью настроек можно добиться самого разного поведения. Например можно переопределять файлы, управлять кешированием, скриптами, стилями, сжатием, парсингом кода и т.д., и т.п.

Чтобы следить за новостями LPF, подписывайтесь на твиттер @maxsite.


Структура каталогов и файлов LPF

С версии 31.0 используется новая, улучшенная структура каталогов, которая значительно упрощает работу с сайтом.

При первом обращении к LPF будет автоматически создан файл .htaccess с нужными настройками. Если вы переносите сайт на другой адрес, то просто удалите .htaccess, LPF создаст его заново.


Админ-панель

Админ-панель — это обыкновенная страница и может быть размещена по любому адресу. В базовом варианте она доступна по адресу http://ваш_сайт/lpf-admin.

Для доступа к админ-панели, предварительно следует определить логин и пароль. Это нужно сделать в файле lpf-content/pages/lpf-admin/auth/auth-options.php.

С помощью админ-панели можно

Админ-панель LPF

Страницы (pages)

Все страницы размещаются в каталоге lpf-content/pages.

Имя адреса страницы совпадает с её каталогом. Например страница с адресом http://сайт/contact будет располагаться в /pages/contact/. Можно создавать вложенные страницы. Например адрес http://сайт/contact/map будет располагаться в /pages/contact/map.

Текст страницы размещается в обязательном файле index.php. По сути это то, что выводится между BODY.

Главная страница размещается в каталоге home, а 404-я в каталоге 404.


Настройка страниц с помощью variables.php

Настройки указываются в файле variables.php.

В переменной $TITLE задаётся title страницы. В $META можно задать разные значения meta для секции HEAD. Остальные основные настройки задаются в $VAR.

Файл assets/images/favicon.png задаёт иконку сайта. Просто замените этот файл на свой.

Полный список настроек вы можете посмотреть в файле lpf-core/engine/engine.php ($VAR)


Настройка страницы прямо в тексте

Если страница использует простые настройки, то можно не создавая variables.php, размещать их прямо в тексте в файле index.php. Делается это в верхней части текста/файла:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 
/* ===
TITLE: Landing Page Framework

META:
	description: Landing Page Framework
	keywords: Landing page,  php-framework
	viewport: width=device-width, initial-scale=1.0
	generator: Landing Page Framework (lpf.maxsite.com.ua)

	1:
		property: og:title
		content: Landing Page Framework

	2:
		property: og:description
		content: Landing Page Framework

	3:
		property: og:url 
		content: http://mysyte.com/

META_LINK:
	1:
		rel: canonical
		href: http://mysyte.com/
	2:
		rel: dns-prefetch
		href: //fonts.gstatic.com/
		
VAR:
	simple: true
	compress_text: true
	
=== */
?>

Текст страницы

Блок /* === ... === */ служит ограничителем данных, которые описываются в формате YAML


Каталог assets. CSS-стили. JS-скрипты

В каталоге assets следует располагать общие для всех страниц «оформительские» файлы (css, js, fonts, images, less, sass и т.п.).

CSS-файлы автоматически подключаются из каталога assets/css в алфавитном порядке. Если важен порядок подключения, то именуйте файлы с префиксами «1-», «2-» и т.д.

JS-скрипты размещаются в одноименном каталоге. Если js-файл нужно автоматически подключить в секцию HEAD, то его следует разместить в assets/js/autoload.

Если js-файл нужно загрузить перед закрывающим /BODY, то его следует разместить в assets/js/lazy.

Если js-скрипт должен быть загружен как async или defer, то его следует переименовать:

Подключаемые js-скрипты проверяются на дубли (по адресу), что исключает их повторную загрузку.

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

Вы можете размещаться css-файлы и js-скрипты на уровне страницы. Создайте каталоги css и js в каталоге страницы.

Если стоит задача отключить css и js-файлов из assets, то используйте настройки $VAR['nocss'] = true и $VAR['nojs'] = true.

Если файл начинается с «-» или «_», то его подключение игнорируется.


BB-код. Markdown. Textile. Simple

LPF расчитан на вебмастеров, поэтому фреймворк по-умолчанию не делает какую-либо обработку HTML-кода. Он выводит ровно то, что задано. Вместе с тем, в зависимости от задачи, можно подключить различные парсинги текста.

BBCode подключается через параметр $VAR['bbcode'] = true;. Описание возможностей этого парсинга см. в engine/bbcode.

Markdown подключается через $VAR['markdown'] = true;

Textile подключается через $VAR['textile'] = true;

Simple — это уникальный парсер, который упрощает написание HTML-кода, при этом не создающим сложностей с запоминанием всех вариантов, как в Markdown или Textile. Для включения укажите $VAR['simple'] = true;

Парсер maxsite (от MaxSite CMS) используется для полной авторасстановки абзацев, совмещенным с произвольным html-кодом. Для его включения укажите $VAR['autotag_my'] = 'maxsite';


Autopre. Autoremove. Сжатие html. Удаление протокола http

Параметр $VAR['autopre'] = true; разрешает преобразовать содержимое тэга PRE в html-спецсимволы. Данная возможность пригодится тем, кто часто использует примеры программного кода.

Параметр $VAR['autoremove'] = true; разрешает LPF удалять весь текст внутри спецкода [remove] ... [/remove].

Для того, чтобы сжать результирующий HTML, используйте $VAR['compress_text'] = true;. Желательно проверять результат сжатия на ошибки.

Если вы используете рекомендации гугла, то можно заменить протокол http и https на универсальный «//». Для этого используйте параметр $VAR['remove_protocol'] = true;. При использовании этой возможности рекомендуется проверять конечный результат.


HTML/PHP-шаблонизатор

LPF позволяет использовать HTML-шаблонизатор равный мощности PHP. Для того, чтобы его использовать, в variables.php задайте $VAR['tmpl'] = true;

Шаблонизатор использует две конструкции, позволяющие выполнять произвольный php-код.

Для лучшей читабельности кода используйте альтернативный синтаксис PHP для if, while, for, foreach и switch.

Шаблонизатор позволяет использовать любой php-код без ограничений. Например:

<?php
	$hello = 'Привет!';
	$descr = 'Это мой сайт';
?>

<h1>{{ $hello }}</h1>
<h3>{{ $desc }}</h3>

Пример с использованием if.

{% 
	$theme = 1; // or 2, 3
%}

{% if ($theme == 1) : %}
	<div class="t-red">This red</div>
{% endif %}

{% if ($theme == 2) : %}
	<div class="t-green">This green</div>
{% endif %}

{% if ($theme == 3) : %}
	<div class="t-blue">This blue</div>
{% endif %}

Сниппеты

Сниппеты — это код или текст, пригодный для повторного использования и вынесеный для удобства в отдельный файл. Например счетчик, кнопки Твиттера или код google analytics. Сниппеты размещаются в отдельных файлах в каталоге lpf-content/snippets.

Подключение сниппета в тексте страницы осуществляется с помощью функции mso_snippet('сниппет'), например:

<?= mso_snippet('twitter') ?>

— выведет сниппет из файла twitter.php.


Set-фрагменты

Если на странице используются одинаковые фрагменты текста, то их можно оформить с помощью set-блоков. Каждый такой блок именуется и выводится в произвольном месте на странице. Для включения этой возможности укажите в конфигурации $VAR['set_text'] = true;

[set=1]текст1[/set]
[set=2]текст2[/set]

<h1>[set_out=1]</h1>
<h2>[set_out=2]</h2>

<b>[set_out=1]</b>
<u>[set_out=2]</u>

<i>[set_out=1]</i>
<s>[set_out=2]</s>

Результат:

текст1
текст2

<h1>текст1</h1>
<h2>текст2</h2>

<b>текст1</b>
<u>текст2</u>

<i>текст1</i>
<s>текст2</s>

Компоненты

Компоненты — это дополнительные модули, которые позволяют подключить к странице произвольные сторонние библиотеки, jQuery-плагины и т.п. Компоненты могут иметь собственные опции.

См. статью Создание компонентов LPF


A/B-тестирование

Данное тестирование позволяет выявить наиболее эффективную страницу или блок из нескольких. То есть подготавливаются страницы с небольшими отличиями и посетителям они показываются случайным образом. Та страница, которая окажется более эффективной (отследить это можно с помощью Google Analytics) и считается «победителем».

Создайте файл lpf-content/config/config.php, где разместите php-код:

define("HOME_PAGE", mso_ab(array('home1', 'home2', 'home3')));

— где «home1», «home2», «home3» — страницы, участвующие в A/B-тестировании. Количество страниц может быть произвольным.

Функцию mso_ab() можно использовать когда нужно случайным образом получить один элемент из указанных. Например случайным образом выводить один из блоков.

$theme = mso_ab(array(1, 2, 3));

if ($theme === 1) 
{
	echo 'BLOCK 1';
}
elseif ($theme === 2)
{
	echo 'BLOCK 2';
}
else
{
	echo 'BLOCK 3';
}

Создание статичных страниц

Landing Page Framework позволяет создавать статичные html-страницы. Создается готовый html-файл, который может быть скопирован на сервер.

Для создания статичной страницы следует использовать параметр $VAR['generate_static_page'].

$VAR['generate_static_page'] = BASE_DIR . 'static/my_page.html'

Этот код укажет LPF создать файл my_page.html в каталоге static.

В результирующем html-файле можно автоматически заменить URL-адреса основного сайта. Для этого используется параметр $VAR['generate_static_page_base_url'].

$VAR['generate_static_page_base_url'] = '/assets/';

Это заменит все вхождения адреса BASE_URL (это адрес главной страницы сайта) на «/assets/».


Модульная структура шаблона

Если в шаблоне страницы можно выделить шапку и подвал, то используются файлы header.php и footer.php.

Если требуется разместить какой-то код в секцию HEAD, то разместите его в файле head.php

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

$VAR['start_file'] = SET_DIR . 'header.php';
$VAR['end_file'] = SET_DIR . 'footer.php';

Поддержка AJAX, POST и т.д.

LPF легко справляется со сложными задачами, требующими перехвата POST/GET/AJAX-запросов. Для этого используется несколько предопределенных файлов.

Файл _post.php перехватывает post/ajax-запрос. В этом файле можно разместить свой обработчик входящих данных, после которого работа LPF будет прекращена.

Если нужно управлять загрузкой данных после POST-обработчика, то используется файл _post2.php. Если этот файл завершается как return 'STOP';, то дальнейшая работа LPF будет прекращена. Во всех других случаях — продолжена (загрузка страницы и т.д.)

Если требуется перехватить управление не только POST, но и любых других данных (например SERVER), то используется файл _server.php. Если он также завершается через STOP, то LPF прекратит дальнейшую загрузку.

См. статью Отправка произвольной формы без перезагрузки страницы


Кэширование и скорость работы сайтов на LPF

Продуманная архитектура кэширования позволяет сайтам на LPF достичь очень высоких скоростных показателей. Сайт на LPF по скорости можно сравнить разве что с обычным статичным html-сайтом.

В файле .htaccess LPF автоматически прописывает т.н. браузерное кэширование: управление временем кэша и gz-сжатием трафика.

См. статью Проверяем скорость страниц в PageSpeed Insights

О проекте

Landing Page Framework упрощает создание целевых страниц, избавляя вебмастера от массы рутинных операций. Фреймворк обладает мощным ядром, способным решать сложные задачи. Сайты, созданные в LPF, будут работать с очень высокой скоростью даже на слабых серверах.

Контакт