Modx Evolution Лабораторный практикум
В этом случае лента новостей будет выглядеть, как показано на рис. 11.6.
Рис. 11.6
Отлично, внешний вид ленты изменился, но заголовок новостей пока не является ссылкой. Давайте это исправим. Чтобы заголовок новости отображался в виде ссылки на страницу, нам необходимо представить его в шаблоне в следующем виде:
[+pagetitle+]
Не пугайтесь, ничего страшного здесь нет, а конструкция
[~[+id+]~]— это ничто иное, как URL документа c идентификатором
id.
Таким образом, в чанке
news-articleу нас должна быть следующая разметка:
[+pagetitle+]
[+date+] [+introtext+]
Во время добавления HTML–разметки, мы для каждого контейнера указали название CSS класса, чтобы можно было без труда подкорректировать внешний вид ленты новостей в CSS-файле.
Я предлагаю изменить отступы между новостями, выделить как-нибудь дату публикации и подкорректировать отображение заголовков, которые на данный момент, согласно прописанным стилям, отображаются с большими отступами и с горизонтальной чертой.
Добавляем в файл
layout.cssследующие CSS стили:
1 /* ------------News ------------*/
2 #news {padding:0; margin:0 0 15px 0;} /*отступы между новостями */
3 #news h2 {padding:0px; margin:0px; border:none} /* заголовок новости без отступов и без подчеркивания снизу */
4 #news .introtext{padding:5px 0 0 0} /*отступ области с кратким описанием и датой от заголовка */
5 #news .introtext .date {font-weight:bold;} /* дата публикации, выделяется жирным шрифтом */
После того как вы добавите эти стили в CSS файл и обновите страницу
Новости, внешний вид ленты новостей будет выглядеть, как показано на рис. 11.7.
Рис. 11.7
Это лишь один из немногих вариантов, оформления новостной ленты. Вы же, в свою очередь, можете сделать абсолютно любой вывод, какой только пожелаете, ведь у вас есть доступ как к редактированию шаблона, так и CSS файла. Например, можете сделать текст краткого описания в виде ссылки или добавить ссылку
Читать далеепосле краткого описания. В общем, вариантов море, достаточно только проявить фантазию и, желательно, иметь представление о CSS и HTML.
Если вдруг кто-нибудь из вас не знает, как можно оформить ссылку, привожу пример.
В шаблоне
Dittoдобавляем после контейнера с CSS-классом
introtextследующую конструкцию:
Читать дальше →
В результате содержимое чанка
news-articleбудет следующим:
[+pagetitle+]
[+date+] [+introtext+]
Читать дальше →
Таким образом мы добавили ссылку после краткого описания, при желании можете ее выровнять по правому краю, для этого в CSS-файл нужно добавить:
#news .readmore {text-align:right}
После этого итоговые CSS-стили, добавленные на сегодняшнем уроке в файл
layout.css, примут следующий вид:
1 /* ---------------News ---------------*/
2 #news {padding:0; margin:0 0 15px 0;}
3 #news h2 {padding:0px; margin:0px; border:none}
4 #news .introtext{padding:5px 0 0 0}
5 #news .introtext .date {font-weight:bold;}
6 #news .readmore {text-align:right}
А внешний вид ленты новостей показан на рис. 11.8.
Рис. 11.8
При этом дата, указанная в ленте новостей, — это дата создания ресурса, которую сейчас вы изменить не можете. Чтобы иметь возможность самостоятельно указывать дату публикации, нам необходимо воспользоваться еще одним параметром
Ditto. В вызове сниппета добавляем &dateSource = `pub_date`, чтобы получилось:
[[Ditto? &tpl=`news-article` &dateSource = `pub_date` ]]
Тем самым в качестве источника даты публикации мы указываем поле с датой, расположенное на вкладке
Настройка страницы. Это поле вы можете изменить для каждого ресурса, рис. 11.9.
Рис. 11.9
Раз уж мы коснулись вопроса о датах, давайте изменим формат даты. Я предлагаю сделать ее в следующем виде: ЧЧ.ММ.ГГГГ. В этом нам поможет еще один параметр Ditto
&dateFormat.
Конструкция вызова сниппета примет следующий вид:
[[Ditto? &tpl=`news-article` &dateSource = `pub_date` &dateFormat= `%d.%m.%Y`]]
А внешний вид ленты новостей показан на рис. 11.10.
Рис. 11.10
При этом выводимую дату вы можете изменить на странице редактирования ресурса.
Если страница
Новостивсе еще не отмечена для показа в меню, вы можете это сделать, чтобы иметь доступ на страницу с лентой новостей из главного меню. Напомню, что для этого на странице редактирования ресурса необходимо установить галочку
Показывать в меню.
Еще я вам советую вынести вызов сниппетта
Dittoв отдельный чанк. Для этого создайте чанк с именем newsline, поместите в него конструкцию вызова
Ditto, а сам чанк вставьте на страницу
Новости
11.4. итоги
По ходу этого урока мы создали несколько страниц с новостями и научились выводить ленту новостей с помощью сниппета
Ditto. Научились создавать шаблон для этого сниппета и познакомились с некоторыми его параметрами, передаваемыми при вызове:
&tpl — указывает, какой чанк используется в качестве шаблона для ленты новостей
&dateSource — указывает, какое поле считать датой публикации
&dateFormat — указывает формат вывода даты
Как вы, наверное, понимаете, список этих параметров не ограничивается тремя, с которыми нам довелось сегодня работать. Существуют и другие параметры и специальные теги (их еще называют плэйсхолдерами)
Ditto, некоторые из которых мы на следующих уроках будем использовать на практике.
На следующем уроке мы продолжим работу с лентой новостей. Научимся разбивать новости на страницы, сортировать ленту новостей по различным параметрам и познакомимся на практике еще с несколькими параметрами
Ditto.
11.5. Контрольные задания
Какой сниппет позволяет выводить анонсы новостей на странице сайта?
Как указать сниппету какой чанк будет использоваться в качестве шаблона?
Как изменить дату в новости?
Как изменить внешний вид отображения новостей?
Задание 12
Постраничное разбиение новостной ленты
цели занятия
освоение приемов постраничного разбиения ленты новостей;
Форма организации занятия
Фронтальная.
Студент должен знать
приемы постраничного разбиения ленты новостей.
Студент должен уметь
выполнять лабораторно-практическое задание №11,
разбивать на страницы ленту новостей.
Обеспеченность
компьютер с доступом в Интернет,
настоящий курс лабораторно-практических работ.
Практическое задание
На прошлом уроке мы с вами научились создавать ленту новостей с помощью встроенного в MODx сниппета Ditto. Сегодня мы немного углубимся в его изучение и разберем некоторые приемы, которые вам могут понадобиться при создании ленты новостей.
Как быть, если у вас создано много новостей и вывод краткого описания для всех них занимает очень много места на странице. Чтобы добраться до последней новости в таком случае придется пользователю изрядно покрутить колесо мыши или воспользоваться полосой прокрутки на сайте. Это не самый удобный в плане юзабилити вариант. Для того, чтобы отображать список новостей более компактно, мы будем использовать постраничное разбиение ленты новостей. Это очень распространенный прием предоставления информации и, вы, наверняка, на многих сайтах с ним встречались. Но то, что мы будем разбивать ленту новостей на страницы, не значит, что вам придется для каждой страницы с новостями создавать ресурс и в ручную прописывать ссылки. Все гораздо проще: за вас это автоматически будет делать Ditto.
12.1. Постраничное разбиение новостной ленты
Для разбиения на страницы новостей нам понадобится в конструкцию вызова сниппета добавить следующие параметры:
&paginate— параметр указывает, включить или отключить постраничное разбиение. Чтобы включить разбиение необходимо выставить значение
1.
&display— параметр указывает, сколько новостей выводить на странице. Так как сейчас у нас создано 5 новостей, то, чтобы продемонстрировать разбиение, выставим значение меньше 5, например, 2 новости.
Для реализации навигации между страницами, будем использовать плэйсхолдеры Ditto:
[+next+] — для вывода ссылки Далее
[+previous+] — для вывода ссылки Назад
[+pages+] — для вывода списка из номеров страниц в виде ссылок.
Чтобы постраничное разбиение отображалось правильно, не забудьте в настройках страницы, на которой будет выводиться лента новостей, отменить кэширование. Для этого снимите галочку
Кэшируемыйна вкладке
Настройка страницыпри редактировании
ресурса
Новости, рис. 12.1.
Рис. 12.1
После добавления указанных параметров и плэйсхолдеров вызов сниппета, расположенный в чанке
newsline, будет представлять собой следующую конструкцию:
[[Ditto? &tpl=`news-article` &dateSource = `pub_date` &dateFormat=`%d.%m.%Y` &paginate=`1` &display=`2` ]]
Страницы: [+previous+][+pages+][+next+]
Результатом этой конструкции должна стать разбитая на страницы лента новостей, рис. 12.2.:
Рис. 12.2
Текст ссылок
Далееи
Назадвы можете изменить в языковом файле russian-UTF8.inc.php сниппета Ditto, который находится в следующей директории:
assets\snippets\ditto\lang\
12.2. изменение внешнего вида ссылок
Внешний вид ссылок навигации можно изменить с помощью CSS. Для этого в чанке
newslineпомещаем теги, формирующие навигацию в контейнер с классом
pagination:
[[Ditto? &tpl=`news-article` &dateSource = `pub_date` &dateFormat=
`%d.%m.%Y` &paginate=`1` &display=`2` ]]
Страницы: [+previous+][+pages+][+next+]
Если посмотреть исходный HTML код страницы, нажав
Ctrl+U, то блок ссылок навигации будет выглядеть так:
Страницы:
< назад
1
2
3
далее >
Если вы внимательно посмотрите на исходный код, то заметите, что в нем прописаны CSS классы для каждой ссылки:
ditto_previous_link — класс для стилевого оформления ссылки назад
ditto_next_link — класс для оформления ссылки далее
ditto_currentpage — класс для оформления номера текущей страницы
ditto_page — класс для оформления ссылок на все остальные страницы.
Эти классы мы и будем использовать для того, чтобы изменить внешний вид ссылок навигации в ленте новостей. В файл
layout.cssв раздел
Newsпрописываем следующие стили:
.pagination a {text-decoration:underline;} /*подчеркивание ссылок*/
.pagination a:hover {text-decoration:none;} /*убрать подчеркивание
ссылок при наведении*/
.pagination .ditto_currentpage {color:#fff; background-color:#B2C629;
border:1px solid #6f7b1a; padding: 1px 3px; margin:2px;
font-weight:bold; } /*оформление текущей страницы: цвет текста,
цвет фона, цвет и ширина границы, размер отступов, текст жирным
шрифтом*/
.pagination .ditto_previous_link, .pagination .ditto_next_link{
margin:0 10px;} /*отступы для ссылок «далее» и «назад»*/
.pagination .ditto_page{ padding: 2px 5px;}/* отступы для номеров
страниц*/
Для тех кто забыл, напомню: файл
layout.cssнаходится в папке
/assets/templates/site/styles.
Отправляемся на страницу
Новости, чтобы посмотреть, что же получилось после добавления стилей, рис. 12.3.
Рис. 12.3
При этом вы можете изменять цвета, отступы и все CSS стили, как вам только вздумается. Я лишь привел один из возможных вариантов оформления.
Теперь у вас уже есть лента новостей с постраничным разбиением. Но у представленного метода есть один недостаток, который проявляется, когда страниц будет уж слишком много. Плэйсхолдер [+pages+] будет выводить все номера страниц. Если их будет очень много, то номера страниц не поместятся в один ряд, что не всегда согласуется с задуманным дизайном. Для того чтобы исправить это, мы применим сниппет MODx, который будет выводить номера страниц Ditto, и в том случае, когда число страниц превышает определенное количество — разрывать список многоточием "...".
12.3. постраничная навигация с разрываемым списком страниц
Для создания нового сниппета отправляемся:
Элементы → Управление элементами → Сниппеты → Новый сниппет.
В поле
Название сниппетавводим: dittoSplitPagination.
В поле
Описаниевводим любое понятное для вас описание, например: для разбиения на страницы Ditto.
В область
Код сниппета (php)помещаем следующий Php-код:
На рис. 12.4. показано, как выглядят заполненные поля при создании сниппета dittoSplitPagination.
После сохранения отправляемся редактировать вызов сниппета
Dittoв чанке
newsline. Вызов сниппета оставляем без изменений, а вот вывод ссылок навигации мы исправим: добавляем вызов только что созданного сниппета
dittoSplitPagination, а плэйсхолдер
Ditto [+pages+]заменяем на
[+splitPages+].
После этого конструкция в чанке
newslineпримет следующий вид:
[[Ditto? &tpl=`news-article` &dateSource = `pub_date` &dateFormat=`%d.%m.%Y` &paginate=`1` &display=`2` ]]
Страницы: [[dittoSplitPagination]][+previous+][+splitPages+][+next+]
Перейдя после этого на страницу
Новостивы наглядно не увидите разницы с предыдущим вариантом до тех пор, пока у вас не будет разбиения на большое количество страниц.
На рис. 12.5. показано как будет выглядеть ваш навигационный блок, когда страниц с новостями будет 18.
Рис. 12.4
Рис. 12.5
На этом работу с новостной лентой мы заканчиваем. Единственное, что бы я вам посоветовал сделать, это выставить значение параметра
&display, для того чтобы видеть разбиение мы устанавливали этот параметр в 2. Сейчас, когда мы прописали все стили, и увидели, что навигация отображается так, как нам хочется, выставим этот параметр на десяточку, чтобы на каждой странице помещалось по 10 новостей.
К Ditto мы еще будем периодически возвращаться, и, уже по ходу уроков, на практике знакомиться с другими параметрами этого замечательного сниппета.
12.4. Работа с модулем Doc Manager
И в завершение давайте сделаем так, чтобы наши созданные новости не показывались в меню, ведь сейчас они в виде выпадающего списка отображаются в главном меню сайта, нам они в меню не нужны. Для того чтобы убрать названия новостей из меню, мы при редактировании ресурсов с новостью должны убрать галочку
Показывать в менюлибо можем воспользоваться очень удобным встроенным модулем
Doc managerдля массового изменения свойств созданных ресурсов.
Использовать
Doc managerочень удобно, когда необходимо изменить настройки нескольких страниц одновременно. Чтобы с помощью модуля отменить показ в меню страниц отправляемся на вкладку:
Модули → Doc Manager → Другие свойства. Из выпадающего списка
Доступные свойствавыбираем пункт
Показывать/Не показывать в меню, после чего ниже устанавливаем чекбокс
Не показывать в меню. Затем следует указать диапазон ID ресурсов, которые мы хотим отменить для показа. В моем случае это ресурсы с ID от 11 до 15. У вас эти идентификаторы могут отличаться, чтобы точно определить, посмотрите в дереве документов, какими ID обладают ваши страницы с новостями. После указания ID ресурсов жмите кнопку
Отправить. Внешний вид вкладки
Другие свойствамодуля Doc manager показан на рис. 12.6.
Рис. 12.6
С помощью Doc Manager вы сможете быстро редактировать свойства всех созданных ресурсов, изменять дату публикации и шаблон для каждой страницы. Он вам сэкономит много времени, когда в дереве будет создано очень много ресурсов.
12.5. Контрольные задания
Как включить постраничное разбиение ленты новостей?
Какой сниппет используется для постраничного разбиения новостной ленты?
Что такое плейсхолдер?
Как изменить число новостей, выводимых на страницу новостной ленты?
Как изменить параметры сразу у нескольких страниц сайта?
ЗаданиЕ 13
Вывод новостей с изображениями на главной странице
цели занятия
освоение приемов работы с TV параметрами с целью вывода новостей с изображениями на главной странице сайта;
Форма организации занятия
Фронтальная.
Студент должен знать
приемы работы с TV параметрами.
Студент должен уметь
выполнять лабораторно-практическое задание №12,
добавлять изображения ресурсам с помощью TV параметров.
Обеспеченность
компьютер с доступом в Интернет,
настоящий курс лабораторно-практических работ.
Практическое задание
На сегодняшнем уроке мы рассмотрим один из самых интересных моментов в MODx — переменные шаблона или, как их чаще всего называют, TV параметры (не путать с телевизорами, название пошло от сокращения
template variables).
Вы уже заметили, насколько гибко можно управлять содержимым на странице и выводом самих шаблонов, так вот — это еще не все. Для каждого шаблона вы можете также добавить дополнительные поля, которые впоследствии можно выводить на странице с помощью специальных плейсхолдеров. Это даст вам небывалую гибкость в разработке. Итак, не будем долго останавливаться на теории и переходим непосредственно к реализации данной фишки на создаваемом вами сайте.
Использовать TV параметры будем при добавлении изображений новостей и выводе этих изображений на главной странице с кратким описанием новости.
13.1. Создаем TV параметр
Следуем на вкладку
Элементы → Управление элементами → TV параметры. Нажимаем на ссылку
Новый параметр (TV).
На странице создания TV параметров заполняем поля формы:
Имя параметра: вводим название параметра, по которому мы будем вызывать его в шаблоне. Желательно давать осмысленные названия, чтобы было легче сориентироваться при редактировании шаблонов. Для нашего случая введем:
img-news.
Внимание: имя параметра не может содержать пробел.
Заголовок: вводим заголовок, которым будет подписано дополнительное поле при редактировании ресурса. В нашем случае:
Изображение для страницы
Описание: сопроводительный текст, который даст пользователю представление о том, где будет использоваться дополнительное поле. Описание будет отображаться на странице редактирования ресурса под заголовком TV параметра. В нашем случае:
Изображение для ресурса. Для новости должно быть 60px на 60px.
Тип ввода: с помощью этого поля вы можете выбрать, какого типа будет дополнительное поле для вашего шаблона. Устанавливаем в
image.
Визуальный компонент: выбираем из выпадающего списка
image.
На рис. 13.1 вы можете увидеть, как следует заполнить поля при создании TV-параметра:
Рис. 13.1
В блоке
Доступ шаблоновуказываем шаблон, для которого необходимо создать TV-параметр. Мы помним, что для ресурсов с нашими новостями установлен шаблон
2 колонки,поэтому ставим галочку рядом с ним, чтобы шаблон мог использовать созданный TV параметр, рис.13.2.
После заполнения полей сохраняем TV параметр нажатием кнопки
Сохранить.
Ну, вот и все, мы только что создали TV параметр и подключили его к шаблону
2 колонки. Отправляемся на страницу редактирования новости и смотрим, что же у нас изменилось. Если вы внимательно посмотрите, то на странице редактирования ресурса появилось еще одно поле, расположенное ниже визуального редактора. Тут-то мы и видим заголовок и описание, которое вводили при создании TV параметра, рис.13.3.
Рис. 13.2
Рис. 13.3
13.2. Добавляем изображения для ресурсов
При нажатии кнопки
Вставить, которая находится рядом с дополнительным полем, открывается файловый менеджер, позволяющий выбрать необходимое изображение из папки
assets/images/или, если его еще нет, загрузить изображение в эту папку, чтобы затем выбрать.
На рис. 13.4 показан внешний вид кнопок этого файлового менеджера.
Рис. 13.4
С помощью кнопки
Выберите файлвы можете выбрать на компьютере изображение, которое при нажатии на кнопку
Uploadзагрузится к вам на сервер. Кнопка
Create New Folderслужит для создания дополнительных папок в папке
image.
Давайте создадим папку news и в нее поместим несколько изображений размером 60x60px, которые в дальнейшем будем выводить на главной странице.
Для примера я подготовил 5 изображений, которые вы можете скачать и использовать для дальнейшего прохождения урока, либо вы можете создать свои, которые подходят к вашим новостям. Добавляем для каждой новости по одному изображению, рис.13.5.
Рис. 13.5
После этого при добавлении изображения для ресурса, оно будет отображаться ниже дополнительного поля на странице редактирования ресурса, и вы наглядно сможете понять, какое изображение прикреплено к данной странице, рис. 13.6.
Рис. 13.6
13.3. Вывод новостей с изображениями на главной странице
Теперь, когда изображения к новостям прикреплены, давайте попробуем вывести блоки с кратким описанием новостей и изображениями на главной странице.
Вот как выглядит блок с новостями на главной странице, рис.13.7:
Рис. 13.7
HTML код, отвечающий за вывод этого блока следующий:
01
[+pagetitle+]
[+date+] [+introtext+]
|
// Snippet: splitPagination
// Must be placed immediately following a Ditto call
// Based on the function written by Aaron Hall, evilwalrus.org
if (!function_exists("generatePagination")) {
function generatePagination($curPage, $totResults, $resultsPerPage)
{
$totPages = ceil($totResults / $resultsPerPage);
$pagesBefore = $curPage - 1;
$pagesAfter = $totPages - $curPage;
$tabArr = array();
if($totPages > 15) {
if($pagesBefore > 7) {
$tabArr = array(1,2,0);
if($pagesAfter > 7)
{
for($i=($curPage-(4)); $i<$curPage; $i++) { $tabArr[] = $i; }
} else {
for($i=($totPages-11); $i<$curPage; $i++) { $tabArr[] = $i; }
}
} else {
for($i=1; $i<$curPage; $i++) { $tabArr[] = $i; }
}
$tabArr[] = $curPage;
if($pagesAfter > 7) {
if($pagesBefore > 7) {
for($i=($curPage+1); $i<=$curPage+4; $i++) { $tabArr[] = $i; }
} else {
for($i=($curPage+1); $i<13; $i++) { $tabArr[] = $i; }
}
$tabArr[] = 0;
$tabArr[] = $totPages-1;
$tabArr[] = $totPages;
} else {
for($i=($curPage+1); $i<=$totPages; $i++) { $tabArr[] = $i; }
}
} else {
for($i=1;$i<=$totPages;$i++) { $tabArr[] = $i; }
}
return $tabArr;
}
}
$id = isset($id) ? $id.'_' : '';
$total = isset($total) ? $total : $modx->getPlaceholder($id."total");
$start = isset($start) ? $start : $modx->getPlaceholder($id."start");
$display = isset($display) ? $display : $modx->getPlaceholder($id."perPage");
$currentPage = isset($currentPage) ? $currentPage : $modx->getPlaceholder($id."current");
$landing = isset($tagDocumentID) ? $tagDocumentID : $modx->documentObject['id'];
if ($total == 0 || $display==0) {
return false;
}
$page = ceil($start/$display);
$return = isset($return) ? $return : 0;
$paginationArray = generatePagination($page, $total, $display);
$ph = "";
$cInc = $_GET[$id.'start'];
foreach($paginationArray as $page) {
$inc = ($page-1)*$display;
if($page == 0) {
$ph .= "..."; // print an elipse, representing pages that aren't displayed
} else if ($inc==$cInc) {
$ph .= "$page";
} else {
$ph .= "$page";
}
}
$modx->setPlaceholder($id."splitPages",$ph);
if ($return) return $ph;
?>
Похожие:
|
Инструкция по установке и настройке модуля oos для modx evolution...
Для корректной работы модуля oos для modx evolution необходимо установить программный модуль Shopkeeper
|
|
Эксплуатационные материалы лабораторный практикум
Эксплуатационные материалы: лабораторный практикум / А. Д. Синегибская. – Братск: БрГУ, 2011. – 65 с
|
|
Устанавливаем modx Revolution X
В первую очередь, необходимо скачать modx Revolution X. У вас есть возможность сскачать прямо с сайта разработчика
|
|
Инструментарий веб-разработчика: Apache, php, Mysql, phpMyAdmin Лабораторный...
Инструментарий веб-разработчика: Apache, php, Mysql, phpMyAdmin: Лабораторный практикум по дисциплине «Сети ЭВМ и телекоммуникации»...
|
|
Электронных ресурсов
Басангова Е. О. Лабораторный практикум “Компьютерная анимация в среде Macromedia Flash”
|
|
Название Ссылка
Лабораторный практикум по биологии гоу впо уральского Государственного лесотехнического университета
|
|
Лекция 1
Молчанов А. Ю. Системное программное обеспечение. Лабораторный практикум: – спб.: Питер, 2005. – 284 с
|
|
Среднетехнический факультет
Лабораторный практикум составлен для проведения лабораторных работ по дисциплине «Технохимический контроль производства»
|
|
Руководство по работе с административной панелью modx
Для работы с системой управления modx не требуется знаний и опыта работы с html-кодом веб-сайтов. Исключение составляет заполнение...
|
|
Руководство по работе с административной панелью modx
Для работы с системой управления modx не требуется знаний и опыта работы с html-кодом веб-сайтов. Исключение составляет заполнение...
|
|
Лабораторный практикум по дисциплине
Лабораторные работы должны выполняться в той последовательности, в которой они приводятся в данной разработке
|
|
Методические указания по выполнению практических работ для студентов специальности 09. 02. 04
Лабораторный практикум / Ханты-Мансийский технолого-педагогический колледж; Сост
|
|
В. К. Никишев «Лабораторный практикум по современным языкам программирования Visual Studio »
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
|
|
Энзимология
Энзимология : Лабораторный практикум /[Текст] / сост. Н. М. Титова, Т. Н. Субботина. – Красноярск: Сиб федер ун-т, 2012. – 60 с
|
|
Кафедра товароведения и товарной экспертизы лабораторный практикум...
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
|
|
Российской Федерации Федеральное государственное бюджетное образовательное...
Лабораторный практикум по дисциплине «Операционные системы» / Уфимск гос авиац техн ун-т; Сост. О. Д. Лянцев, А. В. Казанцев. – Уфа,...
|
Руководство, инструкция по применению