Just do it!
Помоги улучшить сайт
Система Orphus
Последний обновлённый пост
Что сейчас читаю
Друзья
dyadya-gad.ru
«О Гадах, гадких друзьях и тому подобной гадской ерунде»
Сайт о наших походах, с фотографиями.
danich.ru
Man, howto and random stuff
Вишлист
My Wishlist - djoa
Статистика Revolvermaps
Ещё
РАЗДРАЖЕ - это комикс
Готовим дома
Вкусные, доступные и оригинальные рецепты домашней кухни.
Sound composition
Flash-проигрыватель различных звуков, гибко настраиваемый.
Композиция по ссылке настроена под звуки леса :)
КаленДарный сайт
Каждый день календаря — это праздник!
А на каждый праздник есть свой рисунок, стихи или рассказ... Всю эту красоту сочиняет и рисует множество людей. Вы тоже можете стать участником! :)
Создан: 2011-06-06, 16:31:00
Изменён: 2014-04-07, 22:36:48

Anki. Шаблон карт. Управление видимостью полей.

Автор Джойка

UPD: решение средствами Anki найдено!

Небольшое вступление: о чём речь.

«Anki — это открытая мульти-платформенная программа для запоминания слов, основывающаяся на методике интервального повторения. Главная ценность Anki заключается в том, что с ее помощью можно запомнить новую лексику надолго.»
Из обзора Евгении Власовой.

Найти другие описания программы не трудно в Интернете. Можно добавить только, что аналогов программа не имеет (во всяком случае, бесплатных), она очень гибкая и удобная для обучения. Данные хранит в формате sqlite, для обучения использует алгоритм SuperMemo SM2. А самое приятное, что она умеет синхронизировать деки (колоды) с Anki-сервером. Таким образом, разные пользователи могут использовать общие деки; можно работать с одними и теми же колодами с разных компьютеров, а также со смартфонов (есть удобное приложение AnkiDroid под Андроид, к примеру). Необходимо только иметь учётку (аккаунт) на Anki-сервере (регистрация бесплатна).

Но сейчас поговорим о конкретной задачке.
Настраивая деку (колоду), я столкнулась с необходимостью вставки условных операторов в шаблон. Нужно было нечто подобное (алгоритм на мета-языке, КОН обозначает закрывающую конструкцию оператора):

ЕСЛИ (поле НАЗВАНИЕ не пусто) ТО: свой текст КОН
{{НАЗВАНИЕ}}

То есть выводить перед полем свой текст только при наличии этого поля.

Другой пример — вывод по условию разных полей (правда, практического применения пока не приведу):

ЕСЛИ (поле НАЗВАНИЕ не пусто) ТО: {{НАЗВАНИЕ}} ИНАЧЕ: {{ДРУГОЕ ПОЛЕ}} КОН

В FAQ'е ничего подобного не нашла. Можно ли использовать LaTeX, так и не нагуглилось. Зато FAQ навёл на такое решение (в ответе есть поля Back — стандартное; и Description — описание применения слова):

{{Back}}
<div id="DefText" style="display: none; padding-top: 10px; font-family: Arial; font-size: 14px;">Пример:</div><span id="Description">{{Description}}</span>
<script>
var eText = document.getElementById('DefText');
var eDes = document.getElementById('Description');
if(eDes.innerText.length != 0)
 eText.style.display = 'block';
</script>

* This source code was highlighted with Source Code Highlighter.

Сперва элемент с текстом «Пример:» скрыт. Если в элементе, содержащем значение поля Description, есть контент (можно использовать как innerText, так и innerHTML — если контент гипертекстовый), то элемент с текстом «Пример:» отображается.

Вставка кода в шаблон:

Вставка кода в шаблон карты Anki.

Пример внешнего вида карточки в режиме обучения (после нажатия кнопки «Показать ответ»):

Внешний вид карточки в режиме обучения. Вариант: описание есть.
Есть описание.

Внешний вид карточки в режиме обучения. Вариант: описания нет.
Нет описания.

UPD: решение средствами Anki, подсказанное This Song:

Anki умеет создавать условные замены:

{{#FieldName}}
This text is only shown if FieldName has text in it
{{/FieldName}}

{{^FieldName}}
This text is only shown if FieldName is empty
{{/FieldName}}

Подробнее см. документацию.

Решение для примера этого поста:

{{Back}}
{{#Description}}
<div style="padding-top: 10px; font-family: Arial; font-size: 14px;">Пример:</div>{{Description}}
{{/Description}}

* This source code was highlighted with Source Code Highlighter.

Поделиться статьёй в соцсетях:


 
djoa, сен-2009 : now Никнейм djoa зарегистрирован!
Читать djoa_ru в Твиттере Favicon.ru