Отображение списка курсов в теме Moove

Отображение списка курсов в теме Moove

от Виктория Малиатаки -
Количество ответов: 13
Здравствуйте.
Подскажите, можно ли как-то привести список курсов в теме Moove к нормальному виду?
Moodle 3.7.2
При просмотре списка курсов в категориях (например - адрес_сайта/course/index.php?categoryid=1) дублируются название курса, иконки вида доступа к курсу, криво отображается кнопка входа на курс.
Размер изображений изменила (отображались на весь экран), а остальные настройки не пойму, где изменять - выделила их на изображении рамочками:


И то же самое при записи на курс:


2. В личном кабинете (адрес_сайта/my/) отображается два курса в строку, что визуально не очень красиво. Можно ли сделать три курса? Ну или хотя бы уменьшить масштаб отображения, как это сделано, например, в теме Boost?



3. И еще один вопрос, может быть кто-то подскажет: можно ли как-то вывести имя пользователя  в верхней части сайта? :

В ответ на Виктория Малиатаки

Re: Отображение списка курсов в теме Moove

от Людмила Татарникова -
Здравствуйте, Виктория!
Тоже используем эту тему из-за её большущего преимущества - задвигающаяся правая панель.
Все перечисленные проблемы, кроме последней, решаются изменением css - спрячьте все дублирующие надписи (display:none), измените ширину карточек курса (например, так: .card-deck .card{flex-basis:calc(25% - 30px);}).
Вывести имя пользователя рядом с аватаркой можно с помощью JavaScript. Наши преподаватели попросили ещё вывести "хлебные крошки", начиная с названия курса, в "шапку" (иначе при прокрученной странице не видно, в каком курсе находишься) - тоже решается через JS.
В ответ на Людмила Татарникова

Re: Отображение списка курсов в теме Moove

от Виктория Малиатаки -
Спасибо, Людмила!
Да, задвигающаяся панель - это большой плюс, да и в целом тема удобная.

Изменение ширины карточки курса спасло ситуацию.
А вот с дублирующимися надписями пока не разобралась - уже пробовала их спрятать таким способом, но или ничего не происходит, или прячутся сразу обе, видимо, запуталась я где-то в параметрах.

За идею вывода "хлебных крошек" отдельное спасибо. Думаю, так будет удобнее.
В ответ на Людмила Татарникова

Re: Отображение списка курсов в теме Moove

от naska novichok -
А можете поподробнее рассказать куда добавить этот код, и как вывести ФИО через JS?
В ответ на naska novichok

Re: Отображение списка курсов в теме Moove

от Людмила Татарникова -
Куда я добавила этот код:
1. на сервере в папке moodle создаю папку, например, _mycode, и в неё добавляю файл my.js;
2. в Moodle иду в Администрирование - Внешний вид - Дополнительный HTML, в поле "Перед закрывающим тегом BODY" вставляю текст: 
<script src="https://ido.tsuab.ru/_mydata/my.js"> </script>
В файле my.js пишу:
 /* Вывести ФИО рядом с аватаркой */
let userName = $(".avatar.current img.userpicture").attr("title");
if(userName) if(userName.indexOf('Изображение пользователя',0) > -1 )userName = userName.slice(25);
if(userName){
let userText = $(".usertext").text();
if(userText != "") userText = "(" + userText + ") "
$(".usertext").text(userName.replace("Изображение пользователя","") + " " + userText);
}
Имя пользователя берём из атрибута title аватара пользователя (img.userpicture). Перед аватаром есть элемент span.usertext - в него и добавляем ФИО пользователя. Но так как в некоторых случаях в этот элемент система выводит какой-то текст, то если этот текст есть, выводим его в скобках после фамилии (5-я строчка кода, если не считать строки с комментарием).
 
В папку _mycode я добавила ещё файл my.css со своими стилями - удобнее, чем писать стили в админке.
В ответ на Людмила Татарникова

Re: Отображение списка курсов в теме Moove

от naska novichok -
Доброе утро.
я сделала всё по вашему описанию.
что-то ничего не поменялось.



Что я сделала не так?

Ещё интересует как применить отображение, которое я добавлю в файл my.css , и как правильно вставлять текст в этот файл просто отдельные строчки для каждого изменения?
например написать в файл 2 строчки:
.card-deck .card{flex-basis:calc(25% - 30px);}
.card-title {display: none;}
как дальше его применить?
В ответ на naska novichok

Re: Отображение списка курсов в теме Moove

от Vadim Tabunshchik -
Изображение пользователя Developers
Зачем эти заморочки с my.js, со вставкой ссылки на него в тег BODY, что приведет к загрузке этого скрипта на любой странице, где он может быть совсем не нужен.
Проще отредактировать файл темы, там всего то одну строку подправить и (если захочется) закомментировать блок кода.
Для Мудл 3.5 используется версия темы 2.3.9, открываем файл moove/classes/output/core_renderer/php и исправляем строку 339 в функции «public function user_menu».
Было:
        $usertextcontents = '';
Стало:
        $usertextcontents = $opts->metadata['userfullname'].'&nbsp;';
'&nbsp;' добавил, чтобы ФИО было с отступом от аватарки.
 
Если не нужен вывод ФИО в выпадающем user_menu, то ниже комментируем блок «// Adds username to the first item of usermanu.» (так и написано, с ошибкой в слове «usermenu» улыбаюсь) Строки с 409 по 415.
Вот это комментируем (кстати, это самодеятельность автора темы, в стандартной функции user_menu этого нет):
/**

           $userinfo = new stdClass();
            $userinfo->itemtype = 'text';
            $userinfo->title = $user->firstname . ' ' . $user->lastname;
            $userinfo->url = new moodle_url('/user/profile.php', array('id' => $user->id));
            $userinfo->pix = 'i/user';

            array_unshift($opts->navitems, $userinfo);
*/

В итоге получаем:
pdf1

Что касается изменения стилей: опять же, зачем использовать какой-то my.css, если все стили (.card-title {display: none;} и др.) можно прописать прямо в настройках темы: «Завершающий код SCSS» theme_moove | scss.

В ответ на Vadim Tabunshchik

Re: Отображение списка курсов в теме Moove

от Людмила Татарникова -
Вадим, спасибо за подсказку. Я в php полный нолик, а JS знаю, поэтому мне так проще. Тем более, что в этом my.js у меня ещё куча добавок, те же укороченные "хлебные крошки", показ pdf-файла прямо на странице при проверке эссе и т.п.
CSS-стили я раньше тоже добавляла в настройках темы, но css у меня очень большой, а окошко в настройках маленькое, синтаксической подсветки нет - опять в отдельном файле удобнее улыбаюсь
naska novichok, Вы попробуйте вариант Вадима, может, он Вам больше подойдёт. Ну а с моим вариантом если захотите разобраться, напишите - подскажу, где смотреть ошибки, разберёмся.
В ответ на Людмила Татарникова

Re: Отображение списка курсов в теме Moove

от naska novichok -
Людмила, спасибо большое. Конечно хочется разобраться и с вашим вариантом. Если есть такая возможность, то было бы здорово.
В ответ на Людмила Татарникова

Re: Отображение списка курсов в теме Moove

от Oxana V -
Вывести имя пользователя рядом с аватаркой можно с помощью JavaScript. Наши преподаватели попросили ещё вывести "хлебные крошки", начиная с названия курса, в "шапку"


Не поделитесь кодом? очень нужно

В ответ на Oxana V

Re: Отображение списка курсов в теме Moove

от Людмила Татарникова -
Поделюсь, но код зависит от версии Moodle и, скорее всего, темы - код, который я выше писала (вывод имени рядом с аватаркой) - для Moodle 3.5 с темой Moove, этим летом обновили Moodle до 3.9 - и код пришлось обновить.
 
Какая у Вас версия и тема?
 
Последний код (Moodle 3.9 + Moove):

/* Вывести ФИО рядом с аватаркой */
let userName = $(".action-menu-trigger .dropdown-menu i.icon").attr("title");
if(userName){
  let userText = $(".usertext").text();

  if(userText != "") userText = "(" + userText + ") ";
  $(".usertext").text(userName.replace("Изображение пользователя","") + " " + userText);
}

/* "крошки" в курсе в шапку */
let bc=$("#page-navbar");
if(bc){
  let bct = bc.clone();
  let cm = $("nav.navbar ul.custom-menus");
  cm.after(bct);
  bct.addClass("page-navbar-top");
  let lis = $("li",bct);
  for(let i=0;i<lis.length;i++){
    let a = $("a",lis[i]);
    if( a.attr("title") != undefined){
      break;
    }else{
      lis[i].remove();
    }
  }//for
}

В ответ на Людмила Татарникова

Re: Отображение списка курсов в теме Moove

от Oxana V -
Спасибо!
А куда и как вставить?)
Версия Moodle 4.0.4+