Что такое Symfony 2

symfony_logo-750x410

Высокопроизводительная среда (фреймворк) для разработки надёжных приложений на PHP5.

Symfony бесплатен и публикуется под лицензией MIT, не требующей дополнительных платежей. Проект активно спонсируется и развивается французской компанией Sensio.

Множество других современных фреймворков или систем управления сайтом (CMS) используют ядро Symfony, что говорит о заслуженном признании профессиональным сообществом.

Для чего Symfony 2 нужен разработчикам

  • Ускоряет разработку.
  • Оберегает от ошибок.
  • Стандартизирует разработку.
  • Облегчает доработку и поддержку.

Для чего Symfony 2 нужен заказчику

  • Гарантия профессионализма и высокого уровня разработки.
  • Независимость от одной компании.,

Версии

Цвет Описание
Красный Старая версия; не поддерживается
Зелёный Текущая версия
Голубой Планируемая версия
Версия Дата релиза Поддержка Версия PHP Версия ORM Окончание поддержки Заметки
1.0 Январь 2007 3 года >= 5.0 Январь 2010
1.1 Июнь 2008 1 год >= 5.1 Июнь 2009 Патчи безопасности выпускались до июня 2010
1.2 Декабрь 2008 1 год >= 5.2 Ноябрь 2009
1.3 Ноябрь 2009 1 год >= 5.2.4 Propel: 1.4Doctrine: 1.2 Ноябрь 2010
1.4 Ноябрь 2009 3 года >= 5.2.4 Propel: 1.4Doctrine: 1.2 Ноябрь 2012 Версия 1.4 идентична версии 1.3, но в ней не поддерживаются возможности, объявленные нежелательными к использованию в версии 1.3[6]
2.0[7] Июль 2011 >= 5.3.2 Doctrine: 2.1 Март 2013
2.1[8] Сентябрь 2012 8 месяцев >= 5.3.3 Doctrine: 2.2 Июнь 2013
2.2[9] Март 2013 8 месяцев >= 5.3.3 Doctrine: 2.2 Ноябрь 2013
2.3[10] Июнь 2013 3 года >= 5.3.3 Doctrine: 2.2.3 Май 2016 Первая версия в ветке 2.x с долгосрочной поддержкой
2.4[11] Ноябрь 2013 10 месяцев[12] >= 5.3.3 Doctrine: 2.2.3 Сентябрь 2014
2.5[13] Июнь 2014 8 месяцев >= 5.3.3 Doctrine: 2.2.3 Январь 2015
2.6[14] Ноябрь 2014 8 месяцев >= 5.3.3 Doctrine: 2.2.3 Июль 2015
2.7 Май 2015 3 года >=5.3.9 Doctrine: 2.2.4 Май 2018 Версия с долгосрочной поддержкой
2.8 Ноябрь 2015 3 года >=5.3.9 Doctrine: 2.2.4 Ноябрь 2018 Версия 2.8 вышла одновременно с версией 3.0 и является долгосрочной, но поддерживает возможности версии как 3.0 так 2.7. Версия 2.8 считается переходным на 3.0, она помогает перевести свой проект с 2.7 на 3.0. Версия 2.8 предупреждает о функциях которые не поддерживаются в 3.0 и помечает их как устаревшие, но дает возможность их все еще использовать.
3.0[15] Ноябрь 2015 8 месяцев >=5.5.9 Doctrine: 2.2.4 Июль 2016 Версия с поддержкой PHP 7.0
3.3 [15] Май 2017 3 года Версия с долгосрочной поддержкой

1. Установка и настройка

Скачать дистрибутив можно с официального сайта. Думаю лучше скачать версию-standart которая идёт со всеми дополнительными компонентами. Далее я предпологаю что архив был распакован в корневую папку вашего веб-сервера.
Проверить что все корректно работает можно по этой ссылке: http://localhost/Symfony/web/config.php.
Если все нормально, то можно начинать, но для начала нужно закомментировать одну строку в файле Symfony/web/app_dev.php

$kernel->loadClassCache();

Очень странное решение, по умолчанию включать кеш в режиме разработки.

2. Создание нового приложения

Приложения в Symfony 2 имеют модульную структуру, модули называются бандлами (bundle). Наше demo-приложение будет находиться в своём отдельно бандле. В Symfony существует очень много консольных команд, которые помогут вам в работе. Есть соответсвующая команда для генерации структуры нового бандла:

php app/console generate:bundle --namespace=Demos/BlogBundle

Эту команду нужно выполнить из консоли, находясь в папке Symfony/. Если вы работаете в линуксе, то можете присвоить файлу console права на выполнения и не писать перед ним php. Генератор задаст несколько простых вопросов на каждый из которых у него есть ответ по умолчанию. Так как мы создаём своё первое приложение, то согласимся на все варинты. Итак, нажав несколько раз клавишу enter мы получим скелет нашего бандла в папке Symfony/src/Demos/BlogBundle.

3. Контроллер и основы роутинга

Как и большинство современных фреймворков, Symfony придерживается паттерна MVC. Мы начнём своё знакомство с реализацией этого паттерна в Symfony с последней буквы, т.е. контроллера.
Наш маленький бандл уже имеет один контроллер, он называется DefaultController и находися в папке src/Demos/BlogBundle/Controller. Если вы заглянете внутрь него, то увидите что у него реализован экшен indexAction. Сейчас мы увидим что он делает. Откройте в своём браузере адресhttp://localhost/Symfony/web/app_dev.php/hello/username.
Вы можете удивиться почему именно такой адрес у этой страницы, но если внимательно посмотрите на PHPDoc (это такие специальные комментарии, которые начинаются с символов /**) перед функцией indexAction, то наверняка всё поймёте. Аннотация Route указывает по какому адресу доступен данный экшен и какой параметр он имеет.
Вообще, можно добиться того же и без аннотаций, но они применяются в Symfony повсеместно, так что лучше сразу к ним привыкать. С одной стороны они более лаконичны, а с другой для них не очень хорошо поддерживается автокомплит в моей любимой IDE.
За настройку того как будут выглядеть урлы вашего приложения отвечает специальный компонент Routing, он очень гибко позволяет всё настроить. Более подробно можно почитать в соответсвующем разделе документации. Мы же кратко рассмотрим почему наше приложение открывается именно по этому адресу и почему от нас не потребовалось для этого ничего настраивать.
Если вы не очень внимательно читали что у вас спрашивал генератор бандла, то вполне могли пропустить его вопрос о том обновить ли настройки роутинга в соответствии с новым бандлом. Если пропустили, то можете открыть файл Symfony\app\config\routing.yml. Там вы увидите такую запись:

DemosBlogBundle:
resource: "@DemosBlogBundle/Controller/"
type: annotation
prefix: /

Первая строка — это название секции с конфигурацией, оно соответсвует имени нашего бандла. Вторая строка — указывает откуда импортировать настройки. В данном случае будут читать все файлы из папки с контроллерами, а следующая строка говорит что все необходимые настройки описаны в аннотациях экшенов. Ну а аннотации мы уже видели. И, наконец, последняя строка указывает какой префикс будет добавлен ко всем урлам из нашего бандла. По умолчанию все урлы доступны напрямую от имени входного скрипта. Давайте поменяем / на /blog чтобы было более логично.
Теперь все что мы будем делать будет доступно по адресу http://localhost/Symfony/web/app_dev.php/blog.

4. Работа с Doctrine: создание модели

Теперь перейдем к следующему шагу — работе с базой данных. Я буду использовать Doctrine, хотя никто не обязывает этого делать, вместо доктрины можете использовать любой удобный вам способ работы с бд. Однако, доктрина хорошо интегрирована с symfony и работать с ней одно удовольствие.
Для начала настроим подключеник к бд. Откройте файл app/config/parameters.ini и опишите свои настройки. Кстати, интересно, почему все настройки по дефолту в yml, а этот в ini-файле. Если в настройках вы указали не сущесвующую базу данных, то выполните следующую команду:
php app/console doctrine:database:create
и доктрина сама создаст её.
Доктрина является полноценной ORM, но построна она по другому принципу нежели ActiveRecord, с которым у многих сейчас однозначно ассоциируется это понятие. Доктрина реализует шаблон Data Mapper который очень подрбно описан здесь.
Для начала нам нужно описать сущность с которой мы будем работать. Это будет класс Post с нужными нам свойствами. Создайте папку src/Demos/BlogBundle/Entity. В ней создайте файл Post.php и заполните его следующеим кодом:

<?php
namespace Demos\BlogBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity
* @ORM\Table(name=”post”)
*/
class Post {

/**
* @ORM\Id
* @ORM\Column(type=”integer”)
* @ORM\GeneratedValue(strategy=”AUTO”)
*/
protected $id;

/**
* @ORM\Column(type=”string”, length=255)
*/
protected $title;

/**
* @ORM\Column(type=”text”)
*/
protected $body;

/**
* @ORM\Column(type=”datetime”)
*/
protected $created_date;

/**
* @ORM\Column(type=”datetime”)
*/
protected $updated_date;
}

Сам класс никак не связан с базой данных, но в аннотациях содержится описание какие из свойств класса будут колонками таблицы и какого типа они будут. Думаю из аннотаций всё вполне очевидно. Все свойства объявлены защищёнными, поэтому для доступа к ним нужно создать геттеры и сеттеры. Для это используем соответсвующую команду доктрины:

php app/console doctrine:generate:entities Demos/BlogBundle/Entity/Post

Теперь посмотрите в файл Post.php, в нём должны были появиться соответсвующие методы. У нас есть есть описание модели, по ней нужно создать соотвествующую таблицу в базе данных. Для этого выполните:

php app/console doctrine:schema:update --force

Если все прошло без ошибок, то в вашей бд должна было появиться таблица post. Перейдём к непосредсвенной работе с объектами. В классе DefaultController создайте новый экшен с таким кодом:

/**
* @Route("/create")
*/
public function createAction() {
$post = new Post();
$post->setTitle('Demo Blog');
$post->setBody('Hello Symfony 2');
$post->setCreatedDate(new \DateTime("now"));
$post->setUpdatedDate(new \DateTime('now'));

$em = $this->getDoctrine()->getEntityManager();
$em->persist($post);
$em->flush();

return new Response(‘Created product id ‘ . $post->getId());
}

А в начало файла нужно добавить импорт нужных пространств имён:

use Demos\BlogBundle\Entity\Post;
use Symfony\Component\HttpFoundation\Response;

Теперь если вы откроете адрес http://localhost/Symfony/web/app_dev.php/blog/create, то в ответ должны получить id созданной записи.
Теперь создадим экшен для вывода сущесвующих записей. Для этого нам понадобится экшен с параметром, который будет принимать id записи.

<?php
/**
* @Route("/show/{id}")
*/
public function showAction($id)
{
$post = $this->getDoctrine()->getRepository('DemosBlogBundle:Post')->find($id);

if (!$post) {
throw $this->createNotFoundException(‘Страница не найдена!’);
}

$html = <<<HTML
<h1>{$post->getTitle()}</h1>

<p>{$post->getBody()}</p>

<hr/>
<small>Запись создана {$post->getCreatedDate()->format(“Y-m-d H:i:s”)}</small>
HTML;

return new Response($html);
}
?>

Теперь можете просмотреть запись пройдя по ссылке http://localhost/Symfony/web/app_dev.php/blog/show/1. На этом с доктриной закончим, подробности в документации.

5. Twig: первые шаблоны

Пора перейти к заключительной части нашего знакомства с Symfony. На прошлом шаге мы поступили не очень хорошо смешав логику работы с выводом записи в showAction. Избавиться от этого недостатка нам поможет View (по русски «вид» звучит как-то не очень хорошо, поэтому я буду называть это вьюхой ;).
В качестве шаблонизатора Symfony использует Twig — пожалуй лучший PHP-шаблонизатор с которым я работал. Как и любой другой компонент симфони можете заменить его на то, что вам больше нравится.
Как вы помните у экшена indexAction есть специальная аннотация Template(), которая говорит что у него есть шаблон.

return array('name' => $name);

Массив который возвращается из экшена передаётся во вьюху, ключи массива буду именами переменных которые будут там доступны.
Давайте изменим экшен show. Нужно добавить соответсвующую аннотацию и вместо того чтобы возвращать объект Response вернуть массив в котором будет просматриваемая запись. Вот что получилось:

/**
* @Route("/show/{id}")
* @Template()
*/
public function showAction($id)
{
$post = $this->getDoctrine()->getRepository('DemosBlogBundle:Post')->find($id);

if (!$post) {
throw $this->createNotFoundException(‘Страница не найдена!’);
}

return array(‘post’ => $post);
}

Согласитесь, так гораздо лучше. Теперь в папке src/Demos/BlogBundle/Resources/views/Default создайте файл show.html.twig в который перенесите html код который был у нас экшене. Синтаксис твига отличается от php поэтому придется кое-что изменить. Конечный вариант смотрите в исходниках. Узнать больше о синтаксисе твига можно в его документации.

 

CodeIgniter: Обзор фреймворка для PHP

 codeigniter_logo

Для разработки современных WEB-приложений «голого» языка программирования уже давно недостаточно. Если вы привыкли разрабатывать проекты на php, то вам хороша, известна ситуация, когда приходится писать/переносить кучу повторяющегося рутинного кода для очередного проекта. Из этого положения каждый девелопер выкручиваться по-своему – одни создают свои шаблоны и используют их повсеместно, другие – выбирают всевозможные надстройки для языка – CMF (Content Management Framework).

Почему нужно использоваться фреймворки?

Переходить к использованию фреймворков заставляет не дань моде, скорее это неизбежный шаг, который рано или поздно вынужден совершить любой WEB-программист. Приложения «из браузера» каждый день усложняются, и по функционалу уже давно не уступают многим десктопным вариантам. Разобраться со всеми современными технологиями, используемыми для разработки таких сложных приложений достаточно трудно, а иногда и вовсе невозможно, поскольку появляются они крайне динамично. Чтобы всегда оставаться на коне приходится выбирать CMF, которые упрощают процесс адаптации к новым технологиям. Но не будем петь хвалебных песен CMF, а сразу назовем пять причин, по которым стоит распрощаться со стереотипами и начать использовать фреймворки в своих проектах:

1. Постоянная структура. При использовании фреймворков требуется четкое разделение ролей для каждого файла проекта. Например, если фреймворк построен на архитектуре MVC, то все созданные вами контроллеры, представления и модели будут лежать по разным папкам. При постоянной разработке новых, а также поддержки старых проектов не нужно ломать голову над вопросом: «А куда же я положил такой то сценарий?» или «Где у меня реализована такая-то функция». Кроме того, дальнейшую поддержку таких проектов гораздо проще передавать другим программистам. Ведь чтобы они смогли разобраться в коде и принципах его построения, им достаточно взглянуть на документацию фреймворка.

2. Никаких велосипедов. Пожалуй, каждый программист хоть раз да умудрялся изобрести свой велосипед. Причин может быть много, но самая распространенная – невозможность найти готовое решение. При использовании фреймворков все намного проще, т.к. почти все CMF несут на своем борту кучу библиотек/плагинов с готовым кодом и еще кучу всевозможных полезностей валяются на просторах интернета.

3. Скорость и качество. Самостоятельно решенные задачи решаются не всегда идеально, зачастую полученный результат поддается тотальной оптимизации, но по разным причинам, к ней (оптимизации) прибегают в самую последнюю очередь. Если вообще прибегают. С CMF все проще, поскольку все входящие в него функции тщательно тестируются многотысячной армией программистов (если, конечно, фреймворк популярен) и в случае обнаружения слабых мест, оптимизация последует незамедлительно и более качественное решение войдет в следующую версию фреймворка.

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

5. Оперативная помощь. Получить квалифицированную помощь при использовании фреймворка просто и быстро. Любой популярный и функциональный CMF имеет сообщества, постоянно занимающиеся тестированием и поддержкой.

Разрешите представить – Code Igniter

За свою практику разработки приложений для WEB мне пришлось перепробовать несколько фреймворков. Некоторые из протестированных мной CMF были чересчур сложны в использовании и изучении (например, фреймворк от Zend) – разработка приложений с помощью таких продуктов не упрощалась, а усложнялась. Усложнения мне были не нужны, поэтому я продолжал искать альтернативу. К счастью она нашлась, – ей стал Code Igniter.


Рисунок 1 (Официальный сайт CodeIgniter)

Возможности CodeIgniter

Code Igniter – бесплатный функциональный фреймворк для php программистов. Среди ключевых возможностей этого продукта можно выделить:

1. Полная совместимость с php 4. Хоть сейчас это не столь актуально, но пару лет назад, когда у большинства хостеров была установлена четвертая версия этого интерпретатора, Code Igniter выгодно отличался на фоне конкурентов. Так, что если вы до сих пор застряли во вчерашнем дне или использоваться php4 вас обязывают другие причины, то теперь вы сможете это делать вместе с Code Igniter.

2. Простой в изучении. Сравнивая Code Igniter с альтернативными решениями можно смело сказать, что он наиболее прост. Помимо хорошо продуманной архитектуры проекта, разработчики не схалтурили и снабдили свое детище отличной документацией. Действительно, документация у CI написана подробно, хорошо структурирована и оперативно обновляется.

3. Безопасность. Проблемы в системе безопасности присущи всем WEB-проектам, однако с CI многие из них решаются автоматически. Например, для точной фильтрации полученных данных на предмет XSS есть встроенная функция, которая позволяет не только удалить, но и сохранить в лог опасные данныеь. Очень удобно.

4. Расширяемость. CI очень гибок и хорошо поддается расширению. Научить фреймворк новым возможностям – пара пустяков. Достаточно подключить нужный плагин/хелпер/библиотеку и начать радоваться новому функционалу. 5. Богатые возможности. Вместе с CI поставляются библиотеки, плагины, хелперы, которые позволяют сразу перейти к решению задач и не заморачиваться изобретением велосипедов. Не нужно заниматься кодокопанием, достаточно воспользоваться специальным механизмом, позволяющим без танцев с бубном «перевоспитать» CI.

6. Active Record. В CI используется модифицированная версия паттерна Active Record Database. С помощью Active Record, работа с базой данных превращается в сплошное удовольствие. Больше не придется писать многочисленные «SELECT» для выбора данных, достаточно лишь воспользоваться методами этого класса, а это всего две небольшие строчки кода. Помимо упрощенного доступа к БД, этот класс позволяет забыть об используемой СУБД. Вы можете построить приложение, используя MySQL, а потом также легко запустить его под Oracle. И это еще не все. Ко всему прочему, AR позволяет хоть немного, но обезопасить работу с СУБД, т.к. при составлении запросов все значения экранируются.

7. Высокая производительность. Столь большие возможности ничуть не повлияли на производительность фреймворка. Работает он действительно шустро. Такое быстродействие достигается за счет очень «легкого» ядра. Все дополнительные библиотеки подключаются лишь по мере необходимости.

8. Архитектура MVC. CI заточен под архитектуру MVC (Model-View-Controller), позволяющую отделить логику от отображения. При работе в команде (программисты + дизайнеры), такой подход будет весьма востребован.

9. Поддержка шаблонизатора. Несмотря, на то, что CI не требует обязательного использования шаблонизатора, при желании им можно воспользоваться.

10. Дружественность к поисковикам. Благодаря своим URL’ам, Code Igniter отлично дружит с поисковыми система и поддается индексации.

MVC

Model View Controller (MVC) – архитектура программного обеспечения, позволяющая разделить модель данных, пользовательский интерфейс и управляющую логику на три отдельные составляющее. Причем разделить ее так, что изменение одного не повлияет на работу других компонентов. Использовать эту архитектуру очень удобно при разработке больших проектов, работа над которыми идете в команде. Например, работая над проектом, программистам не нужно заботиться о будущем интерфейсе. Их цель – получить и обработать данные, а потом отправить их пользователю. Вид, в котором пользователь получит эти данные, программистов волновать не должен. Это уже работа дизайнеров и верстальщиков, которые могут параллельно создавать представления для полученных данных. Что же касается программистов, то они тоже могут распараллеливать свою работу – например, часть разработчиков может сосредоточиться на разработке логике программы, а другая – на проектировании структуры базы данных. Как видно из примеров, при использовании MVC становится возможным распараллелить работу команды, тем самым повысить общую производительность. Итак, MVC состоит из сущностей:

1. Model (модель) – служит для предоставления данных. Как правило, в модели описываются функции, классы для работы с базой данных.

2. View (представление) – отвечает за передачу пользователю обработанных данных.

3. Controller (Контроллер) – занимается интерпретацией запрашиваемых/отправленных пользователем данных, взаимодействует с моделью для их получения. Важно заменить, что Code Igniter, в отличие от других MVC-фреймворков не заставляет использовать MVC в полной мере. Если вам не удобно делить код на три составляющие, то это делать вовсе необязательно. Для создания рабочего приложения вы можете ограничиться одним лишь контроллером, организовав в нем все логику и работу с СУБД. Тем немее, понимание MVC, позволит вам в будущем с легкостью осваивать альтернативные фреймворки (список их можно увидеть в соответствующей врезке).

Установка Code Igniter

Свежий дистрибутив фреймворка вы всегда можете взять с www.codeigniter.com. Разработчики достаточно часто обновляют свой продукт, поэтому я советую подписаться на RSS и постоянно быть в курсе всех последних изменений. Итак, предположим, что вы скачали дистрибутив фреймворка. Теперь можно распаковать архив в папку DocumentRoot web-сервера Apache. Вследствие этих нехитрых действий фрейморк становится готов к работе, в чем легко можно убедиться, зайдя на ваш сайт. Если фреймворк работает успешно, то в браузере появится картинка примерно такая, как на рисунке 2.


Рисунок 2 (Фреймворк готов!)

Базовая настройка

Пока работоспособность фреймворка не представляет ничего интересного (такое окно и средствами php недолго вывести), поэтому двинемся дальше и посмотрим на структуру каталогов, которая у нас получилась после распаковки файлов дистрибутива. В корне папке Document Root у нас появилось два каталога и один файл (index.php). Откроем этот файл в php редакторе. Настройки этого файла влияют на работу всего проекта, созданного на основе CI.

Итак, давайте посмотрим на наиболее важные переменные, доступные для изменения в этом файле. $sytem_folder – название и путь к папке, содержащей все внутренности CI. $aplication_folder – путь к папке с приложением. Значение этих переменных можно оставить по умолчанию, но при использовании CI в реальных проектах я вам рекомендую переименовать эти папки и изменить путь. Это необходимо делать в целях безопасности. Незачем никому знать в какой папке вы храните файлы вашего приложения. По своему опыту работы с этим фреймворком, я рекомендую создать отдельную папку, в которой вам предстоит хранить все свои проекты. Например: project/application1, prroject/application2.

Таким образом, вы сможете на одной копии фреймворка создавать и поддерживать несколько отдельных проектов. Помимо изменений путей к папкам, в файле index.php вы также можете изменить вид отображения ошибок (error_reporting()). По умолчанию будут отображаться все ошибки, но опять же, в реальном приложении лучше ничего не отображать. Теперь перейдем в папку приложения – system/application. В ней содержится несколько каталогов:

/config – здесь хранятся все настройки для текущего проекта.

/controllers – в эту папку нужно сохранять все созданные вами контроллеры.

/error – шаблоны для страниц-ошибок.

/helpers – папка предназначена для хранения созданных вами хелперов.

/hooks – директория для «ловушек».

/language – папка для хранения языковых файлов.

/libraries – все созданные вами библиотеки должны быть здесь.

/models – папка с моделями данных.

/views – директория для хранения представлений вашего проекта.
Изучая дерево директорий проекта Code Igniter, вы наверняка обратили внимание на незнакомые названия. Чтобы не путаться и говорить друг с другом на одном языке, давайте дадим им определения. Итак, в платформе CI, существуют следующие сущности:

Helpers (Хелперы) – коллекции функций. В каждом вашем проекте может возникнуть необходимость объявить что-нибудь специфическое. Вот все эти функции лучше всего объявлять в хелперах. Для удобства использования, хелперы обычно группируют по входящим в них функциям. Например, файловый хелпер, в него входят функции для работы с файлами.

Hooks (Ловушки) – встроенная в CI технология, позволяющая изменить поведения работы фреймворка без внесения изменений в ядро. Libraries (Библиотеки) – ваши собственные классы. Все свои классы, выполняющее универсальный код, в CI принято определять как библиотеки.

Практика

Чтобы продемонстрировать реальные возможности Code Igniter, я решил на практике рассмотреть процесс создания такого популярного сервиса как «Блог». Сегодня вести блоги чрезвычайно модно, поэтому пример весьма актуален. Итак, приступим. Первым делом подготовьте фреймворк к работе – распакуйте его дистрибутив в папку DocumentRoot WEB-сервера Apache.

Откройте файл /system/application/config/config.php, найдите в нем определение base_url (базовый урл) и укажите полный путь к папке, в которой расположен CI. Если вы распаковали его в корень директории DocumentRoot и будете разрабатывать проект на локальной машине, то просто укажите здесь: http://127.0.0.1. Все, больше нам config.php не понадобится и потому его можно закрывать. Теперь нам нужно определить контроллер, который будет загружаться по умолчанию (т.е. когда пользователи будут обращаться к http://127.0.0.1).

Несмотря на то, что мы еще ничего и не создали, но скоро точно создадим, а создадим мы контроллер с именем Blog, поэтому давайте сразу пропишем к его в маршрут по умолчанию. Все маршруты описываются в файле routes.php, который расположен в папке config. Открываем этот файл, находим $route[‘default_controller’] и присваиваем ему значение Blog. Сохраняем. При разработке нашего первого проекта, нам потребуется возможность обращаться к разным хелперам. Поэтому нам необходимо указать, чтобы эти хелперы запускались автоматически (хотя их инициализацию можно производить прямо в коде). Чтобы определить объекты, которые должны инициализироваться при старте, нужно отредактировать еще один файл настроек – autoload.php. Откроем этот файл и найдем секцию, в которой происходит описание автозагрузки хелперов (Auto-load Helper Files). Следуя шаблону из комментария, опишеме следующие хелперы: html, url, typography.

На этом можно считать, что базовые настройки мы сделали. Сейчас остается лишь установить настройки для соединения с базой данных, после чего сразу перейти к разработке. Все настройки подключения к базе данных хранятся в файле database.php. Откроем его и пропишем все необходимые настройки. Я не буду комментировать редактирование этого файла, т.к. сложного в этом ничего нет, и если вы хоть раз работали с базами данных, то проблем возникнуть не должно.


Рисунок 3 (Разработка в самом разгаре)

Создаем базу данных

Для сегодняшнего примера нам потребуется база данных. В ней мы будем хранить все топики блога, а также комментарии оставленные пользователями. Имя базы вы должны были уже выбрать (когда настраивали соединение), теперь вам нужно ее создать физически. В своем примере я использую базу данных с именем test и содержащую две таблицы:

1. tblcomments – комментарии, оставленные пользователями:

2. tblrecords – таблица будет содержать все записи блога:


Рисунок 4 (Макет базы данных)

Готовим модель

Итак, создадим новый файл для будущей модели, перепишем в него код из первого листинга, сохраните в файл mblog.php:

Листинг 1. Модель

Описание любой модели в CodeIgniter начинается с определения нового класса-наследника от Model. Самое первое, что я делаю после объявления класса – вызываю конструктор. Обратите внимание, что для определения конструктора я использую функцию с именем таким же как и у класса. Этот метод используется в php4, а для php5 мы должны использовать __contruct(). По идее, для этой модели нам не нужно использовать конструктор, его объявление я привел только для демонстрации. Когда в реальном приложении вам потребуется описать конструктор, то не забудьте в самом начале указать parent::Model. Это необходимо делать для того, чтобы, конструктор вашего класса не перекрывал конструктор класса Model.Итак, давайте взглянем на функцию с именем get_last_record();. В первой строчке тела этой функции я обращаюсь к классу db и вызываю функцию order_by(). Эта функция позволяет установить оператор ORDER BY для будущего запроса. В качестве параметров, функции нужно передать:

– поле, по которому нужно упорядочить данные – направление упорядочивания. В блогах принято, чтобы новые записи были в самом верху, поэтому в качестве имени поля я передаю «date», хранящий дату публикуемого топика, а во втором параметре указываю desc (по убыванию). Установив Order by, можно смело выполнять запрос. Для простого получения данных в AR есть метод get(), который принимает два параметра:
– имя таблицы, из которой выбирать данные
– количество записей для выборки

Думаю, с выборкой данных все понятно и вы уже смогли прочувствовать прелести использования ActiveRecords, теперь давайте взглянем на то, как делается добавление новых записей в таблицу. А делается она очень просто. Для вставки используется метод insert() класса db. Методу нужно передать всего лишь два параметра:

– имя таблицы
– массив данных, в котором ключ – это имя поля в таблице

Делаем контроллер

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

Листинг 2. Контроллер.

Первое, с чего начинается новый контроллер – с описания нового класса-наследника от Controller. Для нашего примера я объявил класс Blog. В самом классе, нам нужно описывать функции, имена которых будут с url’ами. Например, объявив функцию foo(), и обратившись по адресу http://localhost/index.php/blog/foo мы спровоцируем ее выполнение. Но вернемся к нашему листингу. Сразу после описания класса, у меня идет объявление функции index(). Функция с таким именем будет автоматически вызывать при обращении к нашему контроллеру (http://localhost/index.php/blog).

В теле этой функции, я в первую очередь инициализирую созданную нами модель. Для инициализации используется loader load -> model. В качестве параметров я передаю ему имя созданной нами модели и также значение true, указывающее на то, что установка с БД должна произвестись автоматически. После инициализации модели я сразу обращаюсь к одной из ее функций – get_last_record().

Как вы помните, после выполнения, эта функция возвратит все имеющиеся в ней записи. Полученные данные нужно отправить пользователю, для этого я загружаю представление vblog. Для загрузки представлений используется конструкция load -> view(). Из параметров нужно передать:

– Имя представления
– Данные, из которых будет формироваться страница для пользователя.

Пример исходного текста представления вы можете посмотреть в листинге 3. Я не буду подробно расписывать содержимое листинга, поскольку все, что в нем происходит – печать данных стандартными средствами php. Единственное, что нуждается в объяснении – получение имен переменных. Как ты помнишь, при вызове представления, в качестве третьего параметра мы передавали массив с данными. Получение значений осуществляется через переменные, имена которых равны именам ключей передаваемого массива. Например, если у нас есть массив array с ключом sample ($array[‘sample’]), то для того, чтобы получить доступ из представления к значению sample, нам нужно из представления всего лишь на всего обратиться к переменной $sample.

Листинг 3. Первое представление

Тестируем пример

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


Рисунок 5 (Блог в действии)

Некрасивые url

Посмотрев наш «блог» вы наверняка заметили в адресной строке url вроде http://localhost/index.php/blog. Такой url выглядит ужасно и совершенно не годится для реального проекта. Для улучшения внешнего вида url, я рекомендую вам воспользоваться возможностями плагина mod_rewriter WEB-сервера Apache. С его помощью вы быстро приведете url к должному виду.

Заключение

К сожалению, рассмотреть все возможности Code Igniter в рамках одной статьи просто-напросто невозможно, да и не нужно. Моя цель была рассказать вам про такой интересный продукт как Code Igniter и я думаю, что эта задача выполнена. Все, что сегодня осталось за кадром, вы всегда сможете почерпнуть из официальной документации. Мне остается пожелать вам только удачи!

LARAVELLaravel — бесплатный веб-фреймворк с открытым кодом, предназначенный для разработки с использованием архитектурной модели MVC (англ. Model View Controller — модель-представление-контроллер). Laravel выпущен под лицензией MIT. Исходный код проекта размещается на GitHub

В результате опроса sitepoint.com в декабре 2013 года о самых популярных PHP-фреймворках Laravel занял место самого многообещающего проекта на 2014 год

В 2015 году в результате опроса sitepoint.com по использованию PHP-фреймворков среди программистов занял первое место в номинациях:

  • Фреймворк корпоративного уровня
  • Фреймворк для личных проектов

Laravel — это чистая и стильная основа для разработки. Он избавит вас от спагетти кода. Поможет вам создавать прекрасные веб-приложения используя простой и выразительный синтаксис. Разработка должна доставлять удовольствие. Наслаждайтесь глотком свежего воздуха.

Еще один PHP фреймворк, подумаете вы. Возможно, но он стоит того, чтобы на него посмотреть.
Фреймворк довольно молодой, 2011 год. Использует PHP 5.3. У него уже хорошее сообщество, много форков. Уже дорос до версии 3.0.

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

Что умеет

Bundles ( Модули ) — имеется репозиторий с обширным количеством бандлов.

The Eloquent ORM — ActiveRecordORM, умеет строить связи ( many to many, one to many, one to one )

Migrations — думаю, правило хорошего тона.

Redis — да, noSQL из коробки.

Environments — в зависимости от домена, может подгружать те или иные конфигурационные файлы.
Скажем, пропишем в файле paths.php

Теперь, если мы зайдем с домена начинающегося на localhost или заканчивающегося на .dev. Фреймворк будет подгружать файлы конфигов с папк application/config/local/* вместо application/config/*

IoC Container — методы для создания и, опционально, инстанцирования и хранения ссылок синглтонов. Это также значит, что вы будете меньше нуждаться в подгрузке внешних библиотек.

Class Auto Loading — так же, можно переопределить в конфиге любой системный класс.

Работа из под CLI — устанавливайте\создавайте миграции, бандлы, запускайте нужные роуты (крон скажем).

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

Возможностей из коробки довольно много, кому интересно, тот заглянет глубже.

 

 

opencart1

OpenCart – это многофункциональная  и легкая в использовании система, ориентированная на создание интернет-магазинов. Обладает дружелюбным, интуитивно понятным и визуально привлекательным интерфейсом. Любой сайт на основе этого решения легко оптимизируется под запросы поисковых систем, что существенно сокращает бесценное время на его индексирование, а это значит, что сайт быстро выйдет в лидеры.

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

 

Функциональность

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

В администраторской панели есть возможность управлять заказами и доступно управление несколькими платёжными сервисами

Как преимущества программного обеспечения официальный сайт отмечает следующие пункты

  • Открытость исходного кода.
  • Документированность ПО.
  • Неограниченность категорий, продуктов и их производителей.
  • Неограниченность информационных страниц.
  • Поддержка мультиязычности и перевода интерфейса.
  • Возможность устанавливать собственные темы.
  • Встроенные модули:
    • отзывы клиентов;
    • система рейтинга продуктов;
    • система изменения размера изображений;
    • система отображения сопутствующих продуктов;
    • система скидок и купонов;
    • система выбора способа доставки.
  • Возможность указать несколько налоговых ставок.
  • Возможность указать вес продукта без и с упаковкой и динамически рассчитываемая стоимость.
  • Поисковая оптимизация.
  • Неограниченная модульная система, для создания нескольких магазинов на одной платформе.
  • Инструменты резервного копирования и восстановления.
  • Отчёт об ошибках.
  • Регистрация ошибок.

Поисковая оптимизация

Официальный сайт сообщает, что поисковая оптимизация заключается в простановке мета-тегов

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

Сбор статистики

Как указано на официальном сайте, программное обеспечение собирает три вида статистики

  • Отчёт о продажах. Считаются продажи за день, неделю и месяц.
  • Просмотры товаров. Полезно для отображения самых просматриваемых товаров.
  • Купленные продукты. Высчитываются самые продаваемые товары.

Мультиязычность

Официальный сайт утверждает, что система управления содержимым переведена с английского на 23 языках мира

  • Французский
  • Немецкий
  • Итальянский
  • Испанский
  • Русский
  • Китайский упрощенный
  • Традиционный китайский
  • Японский
  • Голландский
  • Венгерский
  • Индонезийский
  • Фарси
  • Норвежский
  • Португальский
  • Румынский
  • Турецкий
  • Польский
  • Украинский
  • Китайский

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

1. Самый большой, жирный плюс: хорошая, вменяемая реализация MVC. Такой нет у WordPress, Joomla, Drupal в принципе. Дальше боюсь соврать (поправьте, если что), но по-моему нет даже у Magento и Prestashop. Да-да, сейчас меня закидают, мол, нафига козе баян. Нужен, товарищи. Адекватная система разделения шаблона, контроллера и логики работы с данными — это залог успеха, удобства наращивания функционала на вашем проекте и вообще. Как говорится, если вы не любите кошек, вы просто не умеете их готовить. При этом у вас в папке с отображениями может лежать несколько шаблонов дизайна с возможностью выбора нужного в админке.

2. Удобная админка — ничего лишнего, но всё, что надо, есть. Вам не придётся вставлять css и шаблоны через админку (кто это придумал вообще, прекращайте курить). Не в последнюю очередь благодаря вещам из п.1 любой раздел можно крутить-вертеть-кастомить лёгким движением редактора (ну давай, расскажи мне, как ты кастомил админку в WordPress). Есть и легко прикручиваются/откручиваются фильтры и валидаторы по любым полям. Как следствие, не нужны даже сообщества — движок фактически является фреймворком в классических традициях с примерами для самого себя. К слову, сообщество у OpenCart довольно-таки немаленькое, так что единомышленников в случае чего будет найти вполне реально.

3. Из коробки есть ЧПУ (даже для вордпресса для этого нужно ставить расширение). Но если вы их не используете — то проект не заморочен тонной излишних реврайтов для работы базового функционала. Не знаю, кому как, но мне было приятно — всё же легче осваивать новый инструмент, когда логика путей прозрачна.

4. Заточенность под магазин делает доступными из коробки много нужных везде вещей: регистрация и личный кабинет, сложные формы с валидациями (для оформления заказа), фильтры и сортировку, отзывы, и т.д. Да, всё это есть из коробки или в модулях и для того же Yii, как и для любого другого фреймворка, но подкупает, когда всё уже реализовано, только чуть подпили напильником.

5. Приятная мелочь, важный момент для владельцев магазинов — много разных статусов заказа, и легко добавить новый.
Итого — хороший, быстрый движок, фактически являющийся гибридом классического фреймворка и классической CMS.

А теперь немного о минусах, которые пока что удалось заметить.

1. При хорошей классической MVC отсутствует какая-либо вменяемая реализация модели. Слои абстракции, ActiveRecord — это всё далеко от Опенкарта. Модели содержат простые запросы вида $this->db->query(«SELECT * FROM customer»).

2. Как бы не было много всего нужного в существующей начинке, в самый неподходящий момент оказывается, что чего-то критичного нет. Например, функции «обратный звонок». Или активация почты с помощью кода. И прочих мелочей, которые в принципе не так-то и сложно сделать, но погрязаешь в доработках, хотя кажется, что движок-то должен это уметь сам. Существует довольно много различных модулей для него (включая вышеописанные), но почти все из них платные, хотя цены обычно и не выходят из предела $10. Впрочем, я написал это сам, и теперь у меня этот функционал будет на последующие случаи.

3. Проблема, о которой писали на Тостере: движок сохраняет язык в cookies и не передаёт в ссылке, что ведёт к проблемам при обмене ссылками и создаёт помехи для SEO.

4. Процесс покупки довольно жёстко предопределён, при этом содержит много лишнего. Например, из коробки при оформлении заказа без регистрации у пользователя спросят адрес трижды: просто адрес, адрес доставки и платёжный адрес. Из трёх магазинов мне во всех трёх это пришлось убирать руками в куче мест. Другой пример — обязательное поле «модель» при создании товара. Ну нет у человека модели, бывает такое — приходится тоже руками убирать. Т.е., обобщая данный пункт — если вам надо выпилить что-то лишнее или добавить что-то новое, приходится делать очень много телодвижений в большом количестве мест кода.

netcatnetcat — утилита Unix, позволяющая устанавливать соединения TCP и UDP, принимать оттуда данные и передавать их. Несмотря на свою полезность и простоту, данная утилита не входит ни в какой стандарт (например, POSIX).

В составе модуля поставляются 5 компонетов (см. ниже). Для каждого компонента в структуре первого сайта автоматически создаются разделы. Если на одной копии системы работают несколько сайтов, для них тоже можно организовать каталоги ссылок, вручную создав разделы и добавив соответствующие компоненты в созданные разделы.

Изначально раздел «Ссылки» выключен, в нем содержатся несколько подразделов. Они делятся на две группы: подразделы каталога (включены) и служебные разделы (выключены). Тематическими подразделами можно управлять при помощи стандартных инструментов NetCat – добавлять, удалять, изменять название, создавать подразделы 3, 4 уровня и т.д. Если вы создаете новый подраздел, добавьте в него компонент «Ссылки: каталог ссылок».

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

При добавлении ссылки модуль проверяет ее на соответствие условиям обмена (см. ниже – «Настройки модуля»). Если ссылка не удовлетворяет условиям, пользователю выводится предупреждение, если удовлетворяет – ссылка добавляется. Одновременно с добавлением посетителю и администратору отправляется письмо с информацией о добавленной ссылке (эту возможность можно отключить – см. «Настройки модуля»).

Проверка всех ссылок, расположенных в базе, может производиться как вручную, так и автоматически. По умолчанию проверка производится раз в сутки (периодичность можно изменить в разделе «Инструменты» – «Управление задачами» системы управления сайтами NetCat). В ходе выполнения проверки модуль «обходит» все страницы, на которых должны быть расположены ссылки, и в случае отсутствия «нашей» ссылки выключает/удаляет ссылку партнера или переводит ее в режим редиректа (см. – «Настройки модуля»). Если партнер не выполнял условия обмена (ссылка находилась в режиме редиректа или была выключена), но в ходе очередной проверки обнаружилось, что он стал их выполнять, ссылка переводится в обычный режим. При каждом изменении статуса ссылки партнеру высылается письмо (эта возможность можетбыть отключена).

Также в ходе проверки модуль отслеживает наличие купленных ссылок и выключает проданные ссылки (при окончании срока продажи).

На странице каталога ссылок доступны следующие возможности:

  • Просмотр списка ссылок как по категориям, так и в полном объеме
  • Поиск ссылок
  • Переход по подразделам каталога
  • Переход на страницы с условиями обмена и с кодами «наших» ссылок
  • Добавление ссылки

6UMI.CMS — коммерческая мультисайтовая система управления контентом, созданная командой российских разработчиков «Юмисофт». В массовую продажу поступила в 2007 году.

Удобство

Система управления сайтами UMI.CMS создана и продолжает совершенствоваться под лозунгом «Удобство для людей». Она интуитивно понятна, проста в освоении и удобна в использовании для разработчиков сайтов, владельцев сайтов и их пользователей.

Готовность к SEO

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

Интеграция с 1С

В UMI.CMS осуществлена полная интеграция с торговыми конфигурациями платформы «1С: Предприятие», обеспечивающая импорт-экспорт данных в двустороннем порядке.

Безопасность

UMI.CMS надежно защищена от хакеров. Аудитом безопасности занимаются специалисты из компании ONsec, известные способностью за несколько минут находить уязвимости в проактивных защитах известных программных продуктов.

Экономичность

Чем крупнее сайт и чем активнее он используется, тем выше расходы на его постоянную поддержку и обновление. Управление сайтом в UMI.CMS настолько продумано, что любая типовая операция требует сделать всего 3-4 клика мышью и занимает всего 5-10 секунд времени!

Производительность

Скорость работы любого веб-сайта зависит от нескольких компонентов, каждый из которых требует оптимизации. Разработчики UMI.CMS вложили максимум сил и знаний для того, чтобы ваши сайты на этой платформе работали максимально быстро даже под высокой нагрузкой.

Мультисайтовость

Неограниченная мультисайтовость (а также мультидоменность, мультишаблонность и мультиязычность в любом сочетании) — ключевое отличие UMI.CMS от других платформ.

UMI.Mobile

UMI.Mobile — это мобильная версия, которую увидят пользователи при посещения вашего сайта с мобильного устройства. Мобильная версия подключается к любому сайту на UMI.CMS — точно так же, как подключаются шаблоны самого сайта, — автоматически распознает мобильное устройство и может иметь любой дизайн.

UMI.Manager

UMI.Manager — это бесплатное мобильное приложение для интернет-магазинов на платформе UMI.CMS. Теперь вы можете быстро и удобно управлять заказами с любого смартфона или интернет-планшета, работающего под iOS или Android, и быть на связи с вашими клиентами в любое время, из любой точки мира, где доступен интернет.

Интеграция с сервисами

UMI.CMS интегрирована со множеством сервисов, среди них: 1С:Предприятие, Яндекс.Маркет, МойСклад, Яндекс.Деньги, RBK Money, ROBOKASSA, Деньги Online, PayOnline, PayAnyWay, AcquiroPay, ВКонтакте, Google Picasa, Почта России, Яндекс.Метрика и MegaIndex.

Шаблонизаторы

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

Служба Заботы

Служба Заботы о клиентах и партнерах UMI.CMS — это намного больше, чем просто техподдержка. Это уникальный сервис на российском IT-рынке, благодаря которому работа c UMI.CMS становится еще комфортнее.

Современная архитектура

В UMI.CMS изначально заложены гибкость и масштабируемость. Архитектура системы позволяет использовать эффективный и современный подход к разработке. UMI.CMS может быть интегрирована с любыми сервисами на базе xml: Picasa, 1C, ReST, YandexML, RSS, Flash, Flex, Silverlight и т.д.
Все данные хранятся в виде объектов — других сущностей в системе нет. Сами объекты создаются по настраиваемым шаблонам, оперируя которыми, разработчик может легко определять структуру объектов и связывать их между собой.

Главные преимущества:

  • Представление данных в формате XML — четкое структурирование и наглядность
  • Объектно-ориентированная модель данных, управляемая шаблонами данных — унификация представления данных в системе
  • Технология XSLT — мощный и гибкий инструмент для работы с XML-данными. XSLT — это современная кросс-платформенная технология, а не собственный шаблонизатор CMS. Для создания типовых сайтов на UMI.CMS достаточно понимать принцип работы всего трех тегов (xsl:template, xsl:apply-templates, xsl:value-of)
  • Концепция REST — внутренние протоколы, позволяющие осуществлять любое взаимодействие с системой как с xml-сервисами.

Объекты системы в формате XML:

Основной особенностью UMI.CMS является то, что все данные хранятся в виде объектов. Все привычные понятия в системах управления контента, такие как: страницы, пользователи, баннеры, заказы, скидки, адреса доставки товаров, сами товары – всё это объекты в UMI.CMS. При этом структура объектов определяется универсальным образом при помощи понятия «типы данных». Типы данных – это шаблоны для создания объектов, которые определяют количество и тип «полей», в которых объекты, созданные по этим шаблонам, могут хранить информацию.
Оперируя шаблонами данных, разработчик легко может определять структуру объектов и тип информации, хранящийся в объектах, и связывать их между собой.

Эта архитектурная особенность обеспечивает единообразие представления всех сущностей системы, которое при использовании формата XML становится еще и чрезвычайно наглядным.

Преимущества подхода:

  • Легко освоить
  • Удобно пользоваться
  • Просто адаптировать под поставленные задачи

Сайт как набор XML-сервисов:

В этой идее содержится вся суть подхода к разработке сайта на UMI.CMS при помощи XSLT-шаблонизатора. Шаблонизатор в этом случае является инструментом для агрегации и для вывода в необходимом нам виде данных, поступающих в формате XML, а XSLT – язык, при помощи которого мы управляем оформлением вывода.

В основе реализации данного подхода лежат следующие возможности UMI.CMS:

  • Использование формата XML для представления любых данных системы
  • Использование системы REST-протоколов для доступа к XML-представлению любых данных (как внутренних данных системы, так и внешних)

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

Поведенческие технологии

UMI.CMS содержит инструменты для анализа поведения посетителя на сайте и отображения баннеров, тематика которых соответствует интересам данного конкретного пользователя. Такое таргетирование отличается высокой эффективностью. Пользователи лояльны к «полезной рекламе», они охотно переходят по предложенным баннерам и ссылкам.

ElggElgg — это свободное (Open Source) программное обеспечение, доступное под лицензией GPL 2.0, платформа для построения социальных сетей любого уровня и назначения — от небольших интранет-порталов компаний, образовательных учреждений до открытых интернет-сообществ (система управления содержимым, CMS). Написан на РНР, использует JavaScript и Ajax-технологии. Для хранения информации использует в качестве хранилища базу данных MySQL.

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

Elgg поставляется с набором полей профиля, которые могут быть дополнены или изменены администратором сайта. Используя мощную систему виджетов, или элементов, пользователи могут выбрать из галереи имеющиеся виджеты для создания полного, разнообразного и индивидуального профиля. Профиль Elgg действует как широкое поле для обзора сайта и внешних источников, представления пользователем информации о себе, а также как удобное средство общения.

  • Активность

В Elgg 1.5 впервые появляется развитая система учета активности, которая дает возможность легко и быстро прослеживать деятельность по всему сайту, причем деятельность как Ваших друзей, так и Вашу собственную. Панель активности может стать первой страницей для вошедших на сайт пользователей, или же Вы можете предоставить пользователям возможность самим формировать первую страницу с помощью виджетов (или элементов). На этой странице пользователи смогут видеть новых членов социальной сети, а также писать сообщения в микроблог.

  • Личные сообщения

Вы можете отправлять приватные, личные сообщения своим друзьям.

  • Уведомления

Вы можете отслеживать, чем занимаются Ваши друзья путем получения уведомлений, любых по Вашему выбору. Выбирайте отображение той активности, в курсе которой Вы бы хотели быть, и Вы будете оповещены с помощью выбранного Вами средства уведомления: электронные рассылки, входящие сообщения, а также другими методами, которые могут быть добавлены с помощью плагинов. SMS-уведомления доступны от Curverider.

  • Стена

Вы можете писать общедоступные сообщения в профиле пользователя на стене (messageboard).

  • Микроблог (а-ля твиттер)

Микроблоги позволяют превратить Ваш сайт в персональный Twitter. Пользователи могут писать сообщения в микроблог через сайт или с помощью SMS. Вы можете отправлять сообщения из своего микроблога в Twitter, и наоборот — Elgg поддерживает тесную интеграцию с сервисом Twitter. Так Ваши друзья и коллеги будут в курсе всего, что происходит у Вас.

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

В Elgg 1.5 появились новые инструменты для блогеров со следующими полезными функциями: • Автосохранение • Категории • Переключатель переписки • Предварительный просмотр • Возможность вставлять изображения, музыку, видео и другие медиа

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

  • Фото-галерея

Подключение модуля удобной фото-галереи TidyPics расширит функционал вашей социальной сети.

  • Видео-галерея
  • Документы, страницы (с возможностью совместной работы)

Плагин Pages позволяет хранить иерархически-организованные страницы с текстом, а также устанавливать, кто может читать и писать их. Это означает, что Вы можете совместно с друзьями и коллегами создавать документы, участвовать в процессе написания или просто писать страницу, видеть которую можете только Вы, и показать её миру лишь когда она будет готова.

  • Внешние страницы

Внешние страницы — это простой способ для администраторов сайта заполнить обязательные страницы «О сайте», «Правила» и «Конфиденциальность». При использовании с плагином Custom Index можно легко добавлять информацию на главную страницу из легкоуправляемого редактора WYSIWYG.

  • Вставка медиа

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

  • Файлы

Elgg оснащена полноценным файлохранилищем, который поддерживает широкий спектр форматов файлов, включая фотографии, документы Word, аудиозаписи, видео, PDF и другие. Вы можете быстро переключаться между списками файлов и галереями, чтобы быстрее найти то, что Вам нужно. Пользователи могут демонстрировать свои последние файлы в их профиле и, — используя вставку медиа, — добавлять любой файл в тексты.

  • Панель информации

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

  • Категории

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

  • Доступ

Elgg всегда предоставляла мощный контроль доступа для пользователей. В Elgg 1.5 появились два нововведения. Теперь пользователи могут ограничивать доступ к их информации. Кроме того, установки доступа по умолчанию теперь подконтрольны администратору сайта.

 

maxsite-cms-190x190

Возможности MaxSite CMS

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

Высокая скорость работы

  • Продуманная архитектура системы и кеширование на уровне ядра демонстрирует отличные показатели скорости работы и низкое ресурсопотребление на сервере. В среднем типовой сайт на MaxSite CMS потребляет 5-7Мб памяти. В админ-панели — 2-5Мб.
  • Для высокопосещаемых проектов предусмотрены дополнительные виды кеша: кеширование sql-запросов базы данных, динамическое кеширование и глобальное кеширование. В таком варианте потребление памяти сокращается в несколько раз, а SQL-запросы будут единичными или отсутствующими.
  • В своей работе MaxSite CMS не выполняет лишнего кода. Изначально загружается лишь небольшое ядро и активированные плагины. В системе нет «мусорного» кода.
  • MaxSite CMS основана на фреймворке CodeIgniter, который считается одним из самых быстрых, удобных и функциональных. Все его возможности доступны и в рамках MaxSite CMS.

Расширяемость

  • MaxSite CMS расширяется за счёт плагинов (plugins). API плагинов имеет строгую структуру, поэтому код плагина получается компактным и аккуратным.
  • Плагины, как правило, имеют массу различных настроек и опций. MaxSite CMS полностью берёт на себя всю работу по хранению, обновлению и организации опций.
  • Виджеты (widgets) — это плагины, которые выводятся на сайте в сайдбаре (боковой колонке). API виджетов позволяет создавать их без особых усилий. MaxSite CMS также берет на себя все работы по обслуживанию виджетов.
  • В отличие от других систем, в MaxSite CMS однотипных виджетов может быть неограниченное количество. Для виджетов можно указать произвольные условия отображения, например только на главной страницы. Для каждого виджета можно дополнительно указать произвольные css-классы.
  • В комплекте более 70 плагинов, которые перекрывают практически все задачи блогера. Многие плагины универсальные, например текстовый виджет или ушки, позволяющие встраивать на сайт произвольный html/js/php код.

SEO-friendly

  • Сайты на MaxSite CMS быстро и качественно индексируются поисковиками. Большое внимание уделено HTML-валидации кода.
  • Сайты на MaxSite CMS используют HTML5 и CSS3. Используется HTML5 – семантика — разметка документа выполняется согласно спецификации W3C, что даёт дополнительный выигрыш при поисковом продвижении (SEO).
  • Для сайта можно указать title, ключевые слова (meta keywords) и описание (meta description). Каждая страница также позволяет произвольно указывать эти данные или доверить системе создать их автоматически.
  • MaxSite CMS поддерживает канонические ссылки (canonical), rss-ленты (записей, рубрик, авторов и т.п.) Во-многих плагинах учитываются особенности SEO-продвижения, поэтому служебные ссылки уже закрыты от индексации (nofollow). Поддерживается автоматическая генерация xml-sitemap — карты сайта, используемой поисковиками. Возможна автоматическая генерация карты сайта (архив) по датам и рубрикам.
  • В комплекте системы готовый для использования robots.txt.
  • Предусмотрено несколько SEO-плагинов. Возможна перелинковка по заголовкам и по заданным фразам. Редиректы (включая 301 и 302) по произвольным адресам. Есть возможность ограничить используемые URL для отсечения «лишних» адресов и исключение дублирования контента. Возможность отправлять ping через XMLRPC.
  • MaxSite CMS поддерживает (на уровне .htaccess) gzip-сжатие трафика и кеширование браузера. Сайты на MaxSite CMS показываются высокие результаты по скорости загрузки.

Защита от спама. Безопасность. Разграничение доступа

  • Для защиты от спама в комментариях используется капча. Кроме того плагин антиспама может автоматически определять наличие ссылок в тексте комментария и отправлять его на модерацию. Возможен черный список слов. Отдельный список слов для модерации. Можно указать комментаторов, которые всегда будут принудительно отправлены на модерацию. Возможен черный список IP.
  • Для ограничений входа в админ-панель можно указать только разрешенные IP.
  • Каждый логин-вход на сайт сопровождается задержкой, что позволяет снизить риск подбора пароля (защита от brute force).
  • На уровне ядра системы используются различные способы фильтрации как в момент приёма данных, так и при получении из базы данных (в некоторых ситуациях). Используются защита от SQL-инъекций и XSS-атак. Для каталога загруженных файлов используется .htaccess, запрещающий выполнение php-кода. Все php-файлы снабжены защитой от прямого вызова. При отправке данных проверяется сессия и referer.
  • Доступ в админ-панель имеют только авторы и админы. Простые регистрации (комментаторы) лишены возможности попасть в административную часть сайта.
  • Система разрешений авторов работает по принципу групп. Для разных групп можно устанавливать разрешения для доступа к различным действиям.
  • Комментаторы (комюзеры) могут автоматически регистрироваться в момент первого комментария. Возможна простая регистрация. Можно установить режим модерации комюзеров. Возможны комментарии от анонимов. Поддерживается авторизация через сторонние сервисы: loginza (содержит множество других), facebook и MaxSiteAuth.

Большие возможности для блогера

  • Удобная и быстрая админ-панель, поддерживающая адаптивный дизайн.
  • Стандартно используется текстовый редактор, основанный на bb-кодах, что позволяет создавать качественный и валидный html-код. Для «чайников» предлагается несложный визуальный редактор. При желании можно отдельно установить плагин другого визуального редактора, например TinyMCE.
  • Возможна вставка произвольного HTML/PHP кода прямо в тексте записи. Или сложного кода с помощью плагина ушек. Множество различных возможностей для оформления текстов, например подсветка синтаксиса, преформатированный текст, спойлеры, псевдокод и т.п.
  • Для изображений возможна автоматическая генерация кода для lightbox (красивая анимация), а также произвольных галерей.
  • Миниатюры к записи могут формироваться в автоматическом режиме: выполняется изменение размеров, crop, центровка и т.п. Созданная миниатюра сохраняется в каталоге Загрузок.
  • В Загрузках для изображений можно указать изменение размеров, описание файлов, создание миниатюр, превью, а также водяной знак. Для группировок используются подкаталоги на сервере. Возможно принудительное обновление миниатюр загруженных файлов. MaxSite CMS автоматически «подхватит» все файлы, загруженные через ftp на сервер.
  • К записи можно «привязать» любые файлы. Они доступны прямо при редактировании записи и операции с ними осуществляются одним кликом.
  • Предусмотрены плагины для типовых задач блогера. Например rss-подписка через feedburner, гостевая книга, forms — произвольные формы обратной связи, счетчик переходов, переключатель шаблонов, faq — для организации вопрос-ответ, аудиоплейер, скрытие текста для неавторизованных пользователей, всплывающие окна (popup), голосование, рейтинг, заработок с помощью sape, блок твитнуть, соц.закладки и т.д.
  • MaxSite CMS единственная система, где реализована автоматическая установка. Также поддерживается автоматическое обновление старых версий.
  • Произвольный html-парсер текста позволяет задать у каждой записи способ обработки в HTML. Поддерживается автоматическая расстановка html-тэгов, которую можно отключить. Также присутствует парсер Simple, который отлично подходит вебмастерам привыкшим 100% контролировать генерируемый код.
  • Поддержка любой сторонней системы комментрирования, например Disqus.
  • AutoPost — публикация записи из текстового файла. Текстовый файл достаточо перетащить или загрузить в браузер и запись автоматически будет опубликована. При этом поддерживаются все обычные параметры записи (заголовок, рубрики, метки, изображение записи, мета-данные и т.д.).
  • Отдельный редактор файлов позволяет через админ-панель редактировать любой текстовый файл шаблона (php, html, css, txt, less, ini и т.п.).

Шаблоны

  • В MaxSite CMS используется модель построения шаблона основаную на shared-каталоге — где многие программные модули вынесены за пределы каталога шаблона. Готовые и многофункциональные модули shared-каталога позволяют добиться минимального кода в самом шаблоне.
  • При этом можно без проблем заменить любой модуль своим в шаблоне. Система автоматически выполняет диспетчеризацию файлов, полностью избавляя вебмастера от сложного кода.
  • Шаблон может содержать множество настроек, от параметров вывода главной страницы, до настройки отдельных компонентов шапки и подвала. Опции могут быть уникальными для каждого шаблона. Каждый шаблон можно настроить индивидуально.
  • Компоненты — представляют собой функциональные модули, готовые для использования в шапке или подвале сайта в произвольном порядке.
  • Универсальные компоненты позволяют подключать и/или выполнять произвольный html/php-код из опций или из файла.
  • Шаблон может поддерживать css-профили, позволяющих быстро и просто подключить нужный css-файл. Также предусмотрено задание css-профиля для отдельных страниц при их редактировании.
  • Шаблон может поддерживать т. н. main-шаблон — множественные модульные сетки сайта. Например можно указать no-sidebar, left-sidebar, landing и т.п.
  • Кроме того, шаблон может поддерживать различный вывод блока заголовка записи: например только заголовок и рубрику; только заголовок и дату и т.д.
  • Вывод на основе unit’ов позволяет организовать вывод главной страницы совершенно произвольно. С помощью юнитов можно вывести произвольный html-код, опцию, ушку, файл и т.п. Юнит last-pages выводит записи по множеству критериев и имеет почти 60 параметров.

Большие возможности для вебмастеров

  • В комплекте MaxSite CMS готовые каркасы для новых плагинов, виджетов.
  • MaxSite CMS поддерживает php/html-шаблонизатор. У него высочайшая скорость работы и 100% поддержка любого PHP-кода.
  • В MaxSite CMS используется jQuery и некоторые её плагины.
  • В Default шаблоне используется соврменный Less/Css-фреймворк UniCSS . В нем реализована красивая типографика, адаптивный дизайн, иконки (более 500 шт.) и т.п. С помощью UniCSS у блогера появляется возможность красиво и качественно оформлять тексты записей.

Открытость и бесплатность

  • MaxSite CMS распространяется по лицензии GNU GENERAL PUBLIC LICENSE – 2.
  • MaxSite CMS можно использовать для любых проектов, включая коммерческие без ограничений и бесплатно, при условии сохранения всех копирайтов.

PS

В Сети иногда встречается мнение, что «MaxSite CMS — это переделанный WordPress, в котором исправлены ошибки и уменьшенно ресурсопотребление». Это не так. В MaxSite CMS нет WordPress-кода: она основана на фреймворке CodeIgniter и написана полностью с нуля ручками. Единственное, что используется от WordPress — это основная терминология: плагины, сайдбары, виджеты и некоторые другие. Пользователь WordPress без труда сориентируется в MaxSite CMS.

 

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

Для ежедневной работы с системой не требуется дополнительно обучать сотрудников. Корректировка новостей, пресс-релизов и содержания сайта производится с использованием интуитивно-понятного интерфейса.

Управление из любой точки мира

Находитесь ли Вы в командировке, в дороге, дома или на отдыхе — имея компьютер с доступом в интернет, через браузер, вы получаете удобный доступ к управлению сайтами.

Оптимизация для поисковых систем

  • Продвижение сайта с помощью HostCMS становится проще, для  страниц сайта возможно указание мета-тегов для поисковой оптимизации: <title>, <description> и <keywords>.
  • Использование человекопонятных URL улучшает читаемость адресов страниц и делает их SEO-ориентированным. Адреса страниц, создаваемых системой, имеют реальные адреса (используется /about-company/ вместо index.php?page=about-company).
  • Использование на каждой странице навигационной цепочки («хлебных крошек») позволяет осуществить внутреннюю перелинковку страниц для передачи дополнительного веса страницам сайта.

Поддержка нескольких сайтов

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

Многоязычность

Создать сайт с помощью HostCMS можно практически на любом языке, для этого есть три способа:

  1. На одном сайте разместить дополнительные языковые версии в отдельных подразделах, например, /en/, /de/, /cn/ и т.д.
  2. На поддоменах сайта с использованием многосайтовости разместить дополнительные языковые версии, например, en.site.ru, de.site.ru, cn.site.ru и т.д. Управление такими языковыми версиями ведется из единого центра администрирования.
  3. На различных доменах с использованием многосайтовости разместить дополнительные языковые версии, например, www.site.ru, www.site.com, www.site.de, www.site.cn и т.д. Управление такими языковыми версиями ведется из единого центра администрирования.

Быстрая работа сайтов с высокой посещаемостью

Системы кэширования и компрессии передаваемых пользователю данных значительно сокращают нагрузку на сервер, время генерации страницы и трафик пользователя, одновременно увеличивая скорость загрузки страниц.

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

Пока сайты конкурентов еле справляются с нагрузкой, ваш сайт работает быстро и без сбоев!

Переход на старшую редакцию

Любая версия HostCMS в течение периода активной технической поддержки может быть переведена на более старшую редакцию. Стоимость перехода равна разнице в стоимости редакций.

Прекрасное в массы!

Бесплатная редакция позволяет использовать систему для малобюджетных и некоммерческих проектов, по функциональности превосходя младшие коммерческие версии конкурирующих продуктов!

Подходит для большинства сайтов

Система управления предназначена для разработки сайтов различной направленности — от небольших корпоративных сайтов до контент-проектов и интернет-магазинов. Наличие модуля автоматического типографирования текста делает HostCMS идеальным решением для новостных и тематических сайтов.

Безопасность HostCMS

В системе управления используются расширенные методы обеспечения безопасности:

  • единая система авторизации;
  • доступ по защищенному протоколу HTTPS;
  • ограничение времени активности сессии;
  • привязка сессии к IP-адресу и многое другое.

Оперативная связь с технической поддержкой

HostCMS имеет встроенную систему связи со службой поддержки. Ответы оперативно направляются на электронный адрес администратора сайта.

Обмен данными с 1С

Интернет-магазин поддерживает автоматический обмен с 1С, что позволяет поддерживать базу магазина в актуальном состоянии.

Автоматическое обновление системы

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

Корзина

Сколько раз пользователи случайно удаляли не ту новость или страницу? Теперь эта проблема решена с помощью нового модуля корзины. Удаленные объекты доступны для восстановления или окончательного удаления через центр администрирования.

Открытый исходный код и новые технологии

Система управления поставляется с открытым исходным кодом и поддерживает PHP 5.3, 5.4, 5.5 и 5.6. В системе управления сайтом используются новые решения, такие, как ORM (ActiveRecord), построитель запросов QueryBuilder, MVC и гибкая система событий.

Отсутствие особых требований к техническим площадкам

Система управления не требует специализированных хостингов и выделенных серверов, что выгодно выделяет HostCMS. Система показывает отличные результаты работы на виртуальных хостингах.

Разделение данных и их представления

Мы не используем Smarty и подобные шаблонизаторы. Работа строится на основе XML/XSLT технологий. За счет разделения структурированных данных (XML) и их внешнего представления (XSL-шаблоны) система предлагает гибкие возможности интеграции макетов. Одни и те же данные в разных случаях могут обрабатываться различными шаблонами и иметь различное внешнее представление.

Автоматическая проверка корректности вводимых данных

Обновленный интерфейс системы в процессе ввода данных проверяет их корректность и в случае ошибки сообщает о необходимости корректировки и запрещает вставку данных.

Удобное изменение данных

Новое решение Edit-in-Place позволяет редактировать данные прямо на сайте без перехода в центр администрирования. Двойной щелчок на выделенном поле переводит его в режим редактирования.

dle_logoDataLife Engine это многофункциональная система управления сайтом. Благодаря очень мощной системе управления новостями, публикациями, статьями, пользователями, DataLife Engine предназначен в первую очередь для организации собственных средств массовой информации и блогов в сети интернет. Большое разнообразие базовых возможностей скрипта, изначально интегрированных в скрипт, позволяют DataLife Engine на шаг вперед опережать своих ближайших конкурентов в данном направлении создания сайтов. А благодаря точной и продуманной структуре ядра, сводящей к минимуму требования к ресурсам сервера, DataLife Engine способен с легкостью работать с высокопосещаемыми проектами c минимальной нагрузкой на сервер. Гибкость и легкость в настройке и интеграции собственного дизайна, позволит вам в кратчайшие сроки изучить и понять структуру шаблонов и соответственно развернуть собственные сайты, без каких-либо дополнительных материальных затрат. Использование продвинутой технологии AJAX сократит как трафик и ресурсы вашего сервера, так и трафик ваших посетителей, не говоря уже об удобстве использования данной технологии на сайте для посетителей вашего сайта. Благодаря повышенному вниманию к безопасности скрипта, к удобству работы с ним, а также динамическому развитию, в пользу использования DataLife Engine уже высказались более 90 000 порталов по всему миру, успешно использующие его в работе. Большое внимание в скрипте уделено оптимизации под поисковые системы, что позволяет привести на ваш сайт дополнительных посетителей.

Краткий перечень возможностей DataLife Engine:

Общие возможности:

– Использует для хранения данных MySQL
– Поддержка расширения MySQLi
– Мощная система безопасности
– Минимальная нагрузка на базу данных (от 0 до 5 запросов)
– Использование продвинутой технологии AJAX, позволяющей существенно сократить нагрузку на сервер и траффик пользователей
– Абсолютно независимое создание дизайна сайта, скрипт не накладывает никаких ограничений на фантазию вебмастера
– Мощная, но в тоже время простая в освоении система шаблонов, которая позволит создать сайт любой сложности (нет никаких ограничений на колонки и прочее)
– Упрощенная система управления шаблонами
– Продвинутая система управления баннерами (или любой рекламной информации)
– Возможность создания не только динамического контента, но и статического
– Автоматическая и ручная генерация метатегов
– Система почтовых шаблонов, на основе которых осуществляется генерация и отправка сообщений с сайта
– Возможность временной блокировки доступа на сайт
– Вывод новостей и статей, да и вообще всего что угодно
– Поддержка ЧПУ (человеко-понятный URL) позволяет использовать тему статьи или любой другой текст в URL браузера, благодаря этому индексация сайта в поисковых системах будет более качественной (необходим modrewrite)
– Возможность отключение ЧПУ
– Общая статистика сайта
– Поддержка дополнительных полей (возможность использовать не только краткую и полную новость на сайте, но и имеется возможность для создания любого количества дополнительных полей различных видов для ввода информации)
– Возможность написания статей содержащих несколько страниц и показ на сайте с разбивкой на страницы
– Возможность автоматического поиска и показа на сайте сходных по тематике новостей.
– Возможность использования вложенных категорий
– Флуд контроль и многочисленные механизмы защиты от спама
– Автоматический фильтр слов в комментариях
– Поддержка неограниченного количества категорий, а также подкатегорий.
– Автоматический перенос длинных слов в комментариях
– Рейтинг новостей
– Календарь
– Поиск по статьям включая дополнительные поля (подсветка найденного текста)
– Обзор непрочитанных новостей с момента последнего посещения сайта
– Возможность просмотра сколько раз была прочитана новость
– Возможность добавления статей в раздел “Избранное”
– Отсылка писем пользователям через форму на сайте
– Вывод страницы используя сжатие gzip а также без него
– Поддержка персональных сообщений между пользователями
– Поддержка нескольких языков
– Вывод популярных статей в отдельном блоке
– Создание голосований на сайте
– Возможность создания статических страниц непосредственно через админпанель
– Возможность выбора между упрощенной регистрацией и расширенной, при выборе расширенной регистрации пользователь будет зарегистрирован только после активации аккаунта. Активация высылается по почте.
– Поддержка неограниченного количества групп пользователей
– Возможность ограничения доступа к различным разделам для определенных групп пользователей.
– Возможность загрузки и прикрепления файлов к новостям
– Встроенные средства защиты от несанкционированного скачивания файлов (antileech)
– RSS Импорт новостей
– RSS Экcпорт новостей
– RSS Информеры
– Мультиязычная поддержка новостей на сайте
– Поддержка Облака Тегов
– Поддержка единой регистрации на нескольких различных сайтах под управлением DLE.
– Автоматическая поддержка смартфонов

Возможности для посетителей сайта:

– Регистрация на сайте
– Добавление комментариев
– Выставление рейтинга новостям
– Изменение и удаление пользователями своих собственных комментариев
– Возможность добавления новостей со стороны посетителей
– Модерирование новостей
– Статистика по конкретному пользователю (включая рейтинг и профиль)
– Вывод различной информации для зарегистрированных посетителей и нет
– Возможность загрузки фотографии в профиле пользователя
– Возможность восстановления забытого пароля
– Возможность редактирования новости непосредственно на сайте без перезагрузки страницы с использованием технологии AJAX.
– Массовая загрузка картинок на сервер
– Просмотр и добавление видео на сайт
– Персонализация вывода рекламы для определенных групп
– А также персонализация вывода любой информации для определенных групп пользователей
– Возможность загрузки большого количества картинок и файлов в один клик
– Полный настраиваемый доступ для различных групп пользователей

Возможности админцентра:

– Добавление, редактирование и удаление новостей
– Автоматическая типографская подготовка текста новостей к публикации в Web
– Возможность распределения доступа для конкретной новости.
– Для создания новостей возможно использование WYSIWYG редактора или BBCODES
– Антивирус проверяющий состояние файлов на предмет возможного взлома
– Редактирование пользователей
– Имеется возможность использовать смайлы и HTML код
– Создание неограниченных групп пользователей с возможностью назначения им различных прав доступа
– Возможность выставления бана для посетителей
– Средства для создания и редактирования шаблонов непосредственно в админцентре
– Возможность корректировки времени
– Возможность изменения автора и даты публикации
– Автоматическая публикация статьи при наступлении установленного времени
– Возможность отключения календаря и архивов (для экономии ресурсов)
– Возможность фиксации новостей (будут всегда наверху, независимо от даты)
– Отключение регистрации посетителей
– Автоматическая временная приостановка регистрации при достижении максимального количества зарегистрированных пользователей
– Автоматическое урезание загруженных картинок с сохранением пропорций до указанных размеров
– Автоматическое удаление пользователей которые не посещали сайт заданное время
– Наложение водяных знаков на картинки
– Возможность загрузки картинок для каждой конкретной новости (при удалении новости, картинки тоже будут удаляться)
– Удобный менеджер загруженных картинок
– Оптимизацию, ремонт, создание резервной копии и восстановление базы данных можно осуществлять непосредственно из скрипта
– Поиск пользователей по IP адресам
– Удобное управление рекламными материалами
– Быстрый поиск и замена в базе данных
– Публикация “правил” на сайте
– Создание карты сайта для Google
– Создание фильтров для автоподстановки слов и значений