Общая информация
ELGG — это свободное (Open Source) программное обеспечение, доступное под лицензией GPL 2.0, платформа для построения социальных сетей любого уровня и назначения — от небольших интранет-порталов компаний, образовательных учреждений до открытых интернет-сообществ (система управления содержимым, CMS). Написан на PHP, использует JavaScript и Ajax-технологии. Для хранения информации использует в качестве хранилища базу данных MySQL. (Материал из Википедии)
Общая информация и скачать бесплатно - elgg.org. Текущая версия - 1.8.16.
Установка
Для установки следуйте инструкциям из INSTALL.txt.
Узкие места установки: нужно создать папку data/ выше корневого каталога с правами 777. То есть через http к ней попасть нельзя будет и получится примерно так:
|-public_html/
|-------------engine/
|--------------------settings.php
|-data/
Перенос
Перенос на другой сервер (или на локальный) - это задача не из легких, на этом движке - особенно. Кроме того, что ты делаешь обычно, ты должны поправить базу данных:
В таблице elgg_sites_entity поправить столбец url.
В таблице elgg_datalists изменить поля path и dataroot так, чтоб они вели от корневой директории сервера до движка и папки data/ соответственно.
Модули
Модули размещаются в папке mod/.
Структура модуля обычно примерно такая:
|-mod/
|-----mod_name/
|--------------start.php (1)
|--------------activate.php (2)
|--------------deactivate.php (2)
|--------------manifest.xml (3)
|--------------actions/ (4)
|----------------------page_name/
|--------------------------------action_name.php
|--------------classes/ (5)
|----------------------ModName.php
|--------------graphics/ (6)
|--------------languages/ (7)
|------------------------en.php
|--------------lib/ (8)
|--------------pages/ (9)
|--------------------page_name/
|------------------------------action_name.php
|--------------views/ (10)
|--------------------default/
|----------------------------admin/ (11)
|----------------------------------admin_page_name/
|--------------------------------------------action_name.php
|--------------------forms/ (12)
|--------------------mod_name/ (13)
|--------------------object/ (14)
|---------------------------mod_name.php
|--------------------plugins/
|----------------------------mod_name/
|-------------------------------------settings.php (15)
- start.php - это первое, что запускается при запросе к модулю. Здесь регистрируются экшены, вьюхи и т.п.
- activate.php - это то, что происходит при установке модуля. deactivate.php - наоборот, при его деактивации.
- manifest.xml - инфа о модуле, название, автор и т.п.
- actions/ - в файлы этой папки посылаются POST-запросы. После обработки запроса желательно немедленно перенаправить пользователя куда-либо еще.
- classes/ - классы объектов
- graphics/ - папка с изображениями, если надо. Кто-то решил, что их следует складывать именно сюда. Не принципиально.
- languages/ - языки. В них $english - ассоциативный массив, ключи которого используются в elgg_echo().
- lib/ - дополнительные библиотеки, если надо. Я туда складывал API SDK и прочее.
- pages/ - то, что видит юзер для того чтоб выполнить action или после него.
- views/ - темплейты, хотя в них тоже часто есть довольно глубокий php.
- admin/ - страницы в админке.
- forms/ - формочки, используются в экшенах.
- mod_name/ - тут храним css и js файлы. Они должны иметь расширение .php. Подсказка: удобно создавать .js и .css файлы, а в .php использовать только require_once(). Но такой трюк не работает с файлами для админки из-за неотключаемого кеширования.
- object/ - файлы из этой папки будут отображаться, если пользователь попадет на страницу объекта (конкретно - с id объекта).
- settings.php - в этом файле форма для изменения настроек модуля. (форма и экшен 2 в 1).
Это первое, что необходимо понять. Остальное - смотрим по примерам модулей рядом и реализуем…
elgg_metastrings
elgg_metastrings - самая сложная и большая таблица данных в Elgg. Эта таблица строится по принципу метамодели. В ней хранятся практически все пользовательские данные и данные подключенных модулей, используется всегда уникальные ключ-значение. В таблице elgg_metadata используются ключи из этой таблицы для привязки их к объектам. Все значения уникальны. Если, например, одно и то же имя имеют два пользователя, то в таблице elgg_metastrings этому соответствует лишь одна запись (например, 3:Сергей), а в таблице elgg_metadata - две (122:3, 134:3 - будет означать, что пользователи №122 и 134 имеют имя Сергей).
Дальше должна быть ссылка на какую-то хорошую статью о метамоделях в реляционных базах данных, но увы, в полном и нужном мне для этой статьи объеме я информации не раздобыл. Самому описывать чужое не хочется, а авторы неумело выставляют свои разработки в паблик. Видимо, в команде авторов Elgg были хорошие проектировщики, а затем полнейшие бездари реализовывали код. Больше всего это проявляется как раз в некорректном использовании метамодели в новом функционале движка. Уже не первый год жду публикации статьи по теме метамоделей от одного хорошего человека, но он борется с правообладателями. =) Я говорю о метамодели, похожей на модель Тенцера (можешь погуглить самостоятельно), только модифицированный вариант. Конечно, в Elgg не совсем она, но все же лучшее описание, чем та статья, которую жду я, вряд ли когда-нибудь появится...
1 коментар:
Интересно, порыться что ли? Встречал много "бесплатных" CMS систем для социальных сетей. Было бы интересно еще почитать возможности этого движка. Что он вообще умеет ? :)
Дописати коментар