Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
foobar2000:tagz:tutorial:create_columns [2006/06/06 15:43] Mishail |
foobar2000:tagz:tutorial:create_columns [2017/11/05 12:26] (текущий) VEG старая версия восстановлена (2006/09/02 05:42) |
||
---|---|---|---|
Строка 14: | Строка 14: | ||
В большинстве столбцов мы должны делать различия между композициями принадлежащими полным альбомам (с этого момента я буду называть их 'альбомными трэками') и отдельными композициями (отдельными трэками). Задача скрипта будет такая: //Если работаем с альбомным трэком, то делаем то-то. Если же работаем с отдельным трэком, делаем другое//. Конечно же для этого лучше всего подойдет конструкция ''if'' | В большинстве столбцов мы должны делать различия между композициями принадлежащими полным альбомам (с этого момента я буду называть их 'альбомными трэками') и отдельными композициями (отдельными трэками). Задача скрипта будет такая: //Если работаем с альбомным трэком, то делаем то-то. Если же работаем с отдельным трэком, делаем другое//. Конечно же для этого лучше всего подойдет конструкция ''if'' | ||
- | <html><pre>$if(<b>$get_global(isAlbum)</b></br> | + | <html><pre class="code">$if(<b>$get_global(isAlbum)</b> |
- | ,</br> | + | , |
- | // Tasks for album tracks go here</br> | + | // Tasks for album tracks go here |
- | ,</br> | + | , |
- | // Tasks for single tracks go here</br> | + | // Tasks for single tracks go here |
)</pre></html> | )</pre></html> | ||
Строка 114: | Строка 114: | ||
===== Столбец Tracknumber ===== | ===== Столбец Tracknumber ===== | ||
+ | Создайте новый столбец, назовите его **#**, устновите ширину (**Width**) равную **30** пикселей и выравнивание по центру (**Alignment** равное **Centre**). В этом столбце будет отображаться номер трэка для альбомов, для одиночных трэков мы ничего не будем отображать. Скрипт предельно прост | ||
+ | |||
+ | $if($get_global(isAlbum), | ||
+ | $ifgreater(%tracknumber%,9, | ||
+ | %tracknumber%, | ||
+ | '0'$num(%tracknumber%,1) | ||
+ | )) | ||
+ | |||
+ | Первая строка Вам уже наверняка знакома, она выполняет остальные строки для альбомных трэков, и, естественно, пропускает их для одиночных. | ||
+ | |||
+ | Строки начиная со второй являются вызовом одной команды - ''$ifgreater()'', которая делает следующее: //Если номер трэка больше 9 (что означает что он состоит из 2-х цифр), то отображать номер трэка. Иначе отобразить 0, а затем номер трэка, без нуля в начале.// | ||
+ | |||
+ | Стоит отметить, что вы не можете не указывать часть //иначе// в коммандах ''$ifgreater()'', такое разрешается только для обычного ''$if()''. | ||
+ | |||
+ | Функция ''$num(number,length)'' работает следующим образом: она берет число //number// и присоединяет нули к его началу до тех пор пока, пока дляна строки не станет равной //length//. Если же длина строки (количество цифр) в //number// уже больше //length//, то никаких действий выолняться не будет. Если же строка содержащая число //number// уже заполнена нулями спереди до длины большей чем //length//, то после выполнения функции лишние нули будут удалены. Данная возможность этой функции именно то, что нам надо в этом скрипте, потому что ее вызов с //length// равной 1 всегда удаляет любые нули в начале строки, а подстановка полей foobar2000 всегда дополняет нулями номер трэка до двух цифр. Вы могли заметить, что наш вызов ''$ifgreater()'' сам ставит ноль в для номера трэка, если он меньше 10. Вы спросите, зачем мы подставляем ноль сами, хотя мы обрезали его перед этим используя ''$num(%tracknumber%,1)''? Почему не не используем стандартную подстановку полей, которая автоматически добавляет ноль? Так вот, далее мы планируем отображать этот ведущий ноль другим цветом, а используя стандартную подстановку полей это невозможно. | ||
+ | |||
+ | Собственно скрипт для столбца //Tracknumber// готов. Тем не менее мы добавим одну маленькую изюминку, сделав отображение номеров трэков в [[wpru>Hex|шестнадцатеричной системе]]. Конвертация числа осуществляется простым вызовом функции ''$hex()''. Получим наш финальный скрипт: | ||
+ | |||
+ | $if($get_global(isAlbum), | ||
+ | $ifgreater(%tracknumber%,15, | ||
+ | $hex(%tracknumber%,1), | ||
+ | '0'$hex(%tracknumber%,1) | ||
+ | )) | ||
+ | |||
+ | Синтаксис у ''$hex()'' точно такой же как и у ''$num()''. Все что нам нужно сделать, это поместить все выводимые номера трэков в функцию ''$hex()'' и немного изменить код для добавления нулей, потому что в шестнадцатеричной системе вторая цифра появляется у числа большего F, равному 15 в десятеричной системе. Соответственно нам нужно заменить нашу 9-ку во второй строке скрипта на 15. | ||
+ | |||
+ | Конечно же Вы можете отображать номера трэков так как Вам угодно, я же поклонник шестнадцатеричной системы, и буду использовать этот скрипт на всем протяжении этого пособия. | ||
~~DISCUSSION~~ | ~~DISCUSSION~~ |