Modx Evolution Лабораторный практикум


Скачать 1.84 Mb.
Название Modx Evolution Лабораторный практикум
страница 6/16
Тип Документы
rykovodstvo.ru > Руководство эксплуатация > Документы
1   2   3   4   5   6   7   8   9   ...   16


В этом случае лента новостей будет выглядеть, как показано на рис. 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. Научились создавать шаблон для этого сниппета и познакомились с некоторыми его параметрами, передаваемыми при вызове:

Как вы, наверное, понимаете, список этих параметров не ограничивается тремя, с которыми нам довелось сегодня работать. Существуют и другие параметры и специальные теги (их еще называют плэйсхолдерами) Ditto, некоторые из которых мы на следующих уроках будем использовать на практике.

На следующем уроке мы продолжим работу с лентой новостей. Научимся разбивать новости на страницы, сортировать ленту новостей по различным параметрам и познакомимся на практике еще с несколькими параметрами Ditto.

11.5. Контрольные задания

  1. Какой сниппет позволяет выводить анонсы новостей на странице сайта?

  2. Как указать сниппету какой чанк будет использоваться в качестве шаблона?

  3. Как изменить дату в новости?

  4. Как изменить внешний вид отображения новостей?

Задание 12

Постраничное разбиение новостной ленты

цели занятия

Форма организации занятия

Фронтальная.

Студент должен знать

Студент должен уметь

Обеспеченность

Практическое задание

На прошлом уроке мы с вами научились создавать ленту новостей с помощью встроенного в MODx сниппета Ditto. Сегодня мы немного углубимся в его изучение и разберем некоторые приемы, которые вам могут понадобиться при создании ленты новостей.
Как быть, если у вас создано много новостей и вывод краткого описания для всех них занимает очень много места на странице. Чтобы добраться до последней новости в таком случае придется пользователю изрядно покрутить колесо мыши или воспользоваться полосой прокрутки на сайте. Это не самый удобный в плане юзабилити вариант. Для того, чтобы отображать список новостей более компактно, мы будем использовать постраничное разбиение ленты новостей. Это очень распространенный прием предоставления информации и, вы, наверняка, на многих сайтах с ним встречались. Но то, что мы будем разбивать ленту новостей на страницы, не значит, что вам придется для каждой страницы с новостями создавать ресурс и в ручную прописывать ссылки. Все гораздо проще: за вас это автоматически будет делать Ditto.
12.1. Постраничное разбиение новостной ленты

Для разбиения на страницы новостей нам понадобится в конструкцию вызова сниппета добавить следующие параметры:
&paginate— параметр указывает, включить или отключить постраничное разбиение. Чтобы включить разбиение необходимо выставить значение 1.
&display— параметр указывает, сколько новостей выводить на странице. Так как сейчас у нас создано 5 новостей, то, чтобы продемонстрировать разбиение, выставим значение меньше 5, например, 2 новости.
Для реализации навигации между страницами, будем использовать плэйсхолдеры Ditto:



Чтобы постраничное разбиение отображалось правильно, не забудьте в настройках страницы, на которой будет выводиться лента новостей, отменить кэширование. Для этого снимите галочку Кэшируемыйна вкладке Настройка страницыпри редактировании ресурса Новости, рис. 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 классы для каждой ссылки:

Эти классы мы и будем использовать для того, чтобы изменить внешний вид ссылок навигации в ленте новостей. В файл 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. Контрольные задания

  1. Как включить постраничное разбиение ленты новостей?

  2. Какой сниппет используется для постраничного разбиения новостной ленты?

  3. Что такое плейсхолдер?

  4. Как изменить число новостей, выводимых на страницу новостной ленты?

  5. Как изменить параметры сразу у нескольких страниц сайта?

ЗаданиЕ 13

Вывод новостей с изображениями на главной странице

цели занятия

Форма организации занятия

Фронтальная.

Студент должен знать

Студент должен уметь

Обеспеченность

Практическое задание

На сегодняшнем уроке мы рассмотрим один из самых интересных моментов в 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


02


03


04


  • 05


  • 06

// 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;

?>

[+pagetitle+]



[+date+] [+introtext+]


1   2   3   4   5   6   7   8   9   ...   16

Похожие:

Modx Evolution Лабораторный практикум icon Инструкция по установке и настройке модуля oos для modx evolution...
Для корректной работы модуля oos для modx evolution необходимо установить программный модуль Shopkeeper
Modx Evolution Лабораторный практикум icon Эксплуатационные материалы лабораторный практикум
Эксплуатационные материалы: лабораторный практикум / А. Д. Синегибская. – Братск: БрГУ, 2011. – 65 с
Modx Evolution Лабораторный практикум icon Устанавливаем modx Revolution X
В первую очередь, необходимо скачать modx Revolution X. У вас есть возможность сскачать прямо с сайта разработчика
Modx Evolution Лабораторный практикум icon Инструментарий веб-разработчика: Apache, php, Mysql, phpMyAdmin Лабораторный...
Инструментарий веб-разработчика: Apache, php, Mysql, phpMyAdmin: Лабораторный практикум по дисциплине «Сети ЭВМ и телекоммуникации»...
Modx Evolution Лабораторный практикум icon Электронных ресурсов
Басангова Е. О. Лабораторный практикум “Компьютерная анимация в среде Macromedia Flash”
Modx Evolution Лабораторный практикум icon Название Ссылка
Лабораторный практикум по биологии гоу впо уральского Государственного лесотехнического университета
Modx Evolution Лабораторный практикум icon Лекция 1
Молчанов А. Ю. Системное программное обеспечение. Лабораторный практикум: – спб.: Питер, 2005. – 284 с
Modx Evolution Лабораторный практикум icon Среднетехнический факультет
Лабораторный практикум составлен для проведения лабораторных работ по дисциплине «Технохимический контроль производства»
Modx Evolution Лабораторный практикум icon Руководство по работе с административной панелью modx
Для работы с системой управления modx не требуется знаний и опыта работы с html-кодом веб-сайтов. Исключение составляет заполнение...
Modx Evolution Лабораторный практикум icon Руководство по работе с административной панелью modx
Для работы с системой управления modx не требуется знаний и опыта работы с html-кодом веб-сайтов. Исключение составляет заполнение...
Modx Evolution Лабораторный практикум icon Лабораторный практикум по дисциплине
Лабораторные работы должны выполняться в той последовательности, в которой они приводятся в данной разработке
Modx Evolution Лабораторный практикум icon Методические указания по выполнению практических работ для студентов специальности 09. 02. 04
Лабораторный практикум / Ханты-Мансийский технолого-педагогический колледж; Сост
Modx Evolution Лабораторный практикум icon В. К. Никишев «Лабораторный практикум по современным языкам программирования Visual Studio »
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Modx Evolution Лабораторный практикум icon Энзимология
Энзимология : Лабораторный практикум /[Текст] / сост. Н. М. Титова, Т. Н. Субботина. – Красноярск: Сиб федер ун-т, 2012. – 60 с
Modx Evolution Лабораторный практикум icon Кафедра товароведения и товарной экспертизы лабораторный практикум...
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Modx Evolution Лабораторный практикум icon Российской Федерации Федеральное государственное бюджетное образовательное...
Лабораторный практикум по дисциплине «Операционные системы» / Уфимск гос авиац техн ун-т; Сост. О. Д. Лянцев, А. В. Казанцев. – Уфа,...

Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск