SPIP Cookbook. Збірник готових рішень

Збірник готових рецептів для рішення найпоширеніших проблем при установці сайту на SPIP. Цю статтю ми регулярно оновлюємо новими рішеннями.

Виведення пункта меню

Меню на основі розділів

<li><a href="#URL_RUBRIQUE" [title="(#TITRE|supprimer_numero)"]>[(#TITRE|supprimer_numero)]</a></li>

Меню на основі статтей

<li><a href="#URL_ARTICLE" title="#TITRE">#TITRE</a></li>

Критерій для виведення розділів які починаються з цифри

Зазвичай, кожен розділ, іноді стаття, має порядковий номер. Окрім як задавати порядок виведення його можна використовувати для для приховування / відкриття пунктів меню за допомогою такого критерію:
{titre==^[[:digit:]]}

Виведення мовних версій сайту

Якщо кожна мовна версія сайту знаходиться в кореневій папці,
то ми просто виводимо назви мов цих розділів.

<div class="language">
<BOUCLE_languages(RUBRIQUES) {racine} {par num titre} {titre==^[[:digit:]]}>
[<a href="#URL_SITE_SPIP?lang=#LANG" [title="#NOM_SITE_SPIP - (#TITRE|supprimer_numero|textebrut)"]>(#LANG|traduire_nom_langue)</a>]
</BOUCLE_languages>
</div>

Підключення функціоналу за ключовим словом

Кейворди дуже зручно використовувати для налаштувань зовнішнього вигляду і керування статями. У даному прикладі я створив групу ключових слів "Службові", і ключове слово id_mot = 1, яким я регулюю виводити чи ні форму зворотного зв’язку для цієї статті.

<BOUCLE_feedback(MOTS) {id_article} {id_mot=1} {0,1}> #FORMULAIRE_FEEDBACK</BOUCLE_feedback>

Фотогалерея

Додавання відразу з підтримкою lightbox. Підтримка забезпечується rel=lightbox.

<B_gallery>
<h3>Фотогаллерея</h3>
<BOUCLE_gallery(DOCUMENTS) {id_article}{extension==jpg|png|gif} {mode=document} >
<div class="gallery-item">
[<a href="#URL_DOCUMENT" title="#TITRE" rel="lightbox">(#LOGO_DOCUMENT|image_reduire{150,0})</a>]
</div>
</BOUCLE_gallery>

Доступ до елементу із зовнішнього запиту

Ключовий момент - # _rubs: TITRE, цей тег виводить # TITRE рубрики з циклу _rubs.

<BOUCLE_rubs(RUBRIQUES)>
 <ul>
   <BOUCLE_arts(ARTICLES){id_rubrique}>
     <li>#_rubs:TITRE - #TITRE</li>
   </BOUCLE_arts>
 </ul>
</BOUCLE_rubs>

Шлях

Шлях до поточної сторінки (розділу). При необхідності легко переробити на статтю.

<div class="pathway">
<a href="#URL_SITE_SPIP"><:accuel:></a>
<BOUCLE_pathway(HIERARCHIE) {id_rubrique}>
<a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
</BOUCLE_pathway>
<a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
</div>

Якщо у нас так організована структура сайту, що в кореневі папки - це мовні версії сайту, то часто не треба показувати це в шляху, тоді запит змінюється наступним чином (фактично ми додаємо LIMIT 1,100):

<div class="pathway">
<a href="#URL_SITE_SPIP"><:accuel:></a>
<BOUCLE_pathway(HIERARCHIE) {id_rubrique} {1,100}>
<a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
</BOUCLE_pathway>
<a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero)]</a>
</div>

Висновок з двох розділів одночасно

Часто треба виводити останні статті з двох розділів і вкладених підрозділів з сортуванням за датою. Варіант - виводимо спочатку з одного, а потім з другого - не підходить. Тоді використовуємо масив і отримуємо такий код.

#SET{rubs, #ARRAY}
<BOUCLE_list (RUBRIQUES) {id_parent IN 4,8}>
#SET{rubs, #GET{rubs}|push{#ID_RUBRIQUE}}
</BOUCLE_list>

<ul>
<BOUCLE_last (ARTICLES) {id_rubrique IN #GET{rubs}} {par date} {inverse} {0,5}>
<li><a href="#URL_ARTICLE" title="#TITRE">#TITRE</a></li>
</BOUCLE_last>
</ul>

Висновок таблиці (по рядах)

Виводимо елементи по 3 штуки в ряд.

<table>
<B_row>
<tr>
<BOUCLE_row (ARTICLES) {id_rubrique=5} {doublons} {par date} {0,3}>
<td  background="IMG/[(#LOGO_ARTICLE|fichier)]" >
<a href="#URL_ARTICLE">#TITRE</a>
</td>
</BOUCLE_row>
</tr>
<BOUCLE_row_again (BOUCLE_row)></BOUCLE_row_again>
</B_row>
</table>

Завдання певного класу посиланням на поточну рубрику

Використовуємо при виділення кольором поточного посилання у меню.

class="[(#ID_RUBRIQUE|=={#_main:ID_RUBRIQUE}|?{on,''})]"

Виведення вставки кожні три ітерації блоку

[(#COMPTEUR_BOUCLE|modulo{3}|=={0}|?{'<div class="clear"></div>'})]

Виведення елемента в залежності від поточної мови

В даному випадку у рубрики 1133 заданиа арабська мова , і ми перевіряємо якщо співпадає поточна мова з арабською, то виводимо одне, якщо ні - то інше.

<BOUCLE_arlang (RUBRIQUES) {id_rubrique=1133} {lang=#LANG} {0,1}>
        <link rel="stylesheet" type="text/css" href="elements/voltaire-#LANG.css" media="screen,print">
</BOUCLE_arlang>
</B_arlang>       
        <link rel="stylesheet" type="text/css" href="elements/voltaire.css" media="screen,print">
<//B_arlang>
нагору