SPIP

[ar] [ast] [bg] [br] [ca] [co] [cpf] [cs] [da] [de] [en] [eo] [es] [eu] [fa] [fon] [fr] [gl] [id] [it] [ja] [lb] [nl] [oc] [pl] [pt] [ro] [ru] [sk] [sv] [tr] [uk] [vi] [zh] Espace de traduction

Télécharger

Загальні принципи

Juin 2015 — mis à jour le : Juillet 2015

Toutes les versions de cet article :


Увесь вміст сайту, керованого SPIP, зберігається в базі даних MySQL. Щоб представити ці дані відвідувачам сайту, необхідно виконати операцію, яка складається з читання цих даних, їх організації, форматування і, нарешті, відображення HTML сторінки у веб-браузері.

Без допомоги передової системи управління контентом, подібної SPIP, такі операції можуть бути достатньо громіздкими:
-  ви повинні знати, як програмувати на PHP і MySQL, і писати код «процедур», який є відносно складним;
-  ви повинні інтегрувати ці процедури з форматуванням HTML сторінки, що досить важко;
-  необхідно розробити інтерфейс, з якими авторизовані користувачі зможуть змінювати вміст бази даних;
-  потрібно враховувати питання продуктивності: постійне використання PHP і MySQL споживає багато системних ресурсів, уповільнює відвідування сайту, а в крайніх випадках може призвести до збоїв веб-сервера.

SPIP пропонує повне рішення для подолання цих труднощів:
-  форматування для сайту здійснюється за допомогою файлів шаблонів у форматі HTML, так званих squelettes (французькою - «скелети»), які містять спрощені інструкції, що вказують, де і як розташувати на HTML-сторінці дані, витягнуті з бази даних;
-  система кешування дозволяє зберігати кожну сторінку і таким чином, уникнути запитів до бази при кожному відвідуванні сайту. Це не тільки знижує навантаження на сервер, але й зменшує час відгуку, і сайт залишається видимим, навіть якщо база даних MySQL для сайту «падає»;
-  «приватна», або адміністративна, частина сайту використовується адміністраторами та редакторами, щоб керувати всіма даними сайту.

Один базовий файл шаблону для кожного типу сторінки

Ключовою перевагою і обмеженням автоматизованої системи публікацій є визначення файлу шаблону, який використовується для публікації статей сайту. В такому шаблоні зазначена інформація про те, де розташувати заголовок, текст, навігаційні посилання і т.д. для статті, і система генерує сторінку кожної окремої статті шляхом автоматичного розміщення відповідних даних з бази даних у правильній позиції, у відповідності до задуму веб-майстрів.

Ця автоматизована система створює послідовну презентацію інформації через сайт... і це теж є обмеженням: вона не в змозі визначити різні інтерфейси для кожної сторінки (але ми побачимо, що, тим не менш, SPIP пропонують значну гнучкість для подолання цього обмеження).

При установці SPIP, вам пропонується набір таких шаблонів за замовчуванням. Цей набір зберігається в squelettes-dist/ каталозі в корені вашого сайту. Як тільки ви вирішите змінити ці шаблони для ваших потреб або якщо захочете встановити інший набір шаблонів, створіть нову папку з ім’ям squelettes/ на тому ж рівні ієрархії на вашому сайті. Файли шаблонів в цій папці матимуть пріоритет над стандартними, які ви можете залишити на місці, де вони й були. Для більш детальної інформації, будь ласка, прочитайте статтю де знайти файли шаблонів.

Кожен раз, коли відвідувач запитує сторінку з ім’ям http://example.org/spip.php?article3437, SPIP шукає файл шаблону під назвою «article.html». SPIP вирішує, який шаблон використовувати, ґрунтуючись на самому URL-адресі:

URL ім’я файлу шаблону
spip.php?article3437 article.html
spip.php?rubrique143 rubrique.html
spip.php?mot12 mot.html
spip.php?auteur5 auteur.html
spip.php?site364 site.html

Зазначимо два спеціальних випадки:

-  URL spip.php викликає шаблон sommaire.html для генерування і представлення головної сторінки сайту.
-  URL spip.php?page=abcd викликає abcd.html шаблон. Іншими словами, ви можете створювати цілі набори шаблонів, які не були попередньо вбудовані в систему, і назвати їх так, як самі вирішите.

Цей синтаксис використовується також для інших видів сторінок, таких як карта сайту або для результатів пошукового запиту, наприклад: spip.php?page=plan, spip.php?page=recherche&recherche=squirrel.

Коли SPIP викликає шаблон, він передає йому контекст

Крім того, ви, мабуть, помітили, що в URL-адресі є інші елементи, окрім ім’я шаблону. Наприклад, в spip.php?article3437 вказано номер статті (3437), а в spip.php?page=recherche&recherche=squirrel слово для пошуку (squirrel).

Це й є тим, що ми називаємо «контекст», тобто одна або декілька «змінних середовища», які SPIP застосовує до шаблону так, що вони можуть бути використані в композиції сторінки. Насправді, шаблону article.html потрібно знати номер запитуваної статті, тільки тоді він зможе знайти відповідну назву, текст та інші поля в базі даних. Так само шаблон recherche.html повинен знати, які слова відвідувач шукає в записах бази даних.

В URL-адресі змінні середовища з’являються після символу «?». Коли є декілька таких змінних, вони поділяються символом «&».

Так URL spip.php?page=recherche&recherche=squirrel має дві змінні: page та recherche, яким присвоюються два відповідних значення: «recherche» і «squirrel». Тим самим він викликає сторінку пошуку («recherche» - французькою «пошук») за словом «squirrel».

У випадку spip.php?article5159 SPIP використовує спрощений URL-синтаксис, який повністю виглядає так: spip.php?page=article&id_article=5159 (ви можете самі переконатися, що це те саме). Отже тут також дві змінні: page зі значенням «article» і id_article зі значенням «5159». Ці змінні дозволяють SPIP використати дані зі статті 5159 з базі даних в шаблоні article.html.

Як працює кеш - у спрощеному вигляді

PNG - 13.8 ko
Спрощена схема системи кешування

SPIP перевіряє, чи вже зберігається сторінка, відповідна до запитуваного URL, в CACHE (у кеш)

  1. Якщо сторінка існує, SPIP перевіряє, чи не дуже вона стара.
    1. Якщо сторінка занадто стара, SPIP перераховує її за допомогою відповідного шаблону і даних з бази даних MySQL. Потім оновлює CACHE, перш ніж повернути той же файл назад користувачеві.
    2. Якщо сторінка є досить недавньою, то вона з кешу відразу ж повертається назад до користувача.
      -  # Якщо сторінки не існує в кеші зовсім, то вона розраховується з шаблону і бази даних MySQL. Потім вона також зберігається в CACHE перед поверненням до користувача, який зробив запит.

Під час наступного візиту, якщо час між візитами досить короткий і сторінка, що зберігається в /tmp/cache, є досить новою, вона й повертається користувачу без нових запитів до бази даних. У випадку аварії бази даних обов’язково повертаються сторінки з кешу, навіть якщо вони «занадто старі».

Примітка: Ми бачимо, що кожна сторінка сайту кешується окремо і кожен перерахунок провокується відвідуванням сайту. Існує правило не робити одночасного загального перерахунку всіх сторінок на регулярній основі (такі свого роду «великі маневри» часто спричиняють перевантаження сервера, а іноді навіть можуть привести до його краху).

За замовчуванням (тобто коли нема мітки #CACHE в шаблоні), сторінка вважається застарілою після 3600 секунд [1].

Файл .html

У SPIP, ми називаємо .html файли нашими squelettes («скелетами» - так французькою називають «шаблони», або «файли шаблонів»). Саме вони описують графічний інтерфейс сторінок вашого сайту, в поєднанні з будь-якими внутрішніми чи зовнішніми, типовими або налаштованими користувачем правилами CSS стилів, які ви можете визначити.

Ці файли кодуються безпосередньо в HTML, до них додаються кілька команд, які розповідають SPIP, де він повинен розмістити ті елементи, які він витягує з бази даних (на кшалт: «поставити назву тут», «показати список статей на цю ж тему тут» і т.д.).

Інструкції для включення і розміщення таких елементів кодуються спеціальною мовою, яка є предметом всієї цієї он-лайн інструкції. Ця мова (потужна, як це й має бути) являє собою єдину реальну головну перешкоду для навчання і використання SPIP. Більш того, більшість з ключових слів, використовуваних в цій мові, походить з французької, що може додатково ускладнити навчання SPIP для тих, хто не знайомий з цією мовою [2].

«Ще одна мова?» Так, ви повинні будете вивчати нову мову. На щастя її структура не дуже складна, і ви дуже швидко зможете користуватися нею для побудови складних інтерфейсів. У порівнянні з PHP і MySQL ви насправді звільните собі час, оскільки мова SPIP дійсно набагато простіша, ніж ті дві. Це markup language, який використовує теги дуже схожі на ті, що є в самому HTML.

Примітка. Тим самим чином, як ви вивчаючи HTML отримували натхнення з вихідного коду сайтів, які відвідували, ви також можете надихнути себе шаблонами, що використовуються на інших сайтах, які працюють під SPIP. Все, що вам потрібно зробити, це знайти відповідний html-файл шаблону. Наприклад, можливо, ви хотіли б бачити шаблон для статей, які ви переглядаєте зараз (переглянути вихідний код, щоб побачити текст шаблону).

Інший інтерфейс для того ж сайту

На додаток до форматування сторінок за замовчуванням для різних типів контенту на сайті (rubrique.html для рубрик, article.html статей, breve.html для новин і т.д.), ви можете створювати різні шаблони для конкретних розділів сайту і будь-якого контенту, що належать до цих розділів. Вам потрібно всього лише створити кілька нових файлів html-шаблонів і дати їм імена за наступним принципом:

-  Різні інтерфейси для рубрики та її змісту (підрубрики, статті, новини, і т.д.): просто додайте файл шаблону з ім’ям з «-номером» (після дефісу йде номер рубрики).

Наприклад, припустимо, що ви створюєте файл rubrique-60.html, який буде застосовуватися до рубрики №60 і всіх її підрубрик замість стандартного rubrique.html. Файл шаблону з ім’ям article-60.html буде застосовуватися до всіх статей в рубриці №60. Якщо рубрика містить будь-які підрозділи, то будь-які публікації в цих підрозділах також приймуть новий шаблон. Те ж саме відноситься до новин в рубриці з шаблоном на ім’я breve-60.html ... і так далі, і так далі.

-  Інтерфейс для лише однієї рубрики. (SPIP 1.3) Ви також можете створити інтерфейс для однієї рубрики, але не для її підрозділів. Це робиться вказуючи в імені файлу знак рівності замість дефіса, тобто «=номер».

Наприклад, файл з ім’ям rubrique=60.html буде застосовуються тільки до рубрики №60, але не до її підрубрик. Той самий принцип стосується і article=60.html, breve=60.html, і т.д. Ці шаблони застосовуються до вмісту рубрики №60, але не до вмісту будь-якого з її підрозділів, які будуть просто використовувати типове форматування замість цього.

-  Інтерфейс для кожної мови на багатомовних сайтах. Це робиться шляхом включення коду з двох символів мови в імені файлу перед суфіксом .html , наприклад, article.en.html, article.fr.html, article.de.html і т.д. Для більш детальної інформації з цього питання, будь ласка, прочитайте статтю.

Важливе зауваження: вказаний номер ЗАВЖДИ відноситься до рубрики. Шаблони article-60.html або article=60.html відносяться не до статті з номером 60, а до статей, що містяться в рубриці з номером 60.

Що ми можемо помістити в .html файл шаблону

.html-файли по суті є лише «текстовими» файлами, доповненими інструкціями щодо вставки елементів з бази даних.

SPIP тільки аналізує і обробляє ці інструкції для вставки елементів бази даних (які кодуються власною особливою мовою SPIP); SPIP повністю ігнорує все інше в цих файлах, що не відповідає відомим йому командам.

Отже ці файли по суті - HTML. Ви визначаєте форматування сторінки, версію HTML, яку будете використовувати, і т.д. Ви можете, очевидно, включати CSS стилі, а також JavaScript, Flash... в результаті - все, що загалом розміщується на веб-сторінках.

Але ви можете так само легко натомість створити XML файли (наприклад backend.html, який генерує XML для RSS-каналів).

Навіть більш оригінально: всі сторінки, які повертаються користувачу, витягуються з CACHE сторінкою, написаної в PHP. Тому ви можете включати у файли шаблонів інструкції PHP, які будуть виконуватися в ході візиту на сторінку. Використовуйте розважливо, ця можливість відкриває надзвичайну гнучкість SPIP, так що ви можете доповнити його (можливо, шляхом додавання лічильника, наприклад), або навіть змінити деякі елементи форматування сторінки в залежності від даних, витягнутих з бази даних.

P.-S.

Ця стаття є актуальною лише для SPIP 1.9 та пізніших версій. Для попередніх версій дивіться, будь ласка, архівну версію.

Notes

[1Як тільки ви зрозумієте синтаксис мови SPIP, ви зможете змінити цей період, як вважаєте потрібним, за допомогою тегу #CACHE

[2Є кілька операторів і функцій також англійською, але це насправді винятки


Voir le squelette de cette page Site réalisé avec SPIP | Espace de traduction | Espace privé