[LP]Personal

Пишемо модуль до LD. Урок 1.

Майже два тижні минуло з виходу останнього оновлення LiteDiary, у якому врешті-решт з'явилось щось, що трішки (прямо скажемо - не надто, але...) нагадує систему плагінів WordPress. З одного боку, процес не повністю автоматичний, з іншого - двигун при цьому абсолютно не загальмовується, а це вже чогось варте...

Головний недолік - нестача документації. Його-то, потроху, я й прагну позбутись новою рубрикою блоґу.

Отже, цього разу (першого і, сподіваюсь, геть не останнього) ми навчимось писати найпростіші модулі для LD. Для цього нам знадобиться сам двигун, текстовий редактор та 5 хвилин вільного часу! Blink

Для прикладу ми створимо модуль, що дозволить нам використовувати на нашому сайті чи блозі лічильник Google Analytics, вказуючи ID сайту через адмінпанель.

Крок 0. Старт

Нехай наш модуль зватиметься елементарно просто - Analytics. Відповідно, створимо папку analytics у /sources/modules/ - саме в ній ми надалі й працюватимемо.

Крок 1. Що та з чим?

Аби двигун міг автоматично визначити інформацію про наш модуль - створимо у нашій папці файл data.ini з наступною інформацією:

; Google Analytics Module 4 LiteDiary

name = "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']);

?>

Місію виконано!

Звісно, все можна зробити і зручніше, і складніше, і функціональніше - втім, ви завжди можете так і зробити!

Тепер ви з легкістю можете створити власний модуль на основі подібного каркасу Blink

Будь-які запитання, відгуки або, інколи, й просто флуд ви можете залишити у відгуках до цієї статті - вони не лишаться без відповіді!



  1. Коментарі (3):


  2. Всевидяче Око · Сайт · 27 вересня 2010 | 12:09 am
     

    А ще щось буде у тому ж дусі?

     
  3. [LP]LordPro.teus · Сайт · 27 вересня 2010 | 02:35 pm
     
    Всевидяче Око написав(ла):
    А ще щось буде у тому ж дусі?

    Наразі написання подібних статей для блоґу під питанням - проте, цілком можливе відкриття української версії Codex@LiteDiary

     
  4. Всевидяче Око · Сайт · 27 жовтня 2010 | 09:40 pm
     

    О! Це те що потрібно, але трішки замало Smile

     

Прокоментуйте!







 
Хостинг сайту: EOMY.NET