Пишемо модуль до LD. Урок 1.
Майже два тижні минуло з виходу останнього оновлення LiteDiary, у якому врешті-решт з'явилось щось, що трішки (прямо скажемо - не надто, але...) нагадує систему плагінів WordPress. З одного боку, процес не повністю автоматичний, з іншого - двигун при цьому абсолютно не загальмовується, а це вже чогось варте...
Головний недолік - нестача документації. Його-то, потроху, я й прагну позбутись новою рубрикою блоґу.
Отже, цього разу (першого і, сподіваюсь, геть не останнього) ми навчимось писати найпростіші модулі для LD. Для цього нам знадобиться сам двигун, текстовий редактор та 5 хвилин вільного часу!
Для прикладу ми створимо модуль, що дозволить нам використовувати на нашому сайті чи блозі лічильник Google Analytics, вказуючи ID сайту через адмінпанель.
Крок 0. Старт
Нехай наш модуль зватиметься елементарно просто - Analytics. Відповідно, створимо папку analytics у /sources/modules/ - саме в ній ми надалі й працюватимемо.
Крок 1. Що та з чим?
Аби двигун міг автоматично визначити інформацію про наш модуль - створимо у нашій папці файл data.ini з наступною інформацією:
; Google Analytics Module 4 LiteDiaryname = "Google Analytics";
version = "0.1";
build = 1;
author = "[LP]LordPro.teus";
authorsite = "http://www.lordproteus.org.ua/";
Розберемо написане по рядкам?.. Спершу оформлюємо коментарем пояснення для нас, що ми, власне, створюємо - рядок цілком опціональний і, насправді, геть не обов'язковий.
name - заголовок модулю, під яким він показуватиметься у адмінпанелі сайту
version - версія модулю - для користувача (двигун відобразить це значення у адмінці, проте орієнтується не за ним, а...)
build - "збірка" нашого модулю, інколи також зветься ревізією - ціле число (тому й лапки відсутні), аніж більше - тим новіша версія
author - ім'я чи нікнейм автора модулю
authorsite - адреса сайту автора
Крок 2. Дій
Згідно рекомендацій від Google - код слід встановлювати одразу на початку body - їм ми й слідуватимемо!
Знайдемо наш основний шаблон з відповідним тегом:
/sources/styles/inborder/tmpl/
Одразу після відкриття тегу body вставимо:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '<?=file_get_contents(MPATH.'analytics/id'?>']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
})();
</script>
Найважливіший для нас фрагмент у цьому коді виділено жирним - саме він відповідає за вставку необхідного нам ідентифікатору сайту у Google Analytics у код сторінки.
Крок 3. Інтерфейс
Вставку самого ідентифікатору у коді ми вже зробили. Проте, користувач має його ще вказати, чи не так?.. Для цього нам потрібна спеціальна форма. Її-то ми й створимо у папці модулю: form.php
Analytics ID:<br/><input type='text' id='ga_mod_id'/><br/>
<input type='submit' value='<?=$L['save']?>' onclick="unset_module('analytics','&aid='+gb('ga_mod_id').value);return false;"/>
Зверніть увагу на те, що завдяки використанню глобального ідентифікатору текстового поля ми зекономили час на створенні повноцінної форми. Основну роботу з передачі інформації виконує за нас функція unset_module(). Тепер залишилось лише записати отриманий ідентифікатор у файл, аби код з другого кроку міг їх використати для відслідковування...
Крок 4. Збереження
Для збереження інформації ми скористаємось найпростішим синтаксисом, який збережемо у save.php:
<?file_put_contents(MPATH.'analytics/id',$_POST['aid']);
?>
Місію виконано!
Звісно, все можна зробити і зручніше, і складніше, і функціональніше - втім, ви завжди можете так і зробити!
Тепер ви з легкістю можете створити власний модуль на основі подібного каркасу
Будь-які запитання, відгуки або, інколи, й просто флуд ви можете залишити у відгуках до цієї статті - вони не лишаться без відповіді!

Коментарі (3):
А ще щось буде у тому ж дусі?
Наразі написання подібних статей для блоґу під питанням - проте, цілком можливе відкриття української версії Codex@LiteDiary
О! Це те що потрібно, але трішки замало