software:nas:nas_ds420_mediacms_dsm_7_admins_docs
Различия
Показаны различия между двумя версиями страницы.
software:nas:nas_ds420_mediacms_dsm_7_admins_docs [2025/03/09 17:22] – создано vladpolskiy | software:nas:nas_ds420_mediacms_dsm_7_admins_docs [2025/03/09 17:58] (текущий) – vladpolskiy | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ======MediaCMS установка в VMM DSM 7.2====== | + | ======MediaCMS |
+ | =====1. Добро пожаловать===== | ||
+ | Эта страница создана для администраторов MediaCMS, | ||
+ | |||
+ | =====2. Установка сервера===== | ||
+ | Основные зависимости: | ||
+ | |||
+ | Установка в системе Ubuntu с установленной утилитой git должна быть завершена за несколько минут с помощью следующих шагов. Убедитесь, | ||
+ | |||
+ | Автоматизированный скрипт — протестирован на Ubuntu 20, Ubuntu 22 и Debian Buster | ||
+ | < | ||
+ | mkdir / | ||
+ | git clone https:// | ||
+ | cd / | ||
+ | </ | ||
+ | Скрипт спросит, | ||
+ | |||
+ | Обновлять | ||
+ | Если вы использовали описанный выше способ установки MediaCMS, выполните обновление следующим образом: | ||
+ | < | ||
+ | cd / | ||
+ | source | ||
+ | git pull # update code | ||
+ | pip install -r requirements.txt -U # run pip install to update | ||
+ | python manage.py migrate # run Django migrations | ||
+ | sudo systemctl restart mediacms celery_long celery_short # restart services | ||
+ | </ | ||
+ | Обновление с версии 2 до версии 3 | ||
+ | Версия 3 использует Django 4 и Celery 5 и требует последней версии Python 3.x. Если вы обновляете более старую версию, | ||
+ | < | ||
+ | # cp deploy/ | ||
+ | # cp deploy/ | ||
+ | # cp deploy/ | ||
+ | # systemctl daemon-reload | ||
+ | # systemctl start celery_long celery_short celery_beat | ||
+ | </ | ||
+ | ===Конфигурация=== | ||
+ | Ознакомьтесь с разделом конфигурации здесь. | ||
+ | |||
+ | ===Обслуживание=== | ||
+ | Резервную копию базы данных можно создать с помощью pg_dump и media_files в / | ||
+ | |||
+ | =====3. Установка докера===== | ||
+ | ===Установка=== | ||
+ | Установите последнюю версию Docker и Docker Compose . | ||
+ | |||
+ | Для систем Ubuntu 20/22 это: | ||
+ | < | ||
+ | curl -fsSL https:// | ||
+ | sudo sh get-docker.sh | ||
+ | sudo curl -L " | ||
+ | sudo chmod +x / | ||
+ | </ | ||
+ | Затем запустите как root | ||
+ | < | ||
+ | git clone https:// | ||
+ | cd mediacms | ||
+ | </ | ||
+ | По умолчанию MediaCMS обслуживается на всех доступных IP-адресах сервера (включая localhost). Если вы хотите изучить больше вариантов (включая настройку https с сертификатом letsencrypt), | ||
+ | |||
+ | ==RUN== | ||
+ | < | ||
+ | docker-compose up | ||
+ | </ | ||
+ | Это загрузит все связанные с MediaCMS образы Docker и запустит все контейнеры. После завершения MediaCMS будет установлен и доступен на http:// | ||
+ | |||
+ | Пользователь admin был создан со случайным паролем, | ||
+ | < | ||
+ | migrations_1 | ||
+ | </ | ||
+ | или если вы установили переменную ADMIN_PASSWORD в файле docker-compose, | ||
+ | |||
+ | ===Обновлять=== | ||
+ | Получите последний образ MediaCMS и остановите/ | ||
+ | < | ||
+ | cd / | ||
+ | docker pull mediacms/ | ||
+ | docker-compose down | ||
+ | docker-compose up | ||
+ | </ | ||
+ | ===Обновление с версии 2 до версии 3=== | ||
+ | Версия 3 использует Python 3.11 и PostgreSQL 15. Если вы обновляете более старую версию, | ||
+ | < | ||
+ | db_1 | 2023-06-27 11: | ||
+ | db_1 | 2023-06-27 11: | ||
+ | </ | ||
+ | На этом этапе есть два варианта: | ||
+ | |||
+ | ====Конфигурация==== | ||
+ | Ознакомьтесь с документацией по конфигурации здесь. | ||
+ | |||
+ | ===Обслуживание=== | ||
+ | База данных хранится в ../ | ||
+ | |||
+ | =====4. Варианты развертывания Docker===== | ||
+ | Образ mediacms создан для использования supervisord в качестве основного процесса, | ||
+ | |||
+ | * ENABLE_UWSGI | ||
+ | * ENABLE_NGINX | ||
+ | * ENABLE_CELERY_BEAT | ||
+ | * ENABLE_CELERY_SHORT | ||
+ | * ENABLE_CELERY_LONG | ||
+ | * ENABLE_MIGRATIONS | ||
+ | По умолчанию все эти службы включены, | ||
+ | |||
+ | Также см. '' | ||
+ | |||
+ | См. примеры развертываний в разделах ниже. Эти примеры развертываний были протестированы при docker-compose version 1.27.4запуске наDocker version 19.03.13 | ||
+ | |||
+ | Для запуска обновите указанные выше конфигурации, | ||
+ | |||
+ | ===Простое развертывание, | ||
+ | Основной контейнер запускает миграции, | ||
+ | |||
+ | FRONTEND_HOST '' | ||
+ | |||
+ | ===Сервер с сертификатом ssl через службу letsencrypt, | ||
+ | Прежде чем попробовать это, убедитесь, | ||
+ | |||
+ | При этом методе используется такое развертывание . | ||
+ | |||
+ | Отредактируйте этот файл и установите '' | ||
+ | |||
+ | Отредактируйте '' | ||
+ | |||
+ | Теперь запустите docker-compose -f docker-compose-letsencrypt.yaml up, после завершения установки вы сможете получить доступ к https:// | ||
+ | |||
+ | ===Расширенное развертывание, | ||
+ | Здесь мы можем запустить 1 экземпляр mediacms_web с FRONTEND_HOST, | ||
+ | |||
+ | ===Расширенное развертывание с обратным прокси-сервером, | ||
+ | Здесь мы можем использовать jwilder/ | ||
+ | |||
+ | Расширенное развертывание с обратным прокси-сервером, | ||
+ | Обратный прокси-сервер ( jwilder/ | ||
+ | |||
+ | ===Масштабируемая архитектура развертывания (Docker, Swarm, Kubernetes)=== | ||
+ | Архитектура ниже обобщает все сценарии развертывания, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | =====5. Конфигурация===== | ||
+ | На сайте доступно несколько опций '' | ||
+ | |||
+ | Рекомендуется переопределить любой из них, добавив его в local_settings.py. | ||
+ | |||
+ | В случае установки на один сервер добавьте в cms/ | ||
+ | |||
+ | В случае установки docker compose добавьте в deploy/ | ||
+ | |||
+ | Для вступления любых изменений в силу потребуется перезапуск MediaCMS. | ||
+ | |||
+ | Установка на одном сервере: | ||
+ | < | ||
+ | #systemctl restart mediacms | ||
+ | </ | ||
+ | Установка Docker Compose: отредактируйте deploy/ | ||
+ | < | ||
+ | # | ||
+ | </ | ||
+ | ====5.1 Изменить логотип портала==== | ||
+ | Установите новый файл svg для белой темы ('' | ||
+ | |||
+ | ====5.2 Установить глобальное название портала==== | ||
+ | набор '' | ||
+ | < | ||
+ | PORTAL_NAME = 'my awesome portal' | ||
+ | </ | ||
+ | ====5.3 Контроль над тем, кто может добавлять медиафайлы==== | ||
+ | По умолчанию '' | ||
+ | |||
+ | * **email_verified**, | ||
+ | |||
+ | * **advancedUser**, | ||
+ | |||
+ | ====5.4 Каков рабочий процесс портала? | ||
+ | Переменная '' | ||
+ | |||
+ | * **public** — опция по умолчанию, | ||
+ | |||
+ | * **private** означает, | ||
+ | |||
+ | * **unlisted** означает, | ||
+ | |||
+ | ====5.5 Показать или скрыть кнопку «Войти»==== | ||
+ | для отображения кнопки: | ||
+ | < | ||
+ | LOGIN_ALLOWED = True | ||
+ | </ | ||
+ | чтобы скрыть кнопку: | ||
+ | < | ||
+ | LOGIN_ALLOWED = False | ||
+ | </ | ||
+ | ====5.6 Показать или скрыть кнопку «Регистрация»==== | ||
+ | для отображения кнопки: | ||
+ | < | ||
+ | REGISTER_ALLOWED = True | ||
+ | </ | ||
+ | чтобы скрыть кнопку: | ||
+ | < | ||
+ | REGISTER_ALLOWED = False | ||
+ | </ | ||
+ | ====5.7 Показать или скрыть кнопку загрузки медиафайлов==== | ||
+ | Показать: | ||
+ | < | ||
+ | UPLOAD_MEDIA_ALLOWED = True | ||
+ | </ | ||
+ | Чтобы скрыть: | ||
+ | < | ||
+ | UPLOAD_MEDIA_ALLOWED = False | ||
+ | </ | ||
+ | ====5.8 Показать или скрыть кнопки действий (нравится/ | ||
+ | Внесите изменения (True/ | ||
+ | < | ||
+ | - CAN_LIKE_MEDIA = True # whether the like media appears | ||
+ | - CAN_DISLIKE_MEDIA = True # whether the dislike media appears | ||
+ | - CAN_REPORT_MEDIA = True # whether the report media appears | ||
+ | - CAN_SHARE_MEDIA = True # whether the share media appears | ||
+ | </ | ||
+ | ====5.9 Показать или скрыть опцию загрузки на носителе==== | ||
+ | Редактировать templates/ | ||
+ | < | ||
+ | download: false | ||
+ | </ | ||
+ | ====5.10 Автоматически скрывать медиа при получении жалобы==== | ||
+ | установите небольшое число для переменной, | ||
+ | < | ||
+ | REPORTED_TIMES_THRESHOLD = 2 | ||
+ | </ | ||
+ | как только лимит достигнут, | ||
+ | |||
+ | ====5.11 Установка пользовательского сообщения на странице загрузки медиафайлов==== | ||
+ | это сообщение появится под формой перетаскивания медиафайлов | ||
+ | < | ||
+ | PRE_UPLOAD_MEDIA_MESSAGE = ' | ||
+ | </ | ||
+ | ====5.12 Установка настроек электронной почты==== | ||
+ | Установите правильные настройки для каждого провайдера | ||
+ | < | ||
+ | DEFAULT_FROM_EMAIL = ' | ||
+ | EMAIL_HOST_PASSWORD = ' | ||
+ | EMAIL_HOST_USER = ' | ||
+ | EMAIL_USE_TLS = True | ||
+ | SERVER_EMAIL = DEFAULT_FROM_EMAIL | ||
+ | EMAIL_HOST = ' | ||
+ | EMAIL_PORT = 587 | ||
+ | ADMIN_EMAIL_LIST = [' | ||
+ | </ | ||
+ | ====5.13 Запретить регистрацию пользователей из определенных доменов==== | ||
+ | Установите домены, | ||
+ | < | ||
+ | RESTRICTED_DOMAINS_FOR_USER_REGISTRATION = [ | ||
+ | ' | ||
+ | </ | ||
+ | В качестве альтернативы разрешите регистрацию только разрешенным доменам. Это может быть полезно, | ||
+ | < | ||
+ | ALLOWED_DOMAINS_FOR_USER_REGISTRATION = [ | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | </ | ||
+ | ====5.14 Требовать проверки редакторами/ | ||
+ | установить значение | ||
+ | < | ||
+ | MEDIA_IS_REVIEWED = False | ||
+ | </ | ||
+ | Теперь все загруженные медиа должны быть проверены, | ||
+ | |||
+ | ====5.15 Укажите максимальное количество медиафайлов для списка воспроизведения==== | ||
+ | установить другой порог для переменной '' | ||
+ | |||
+ | например | ||
+ | < | ||
+ | MAX_MEDIA_PER_PLAYLIST = 14 | ||
+ | </ | ||
+ | ====5.16 Укажите максимальный размер медиафайла, | ||
+ | изменять '' | ||
+ | |||
+ | по умолчанию 4 ГБ | ||
+ | < | ||
+ | UPLOAD_MAX_SIZE = 800 * 1024 * 1000 * 5 | ||
+ | </ | ||
+ | ====5.17 Укажите максимальный размер комментариев==== | ||
+ | изменять '' | ||
+ | |||
+ | по умолчанию: | ||
+ | < | ||
+ | MAX_CHARS_FOR_COMMENT = 10000 | ||
+ | </ | ||
+ | ====5.18 Сколько файлов загружать параллельно==== | ||
+ | установите другой порог по '' | ||
+ | < | ||
+ | UPLOAD_MAX_FILES_NUMBER = 100 | ||
+ | </ | ||
+ | ====5.18 заставить пользователей подтвердить свой адрес электронной почты при регистрации==== | ||
+ | опция по умолчанию для подтверждения электронной почты необязательна. Установите ее как обязательную, | ||
+ | < | ||
+ | ACCOUNT_EMAIL_VERIFICATION = ' | ||
+ | </ | ||
+ | ====5.20 Ограничение количества попыток входа в учетную запись==== | ||
+ | после достижения этого числа | ||
+ | < | ||
+ | ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 20 | ||
+ | </ | ||
+ | устанавливает тайм-аут (в секундах) | ||
+ | < | ||
+ | ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 5 | ||
+ | </ | ||
+ | ====5.21 Запретить регистрацию пользователя==== | ||
+ | установите следующую переменную на False | ||
+ | < | ||
+ | USERS_CAN_SELF_REGISTER = True | ||
+ | </ | ||
+ | ====5.22 Настройка уведомлений==== | ||
+ | Реализованные глобальные уведомления контролируются следующими параметрами: | ||
+ | < | ||
+ | USERS_NOTIFICATIONS = { | ||
+ | ' | ||
+ | } | ||
+ | </ | ||
+ | Если вы хотите отключить уведомления о новых медиа, установите значение False. | ||
+ | |||
+ | Администраторы также получают уведомления о различных событиях. Чтобы отключить эти уведомления, | ||
+ | < | ||
+ | ADMINS_NOTIFICATIONS = { | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | } | ||
+ | </ | ||
+ | * NEW_USER: добавлен новый пользователь | ||
+ | * MEDIA_ADDED: | ||
+ | * MEDIA_REPORTED: | ||
+ | ====5.23 Настройте доступ к медиа только для участников==== | ||
+ | Сделайте рабочий процесс портала общедоступным, | ||
+ | Вы можете либо указать '' | ||
+ | ====5.24 Включить карту сайта==== | ||
+ | Включать или нет генерацию файла карты сайта по адресу http:// | ||
+ | < | ||
+ | GENERATE_SITEMAP = False | ||
+ | </ | ||
+ | ====5.25 Управление тем, кто может добавлять комментарии==== | ||
+ | По умолчанию '' | ||
+ | |||
+ | * **email_verified**, | ||
+ | |||
+ | * **advancedUser**, | ||
+ | |||
+ | =====6. Управление страницами===== | ||
+ | быть написанным | ||
+ | |||
+ | =====7. Панель администратора Django===== | ||
+ | =====8. Рабочий процесс портала===== | ||
+ | Кто может публиковать контент, | ||
+ | |||
+ | =====9. О ролях пользователей===== | ||
+ | Различия между менеджером MediaCMS, редактором MediaCMS и вошедшим в систему пользователем | ||
+ | |||
+ | =====10. Добавление языков для титров и субтитров===== | ||
+ | быть написанным | ||
+ | |||
+ | =====11. Добавить/ | ||
+ | Через раздел администратора - http:// | ||
+ | |||
+ | =====12. Транскодирование видео===== | ||
+ | Добавить/ | ||
+ | |||
+ | Например, | ||
+ | |||
+ | =====13. Как добавить статическую страницу на боковую панель===== | ||
+ | ===1. Создайте свою html-страницу в templates/ | ||
+ | например, | ||
+ | < | ||
+ | sudo cp templates/ | ||
+ | </ | ||
+ | ===2. Создайте свой CSS-файл в static/ | ||
+ | < | ||
+ | touch static/ | ||
+ | </ | ||
+ | ===3. В вашем HTML-файле обновите заголовок блока meta, чтобы отразить вашу новую страницу.=== | ||
+ | < | ||
+ | {% block headermeta %} | ||
+ | <meta property=" | ||
+ | <meta property=" | ||
+ | <meta property=" | ||
+ | <meta name=" | ||
+ | <script type=" | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | }, | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | }] | ||
+ | } | ||
+ | </ | ||
+ | <link href=" | ||
+ | {% endblock headermeta %} | ||
+ | </ | ||
+ | ===4. В вашем HTML-файле обновите блок innercontent, | ||
+ | Пишите, | ||
+ | |||
+ | ===5. В вашем CSS-файле пропишите соответствующие стили для вашего HTML-файла.=== | ||
+ | Пишите, | ||
+ | |||
+ | ===6. Добавьте свое представление в files/ | ||
+ | < | ||
+ | def volunteer(request): | ||
+ | """ | ||
+ | context = {} | ||
+ | return render(request, | ||
+ | </ | ||
+ | ===7. Добавьте свой шаблон URL в files/ | ||
+ | < | ||
+ | urlpatterns = [ | ||
+ | url(r" | ||
+ | url(r" | ||
+ | url(r" | ||
+ | </ | ||
+ | ===8. Добавьте свою страницу на левую боковую панель=== | ||
+ | Чтобы добавить ссылку на свою страницу в качестве пункта меню на левой боковой панели, | ||
+ | < | ||
+ | /* Checks that a given selector has loaded. */ | ||
+ | const checkElement = async selector => { | ||
+ | while ( document.querySelector(selector) === null) { | ||
+ | await new Promise( resolve => requestAnimationFrame(resolve) ) | ||
+ | } | ||
+ | return document.querySelector(selector); | ||
+ | }; | ||
+ | |||
+ | /* Checks that sidebar nav menu has loaded, then adds menu item. */ | ||
+ | checkElement(' | ||
+ | .then((element) => { | ||
+ | | ||
+ | var a = document.createElement(' | ||
+ | a.href = "/ | ||
+ | a.title = " | ||
+ | |||
+ | var s = document.createElement(' | ||
+ | s.className = " | ||
+ | |||
+ | var icon = document.createElement(' | ||
+ | icon.className = " | ||
+ | icon.setAttribute(" | ||
+ | |||
+ | s.appendChild(icon); | ||
+ | a.appendChild(s); | ||
+ | |||
+ | var linkText = document.createTextNode(" | ||
+ | var t = document.createElement(' | ||
+ | |||
+ | t.appendChild(linkText); | ||
+ | a.appendChild(t); | ||
+ | |||
+ | var listItem = document.createElement(' | ||
+ | listItem.className = " | ||
+ | listItem.appendChild(a); | ||
+ | |||
+ | //if signed out use 3rd nav-menu | ||
+ | var elem = document.querySelector(" | ||
+ | var loc = elem.innerText; | ||
+ | if (loc.includes(" | ||
+ | elem.insertBefore(listItem, | ||
+ | } else { //if signed in use 4th nav-menu | ||
+ | elem = document.querySelector(" | ||
+ | elem.insertBefore(listItem, | ||
+ | } | ||
+ | })(); | ||
+ | }); | ||
+ | </ | ||
+ | ===9. Перезапустите веб-сервер mediacms.=== | ||
+ | В докере: | ||
+ | < | ||
+ | sudo docker stop mediacms_web_1 && sudo docker start mediacms_web_1 | ||
+ | </ | ||
+ | В противном случае | ||
+ | < | ||
+ | sudo systemctl restart mediacms | ||
+ | </ | ||
+ | =====14. Добавьте Google Аналитику===== | ||
+ | Инструкции предоставлены @alberto98fx | ||
+ | |||
+ | Создайте файл: | ||
+ | < | ||
+ | touch $DIR/ | ||
+ | </ | ||
+ | Добавьте скрипт Gtag/ | ||
+ | |||
+ | Внутри | ||
+ | < | ||
+ | < | ||
+ | {% block head %} | ||
+ | |||
+ | < | ||
+ | |||
+ | {% include " | ||
+ | |||
+ | {% block headermeta %} | ||
+ | |||
+ | <meta property=" | ||
+ | <meta property=" | ||
+ | |||
+ | {%endblock headermeta %} | ||
+ | |||
+ | {% block externallinks %}{% endblock externallinks %} | ||
+ | |||
+ | {% include " | ||
+ | |||
+ | {% block topimports %}{%endblock topimports %} | ||
+ | |||
+ | {% include " | ||
+ | |||
+ | {% endblock head %} | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | Добавить '' | ||
+ | |||
+ | Если вы используете Docker и не смонтировали весь каталог, | ||
+ | |||
+ | < | ||
+ | web: | ||
+ | image: mediacms/ | ||
+ | restart: unless-stopped | ||
+ | ports: | ||
+ | - " | ||
+ | deploy: | ||
+ | replicas: 1 | ||
+ | volumes: | ||
+ | - ./ | ||
+ | - ./ | ||
+ | < | ||
+ | =====15. Устранение неполадок с электронной почтой===== | ||
+ | В разделе «Конфигурация» этого руководства мы увидели, | ||
+ | |||
+ | Войдите в оболочку Django, например, | ||
+ | < | ||
+ | source | ||
+ | python manage.py shell | ||
+ | </ | ||
+ | и внутри оболочки | ||
+ | < | ||
+ | from django.core.mail import EmailMessage | ||
+ | from django.conf import settings | ||
+ | |||
+ | settings.EMAIL_BACKEND = ' | ||
+ | |||
+ | email = EmailMessage( | ||
+ | ' | ||
+ | ' | ||
+ | settings.DEFAULT_FROM_EMAIL, | ||
+ | [' | ||
+ | ) | ||
+ | email.send(fail_silently=False) | ||
+ | </ | ||
+ | У вас есть возможность либо получить письмо (в этом случае оно будет отправлено на адрес receiveer@email.com ), либо вы увидите ошибку. Например, | ||
+ | < | ||
+ | SMTPAuthenticationError: | ||
+ | </ | ||
+ | =====16. Часто задаваемые вопросы===== | ||
+ | Видео воспроизводится, | ||
+ | |||
+ | Скорее всего, файл спрайтов был создан неправильно. Вывод функции files.tasks.produce_sprite_from_video() в этом случае будет примерно таким | ||
+ | < | ||
+ | convert-im6.q16: | ||
+ | </ | ||
+ | Решение: | ||
+ | < | ||
+ | <policy domain=" | ||
+ | <policy domain=" | ||
+ | </ | ||
+ | Недавно добавленные видеофайлы теперь смогут создавать файлы спрайтов, | ||
+ | < | ||
+ | root@8433f923ccf5:/ | ||
+ | root@8433f923ccf5:/ | ||
+ | Python 3.8.14 (default, Sep 13 2022, 02:23:58) | ||
+ | </ | ||
+ | и беги | ||
+ | < | ||
+ | In [1]: from files.models import Media | ||
+ | In [2]: from files.tasks import produce_sprite_from_video | ||
+ | |||
+ | In [3]: for media in Media.objects.filter(media_type=' | ||
+ | | ||
+ | </ | ||
+ | это позволит заново создать спрайты для видео, которые не удалось выполнить. | ||
+ | |||
+ | =====17. Код согласия на использование файлов cookie===== | ||
+ | В файле '' | ||
+ | {{: | ||
+ | |||
+ | |||
+ | =====18. Отключить кодирование и показывать только оригинальный файл===== | ||
+ | При загрузке видео они кодируются в несколько разрешений, | ||
+ | < | ||
+ | DO_NOT_TRANSCODE_VIDEO = True | ||
+ | </ | ||
+ | Это отключит процесс перекодирования и будет показан только исходный файл. Обратите внимание, | ||
+ | |||
+ | =====19. Закругленные углы на видео===== | ||
+ | По умолчанию видеоплеер и элементы мультимедиа теперь имеют закругленные углы на больших экранах (не на мобильных устройствах). Если вам не нравится это изменение, | ||
+ | < | ||
+ | frontend/ | ||
+ | frontend/ | ||
+ | frontend/ | ||
+ | </ | ||
+ | Теперь вам придется перезапустить сборку фронтенда, | ||
+ | |||
+ | =====20. Переводы===== | ||
+ | ====20.1 Установить язык по умолчанию==== | ||
+ | По умолчанию MediaCMS доступен на нескольких языках. Чтобы установить язык по умолчанию, | ||
+ | |||
+ | ====20.2 Удалить существующие языки==== | ||
+ | Чтобы ограничить количество языков, | ||
+ | |||
+ | ====20.3 Улучшить существующий перевод==== | ||
+ | Чтобы внести улучшения в существующий переведенный контент на языке, на который уже выполнен перевод, | ||
+ | |||
+ | ====20.4 Добавить больше контента к существующему переводу==== | ||
+ | Не весь текст переведен, | ||
+ | |||
+ | а) вы сделали текст переводимым в коде б) вы добавляете переведенную строку | ||
+ | |||
+ | Для a) вам нужно посмотреть, | ||
+ | |||
+ | - шаблоны Django, которые находятся в templates/ dir. Посмотрите templates/ | ||
+ | - код фронтенда (React), посмотрите, | ||
+ | После того, как строка отмечена как переводимая, | ||
+ | < | ||
+ | python manage.py process_translations | ||
+ | </ | ||
+ | Чтобы заполнить строку на всех языках. НИКАКИЕ PR не будут приняты, | ||
+ | |||
+ | После запуска этой команды переведите строку на нужный вам язык. Если переводимая строка находится в шаблонах Django, вам не нужно перестраивать frontend. Если изменение находится во frontend, вам придется перестроить, | ||
+ | |||
+ | ====20.5 Добавить новый язык и перевести==== | ||
+ | Чтобы добавить новый язык: добавьте язык в settings.py, | ||
+ | |||
+ | =====21. Как изменить видеокадры на видео===== | ||
+ | По умолчанию при просмотре видео вы можете навести курсор и увидеть небольшие изображения, | ||
+ | |||
+ | * отредактируйте ./ | ||
+ | * отредактируйте settings.py и установите то же число для значения SPRITE_NUM_SECS | ||
+ | * теперь вам придется пересобрать фронтенд: | ||
+ | После этого для вновь загруженных видео будут сгенерированы спрайты с новым количеством секунд. |
software/nas/nas_ds420_mediacms_dsm_7_admins_docs.1741530144.txt.gz · Последнее изменение: — vladpolskiy