Аня про Геткурс. Верстка, скрипты и решения
2.12K subscribers
107 photos
23 videos
1 file
20 links
Нужна интеграция, скрипты или верстка на Геткурсе? Пишите — @araviw

В этом канале публикую советы по верстке на Геткурсе, обзоры собственных решений и скриптов, решение "логических" задачек на платформе

🔥Разработчик года🔥 GetTechAwards'2022-2023
Download Telegram
Поиграем в прятки?

или

👀 про то, как скрыть что-то от кого-то где-то

У нас есть три значения, с которыми мы будем работать

1. Пользователь ID_USER
От него потребуется id, который можно взять в списке пользователей или в самой карточке

2. Страница /url
Хватит относительного урла страницы, где элемент находится

3. Элемент element
Старайтесь выхватить уникальный класс, чтобы скрипт ничего лишнего не тронул

⚙️ Что делает скрипт
Если будет соответствие пользователя и страницы, удалит нужный элемент.

Прятки выиграны! Нельзя найти то, чего нет 😁

Пригодится в тех случаях, когда по правам пользователя ограничивать не хочется, а вот что-то убрать от созерцания - нужно. Насовсем


<script>

if( [ID_USER].indexOf(window.accountUserId) != -1 && window.location.href.indexOf("/url") != -1
) {
setInterval(function(){
$('element').remove();
},100);
}

</script>
Please open Telegram to view this post
VIEW IN TELEGRAM
Важное событие марта

21 марта стартует главная онлайн-конференция для технических специалистов образовательного рынка — Global EdTech Conference.

И тут может быть три реакции:
1. уже купил билет ("шо, опять?")
2. что за конфа?
3. ждал(а), пока ты объявишь и дашь реф ссылку 😂

Если вы уже 1️⃣, то до встречи на конференции 🥰

Мое выступление 22 марта в 20 часов, тема "Крути педали! Стимуляция пользователя, «морковки» и просто геймификация".

О чем поговорим
О учебном процессе, о верстке для геймификации, о том, что можно сделать и как это можно сделать.

А если вы 2️⃣, то я вас скажу, что GETC 6.0 это про

— Дизайн интерфейса и редизайн сеток для визуальных блоков
— Скрытые каналы передачи данных
— Источники трафика и дeнежные возможности партнерок
— Совершенствование админок, стимуляция пользователей и геймификация
— Нюансы технического аудита проектов
— Настоящее и будущее разных платформ для онлайн-школ
— Увеличение ценности услуг, новые дорогие услуги для техспецов и предпринимательский рост

А если вы 3️⃣, то👉 жмяк на регистрацию

Скидка на любой пакет участия - 10%.
И конечно, пакет бонусов в конце конфы. Но!

Я тут поняла, что это уже моя 4 GETC. А анонс я делаю впервые 🙃

И раз вы еще читаете - тем, кто будет регистрироваться по ссылке выше будет дополнительный бонус от меня (его не будет в общем списке бонусов, но я вас найду, так и знайте 😄) :

👑 "Акционные бонусные рубли с таймером" 👑 (про то, как сделать списание и начисление бонусных рублей, которые имеют "срок жизни", но при этом не затрагивают основной баланс пользователя при списании и сгорании)

Придете?
Please open Telegram to view this post
VIEW IN TELEGRAM
🫥 Делаем тайное явным

В преддверии Гетц немного поговорю про геймификацию как таковую, не механику, а именно отчетный аспект.

Известно, что пользователь может в процессе прохождения обучения влиять на свой игровой баланс по средствам начислений:

1️⃣ по шкале достижений
2️⃣ монет
3️⃣ бонусных рублей

Все это (в совокупности или по отдельности) может быть завязано на скорость выполнения домашнего задания и полноту ответов, выполнение дз в срок, участия в каких-то активностях (формы, просмотры, ежедневные заходы, рекомендации, соцсети) и так далее. И как итог - баланс меняется. Но происходит это немного в теневом режиме, даже если вы заморочились и настроили уведомления на каждое пополнение или списание.

В "теневом" - потому что пользователь в какой-то момент времени может запросить у вас информацию о том, почему у него меньше, чем у кого-то другого юзера.

И чтобы избежать этого, можно предоставить пользователю доступ к истории начисления, в которой он увидит "выписку по счету".

⚙️ Как именно это сделать
(стандартных решений нет, значит подберемся к функционалу сами 💪)

🎓 Шкала достижений

https://domen.ru/pl/user/scale/view-results?id=11111&userId=000000&tab=accruals

где 11111 это шкала
а 000000 это id юзера

⚡️Только следите за тем, что есть id достижений, а есть именно шкала
вам нужно взять id из урла, который выглядит как
/pl/user/scale/update?id=01234

Причем, в этом случае очень удобно использовать блок, где поддерживается замена переменных - это позволит сразу сгенерировать ссылку с использованием переменной пользователя без привлечения скриптов. В тренинге этим блоком является html-блок. Внутрь него вставляется ссылка и обязательно чекбокс "Заменять переменные" (он на синей панели будет)

Сам формат кода может быть таким

<a href="https://domen.ru/pl/user/scale/view-results?id=11111&userId={id}&tab=accruals">Посмотреть историю начислений</a>

дальше - уже вопрос только в оформлении

👑 Баланс целиком
https://domen.ru/pl/sales/user-balance-row/my

и по каждому типу начислений отдельно
[type] points / virtual / normal


🔵Монеты
https://domen.ru/pl/sales/user-balance-row/my?UserBalanceRowSearch[type]=points

🔵Бонусный счет
https://domen.ru/pl/sales/user-balance-row/my?UserBalanceRowSearch[type]=virtual

🔵Депозит
https://domen.ru/pl/sales/user-balance-row/my?UserBalanceRowSearch[type]=normal

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

До конференции осталось еще совсем немного... Готовлю для вас css+js решения по геймификации 🥰

Если очень хочется что-то узнать из разряда "как это сделано" и "как повторить". Или просто "не видел, но хочу", пишите в комментарии 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🫥 Еще раз про подмену

Подскажите, пожалуйста, возможно ли изменить наименование «Монеты» в разделе во внутренней валюте геткурса?

Когда-то я писала о том, что если вы используете свою валюту в аккаунте для геймификации, то можно просто использовать переменную, а не замену скриптом значения (о чем идет речь)

Но это не решает вопроса с тем, что внутри меню остается написание "лишнего".

Менять скриптом... сложно, но можно. Или свое меню пилить... А еще можно просто сделать это через стили

Как именно:

/* делаем нулевой шрифт всему параграфу */
.gc-account-user-submenu-bar-profile p:nth-child(1) {
font-size: 0;
}

/* создаем псевдоэлемент*/
.gc-account-user-submenu-bar-profile p:nth-child(1):before {
font-size: 12px;
content:"Тунгрики: "
}

/* возвращаем размер шрифта количеству */
.gc-account-user-submenu-bar-profile p:nth-child(1) b {
font-size: 12px;
}

Профит! Слово монетки заменилось на тунгрики. Или на что вам нужно :)

зы монеты - функционал, подключаемый через техподдержку. Поэтому если у вас нет монет, а вы хотите свою валюту, то нужно сначала включить ее. У меня монеты идут первым значением, но есть случаи, когда они третьи. Тогда вместо (1) нужно брать (3)
Please open Telegram to view this post
VIEW IN TELEGRAM
🗝 По мотивам мест в группе

Если вы были на Гетц, то слышали о том, что с помощью переменной группы можно варьировать отображение на сайте. Как числа, так и того, что пользователь может сделать при заполнении группы.

📝 Суть проста - пользователи, которые делают какое-то действие (отправка формы, получение гайда, покупка продукта) добавляются в группу.

Ее счетчик мы выводим на странице, за счет чего берем переменную.
Скрипт следит за тем, какое значение имеет поле и при достижении лимита выводит текстовую фразу (в моем случае). В вашем - вы можете повесить элемент на какой-то элемент, чтобы он был скрыт.

Смотрим

$(document).ready(function() {
var counterLimit = 100;
var counterGroup = parseInt($('.counter_group').text());
$('.no_seats').hide();
if (counterGroup >= counterLimit) {
$('.no_seats').show();
$('.offer_group .f-btn').prop('disabled', true);
}
});

🤔 Что делает скрипт? Находит значение группы, и если число в группе достигает своего лимита, то показывается скрытый блок с уведомлением, до этого момента элемент скрыт. И кнопку оформления заказа нажать нельзя.

Таким образом можно регулировать и видимость других элементов, например, кнопки оформления заказа, видимость конкретного предложения.

По желанию, сам счетчик можно сделать вообще не видимым через класс view-collapsed

⚡️ Что нужно сделать?
Счетчик группы положить в класс counter_group
Установить свой лимит группы в скрипте
Добавить текст с классом no_seats
Форме установить класс offer_group
И сам скрипт поставить в блок js

без минусов не обошлось
Поскольку скрипт срабатывает в момент загрузки страницы и значение группы не обновляет постоянно, то может быть такое, что группа уже наполнилась, но сама страница еще об этом не знает.

Уточняйте, дополню решение под ваш случай ☺️
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Что это? 🙃

⚡️⚡️⚡️Форма с переключаемым "слайдером" на основе чекбокса.

И полем промокода. И нестандартным выводом цены рядом с кнопкой оплаты. И иконками внутри полей.

Кстати, это идеальное решение для сборки формы покупки "Для себя или в подарок".

Сама технология сборки "подарка" может осуществляться несколькими способами

1. отправкой данных на почту клиента, который покупает (сам перешлет одариваемому)

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

3. или воспользоваться секретной настройкой от ГК, когда он сам подключает функционал "подарочной формы. Но делают это не всем

Ну и все :))

скоро напишу про Гетц и Кодожорку 🌺
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM

❤️❤️❤️
Дизайн решает!

Ну, что! Прошел Гетц, прошла Кодожорка.

Что у них было общего (кроме "Вашу маму Аню и там и тут показывают"?)
Верно! Это макет.

Он изначально разрабатывался как макет для Гетц в его стилистике, затем облегченная версия перекочевала в марафон. Что хорошо для дизайнера? Что концепт был разработан один раз. Что хорошо для верстальщика? Я тоже собирала один раз, меняв переменные цветов в руте (+- вставка картинок).

Сама геймификация при этом тоже логически не менялась.

К чему это я? Одна хорошая, грамотная заготовка дает большое количество вариантов на выходе для реализации концепта.

⚙️ Об этом мы с Аней учим на ДиВ ("Дизайн и верстка на GetCourse"). Она - как рисовать, я - как собирать ✈️

А пока новый поток Див еще не стартовал, могу вам показать что сделал один из участников марафона по данной заготовке. Этакое собственное "виденье" (у вас тоже есть? Велкам в комментарии!).

И как говорится, скоро "во многих аккаунтах ГК" 🤣

🧑‍💻 Что по геймификации.

Надеюсь, что вы забрали свои бонусы по созданию верхнего прогресс-бара и целей в боковой части.

Но! Это еще не все. На следующей неделе будем собирать зачетку.
А еще - секретный бонус в пути (про "Акционные бонусные рубли с таймером")

👀 Кстати, вы увидели как реализовали модули? Какое у них нестандартное размещение? И не такое умеем (любим, практикуем) ! ⚡️

и зы - авторское право на данный макет наше
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓 Скрытые темы в аккаунте ГК

Хотя тут заголовок должен быть "Как ГК умеет удивлять" или "Сядьте, пожалуйста" или "План идеального преступления" или "Как убрать свой код от поползновений" или... Но начну издалека.

1️⃣ Шаг первый. Теоретический

Ссылки есть абсолютные и относительные.
Одна от другой отличается тем, что в одной есть домен, а вторая - имеет относительный адрес касательно того домена, где используется.

те
абсолютная
https://domen.io/pl/cms/layout/update?id=0123456

а вот
/pl/cms/layout/update?id=0123456
уже относительная

где id это "номер" темы 0123456 в аккаунте

2️⃣ Шаг второй. Логический

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


3️⃣ Шаг третий. Практический

Поскольку стилей для оформления аккаунта/тренинга/проекта бывает много, то один из вариантов "сохранения" стилей - поставить все в тему, а затем применить (помните, код в настройках аккаунта легко переполняется).

И сам вызов файла из темы будет как
@import url('/pl/cms/layout/css?id=0123456&hash=ceaf0a28ea7&bundle=1');

4️⃣ Шаг четвертый. Практический

Следую этой логике, в проекте, у которого нет темы с id 987654, не будет файлов, не будет открытий. И сама ссылка вида /pl/cms/layout/update?id=987654 не будет работать.

👀 Однако, файлы этой темы будут работать и будут применяться с другого аккаунта в теневом режиме!

те если у вас есть файлы из темы, вы можете их указать без домена и они подтянут информацию в рабочем режиме, визуально - с того аккаунта, где вы сейчас работаете 🧑‍💻

Этакая нелегальная теневая загрузка файлов.

Таким образом, вы можете размещать головоломки для тех, кого не хотите пускать в код для правок (их можно сделать и так, но... уже перебивкой стилей) и окончательно запутать "откуда берется стиль".

Не верите?

Откройте страницу тренингов и расширение для стилей (анализатор или user css) и вставьте туда этот код

@import url('/pl/cms/layout/css?id=25976&hash=39295c30d675547b38817ab4fb00c560&bundle=1');

а теперь посмотрите на заголовок под логотипом или кликните на аватарку пользователя (работает для немодифицированных элементов).

Вот так-то 🙏
Поэтому если вы видите код, но не можете найти его реальный источник, вполне вероятно - это тот самый случай.

У меня был легкий шок, когда я это увидела. По всем законам "жанра", так быть не должно. Но ГК таит в себе множество сюрпризов...

Все выше написанное стоит воспринимать как особенность поведения ГК, но не как руководство к действию по "занычке" файлов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Автозаполнение

или "цвет настроения синий" (голубой, желтый)

Что это?
Это автозаполнение

Из-за чего?
Когда вы выбираете сохраненный в браузере вариант

Чем мешает?
Да особо ничем, но иногда выбивается из стилистики оформления сайта, а конкретнее - формы

⚡️ Как победить?

input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus { -webkit-box-shadow: inset 0 0 0 100px #fff !important; /* убрать цвет предзаполненного поля */}

кратко, по пятничному 😂
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
⚙️ Написала решение для последовательной анкеты

Что оно делает

1️⃣ Переход к следующему шагу осуществляется автоматически после ответа в текущем вопросе, если сам вопрос не предусматривает множественный вариант ответа (а не как у ГК, когда бедняжка-юзер должен нажать на кнопку "далее" дополнительно)
2️⃣ Если текстовой вопрос не обязательный, то его можно пропустить (а не впечатывать пустоту)
3️⃣ Если пользователь неавторизован, а согласие идет из настроек аккаунта, то чекбокс виден только на последнем шаге, а не на протяжении всех ответов
4️⃣ Если пользователь авторизован, то после последнего ответа анкета будет отправлена автоматически при наличии заполненных обязательных полей

Одним словом, чиним баги от ГК :)

И этот вариант анкеты позволяет проходить опросник намного быстрее привычного варианта за счет как раз того, что ответы перелистываются сами. Но при этом "назад" все равно работает.

Где взять? В клубе 🧑‍💻

а вообще для клуба много чего пишется интересного 🥰
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
ПАРСЕР ПО ВЫГРУЗКЕ ДАННЫХ С ГК

Особенности

1️⃣⚡️ Ключевая - работает, имитируя пользователя и пользовательские операции. поэтому не рассматривается самим ГК как что-то вредоносное и скрипт ГК не банит

2️⃣ Можно делать любые операции с доступными данными на странице

3️⃣ На видео вы видите лишь частичную работу скрипта, когда он выгружает домашнее задание с разных уроков и ответы пользователей на него

👑 Еще скрипт умеет

⚡️ выгружать данные анкет в режиме реального времени

🔤выгружать ответы кураторов (попадают в блоки рядом с дз этого ученика)

🔤 выгружать время ответов, рассчитывая дедлайны, что удобно для контроля за работой кураторов и качеству обратной связи

🔤 возвращать данные из таблицы в ГК в карточку пользователя, которые создаст уже админ после работы с таблицей

🔤 удалять домашние задания ученика, готовя тренинг к повторному прохождению


Формат работы

Поскольку апи самих Гугл таблиц не "резиновое", то учитываются лимиты на вставку данных внутри них. Это означает, что при первой загрузке данных придется немного подождать :))

Парсер можно настроить на любое время обхода (раз в час, раз в сутки, одноразовое прохождение и тд). Новые данные будут дополнять текущие.

Парсером можно управлять самому админу - это осуществляется засчет того, что есть перечень урлов для обхода и их активность можно менять. Данные с новых урлов попадают на новые листы в таблице. Глубину "прохода" задает сам админ - можно указывать корневой тренинг и тогда скрипт пройдет по всем-всем подвложенностям, а можно только один урок.

✈️ скрипт настраивается под проект, поэтому пишите @araviw - обсудим реализацию под вас
Please open Telegram to view this post
VIEW IN TELEGRAM
УПРАВЛЕНИЕ КОНТЕНТОМ ЧЕРЕЗ РОЛЬ

У ГК есть два "места", через которые вы можете использовать получение информации о роли пользователя в текущий момент.

1️⃣Первое - через данные страницы и конкретно window.userInfo

Я люблю использовать этот вариант, особенно когда речь идет про большие скрипты и вариативность настройки аккаунта под разные роли, тк скриптом можно повесить класс куда угодно (а лучше прям на body), а значит мы обеспечиваем себе легкое управление контентом через стили.

⚙️ Например

if(window.userInfo.isAdmin) {
$('body').addClass('role-admin')
}

.role-admin {
стили любой вложенности
}

2️⃣ Второй вариант - использовать уже текущий класс, который "стоит рядом" с gc-main-content

Там будет gc-user-admin или gc-user-user

Минус - не сможем влиять на меню, тк оно не входит в этот див. Можно "перевестить" скриптом, но тут в дело вступает пункт 1 :))

Например наша задача, скрыть от учеников тренинг, оставить для админа

.gc-user-user .stream-table tr[data-training-id="00000"] {
display:none;
}

Например, только для админа добавить новое название тренинга к текущему

.gc-user-admin .stream-table tr[data-training-id="0000"] .stream-title:before {
content: "Новое название";
display: block;
color: #b320a1;
font-style: italic;
font-size: 15px;
}

В этом случае мы добавляем значение через создание псевдоэлемента. Поэтому, если элемент занят, учитывайте это :)) Решение для декстопа (в Чатиуме как обычно свои особенности, там лучше скриптами все делать). Но в обоих случаях там где 0000 - должен стоять id вашего тренинга.

Казалось бы, ничего супер оригинального в этих подходах нет, однако нервы и силы они вам могут сберечь 😉 особенно в тех случаях, когда ваши сегменты видимости это две большие разницы роли.
Please open Telegram to view this post
VIEW IN TELEGRAM
Ну вот и оно!! 🎂🎈

Днюшка наступила⚡️

Поздравления принимаются 🥰

Но я к вам с непустыми руками. Тортика нетути, зато есть небольшой подарок 🙃

⚙️ Намбер ван!

Многие писали, что забыли, пропустили, не знали, не успели и прочие "не" - суть которых одна. Забыли забрать бонусы с Гетс6.

Ну что же. Напишите Декану кодовое слово (оно прежнее, с конфы) до  конца воскресенья (4 июня 23:59) - он откроет все, что нужно

⚙️ Намбер ван с половиной!

У тех, кто знает что ему это полагается - урок про бонусные рубли с таймером там же ☺️ И скрипты для него. Честно, я пыталась коротко, но там часик (но видео - две штук) 🧑‍💻

——————-

И еще... и еще... Хотела пообещать вам в скором времени обзорные посты по технологии решения очень частых вопросов по ГК, но пока это секрет 😇

——————-

🥳 А вообще - это был очень крутой год!

——————-

зы И звезда во лбу горит! (куда же без классики 😂)

——————-
⚙️ Намбер??

Что делать, если тоже подарок хочется, а на конфе не были?

1. поздравить разумеется 😉
2. написать, что хочется получить в дар от именинницы (танцы не просите, скрипты и обзоры - можно 🙂)
3. увидим ✌️
Please open Telegram to view this post
VIEW IN TELEGRAM