Инструменты пользователя

Инструменты сайта


service:cms

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
service:cms [07.08.2023 06:57] – [Плагины] viacheslavservice:cms [10.09.2024 14:49] (текущий) – [Установка] viacheslav
Строка 1: Строка 1:
 +Требования:
 +  - Подсветка кода - powershell, bash, yaml, dos
 +  - Таблицы
 +  - Галереи картинок
 +  - Плейлист аудио
  
 +====== Datenstrom Yellow ======
 +https://datenstrom.se/yellow/help\\
 +https://github.com/datenstrom/yellow\\
 +[[https://www.php.net/manual/en/datetime.format.php|PHP time format]]
 +
 +===== Настройки =====
 +
 +Page settings
 +
 +The following settings can be configured at the top of a page:
 +<code>
 +Title = page title
 +TitleContent = page title shown in content
 +TitleNavigation = page title shown in navigation
 +TitleHeader = page title shown in web browser
 +TitleSlug = page title used for saving the page
 +Description = page description
 +Author = page author(s), comma separated
 +Email = email of page author
 +Language = page language, e.g. en
 +Layout = page layout
 +LayoutNew = page layout for creating a new page
 +Theme = page theme
 +Parser = page content parser
 +Status = page status, supported status values
 +Redirect = redirect to a new page or URL
 +Image = page image
 +ImageAlt = description of the page image
 +Modified = page modification date, YYYY-MM-DD format
 +Published = page publication date, YYYY-MM-DD format
 +Tag = page tag(s) for categorisation, comma separated
 +Generate = page option(s) for generating a static website, comma separated
 +Comment = page option(s) for showing comments, comma separated
 +</code>
 +The following page status values are supported:
 +<code>
 +public = page is a normal page
 +private = page is not visible, user needs to enter password, requires private extension
 +draft = page is not visible, user needs to log in, requires draft extension
 +unlisted = page is not visible, but can be accessed with the correct link
 +shared = page is not visible, but can be included in other pages
 +</code>
 +===== Плагины =====
 +https://datenstrom.se/yellow/extensions/\\
 +https://github.com/GiovanniSalmeri?tab=repositories&q=yellow-&type=&language=&sort=\\
 +https://github.com/RobskiV/yellow-plugins\\
 +==== Установка ====
 +Способ 1 (для официальных расширений): В Докере: ''docker exec -it yellow-php php82 yellow.php install <имя расширения>''\\
 +Способ 2: Скопировать zip в system\extensions и обновить страницу сайта, архив сам распакуется и установится.
 +
 +<code bash>
 +curl -L https://github.com/GiovanniSalmeri/yellow-video/archive/refs/heads/main.zip -o ~/volumes/yellow/system/extensions/video.zip
 +</code>
 +==== Картинки ====
 +Одиночные: https://github.com/annaesvensson/yellow-image
 +
 +''%%[image photo.jpg "description of the image" style width height]%%''
 +
 +Name = file name\\
 +Alt = description of the image, wrap multiple words into quotes\\
 +Style = image style, e.g. left, center, right (или прочерк для значения по умолчанию)\\
 +Width = image width, pixel or percent\\
 +Height = image height, pixel or percent
 +
 +Слайдер: https://github.com/annaesvensson/yellow-slider
 +
 +''%%[slider photo.*jpg name loop 100% 1000]%%''
 +
 +Pattern = file name as regular expression\\
 +Sorting = gallery sorting, e.g. name, modified, size\\
 +Style = gallery style, e.g. loop, fade, slide\\
 +Size = image size, pixel or percent\\
 +Autoplay = play images automatically, delay time in milliseconds
 +
 +Галерея: https://github.com/annaesvensson/yellow-gallery
 +
 +''%%[gallery photo.*jpg name zoom 300]%%''
 +
 +Pattern = file name as regular expression\\
 +Sorting = gallery sorting, e.g. name, modified, size\\
 +Style = gallery style, e.g. zoom, simple\\
 +Size = image size, pixel or percent
 +
 +=== Расчёт размера картинок в галерее ===
 +<code powershell>
 +$width = 879
 +$border = 4
 +$row = read-host "Кол-во картинок в ряду"
 +($width - $border * ($row - 1)) / $row
 +</code>
 +==== Аудиоплеер ====
 +https://github.com/GiovanniSalmeri/yellow-sound\\
 +{{:service:pasted:20230805-143127.png?600}}
 +<code>
 +[sound my_song.mp3]
 +[sound violin/ciaccona.flac]
 +[sound album=2214@funkwhale.it]
 +[sound track=3VM35337X7Ro1tesUHnZ95]
 +[sound playlist.m3u]
 +</code>
 +==== Подсветка синтаксиса ====
 +Установка: ''docker exec -it yellow-php php82 yellow.php install highlight''\\
 +https://github.com/annaesvensson/yellow-highlight\\
 +Языки: https://github.com/scrivo/highlight.php/tree/master/src/Highlight/languages
 +==== Youtube ====
 +Установка: ''docker exec -it yellow-php php82 yellow.php install youtube''\\
 +https://github.com/annaesvensson/yellow-youtube
 +
 +==== Video ====
 +https://github.com/GiovanniSalmeri/yellow-video
 +
 +==== RSS feed ====
 +Установка: ''docker exec -it yellow-php php82 yellow.php install feed''\\
 +https://github.com/annaesvensson/yellow-feed
 +
 +/system/themes/snippets/footer.php
 +<code>
 +<a href="<?php echo $yellow->page->base."/feed/page:feed.xml" ?>">Feed</a>.
 +</code>
 +
 +/system/config/config.ini
 +<code>
 +FeedFilter: blog
 +</code>
 +https://internetblogger.de/2016/11/yellow-cms-rss-feed-plugin-installieren/
 +
 +==== Typography ====
 +https://github.com/GiovanniSalmeri/yellow-typography
 +
 +===== Обновление =====
 +<code bash>
 +docker exec -it yellow-php php82 yellow.php update
 +Blog 0.8.28
 +Copenhagen 0.8.15
 +Core 0.8.123
 +Edit 0.8.76
 +Feed 0.8.21
 +Markdown 0.8.26
 +Search 0.8.29
 +Update 0.8.95
 +Yellow update: Updates are available. Please type 'php yellow.php update all'.
 +
 +docker exec -it yellow-php php82 yellow.php update all
 +Yellow update: Website updated, 8 extensions updated
 +</code>
 +
 +====== Ghost ======
 +https://hub.docker.com/_/ghost/\\
 +https://ghost.org/docs/config/#
 +
 +Доступ к админке: ''/ghost''
 +
 +====== HTMLy ======
 +https://www.htmly.com/\\
 +https://github.com/danpros/htmly/
 +====== Pico ======
 +https://picocms.org/docs/\\
 +https://github.com/picocms/Pico/releases
 +
 +++++ Дерево каталогов проекта |
 +<code bash>
 +├── docker-compose.yml
 +├── nginx
 +│   ├── default.conf.template
 +│   └── Dockerfile
 +├── php
 +│   └── Dockerfile
 +└── www # распакованный pico-release-v3.0.0-alpha.2.tar.gz
 +    ├── assets
 +    ├── CHANGELOG.md
 +    ├── composer.json
 +    ├── composer.lock
 +    ├── config
 +    ├── content
 +    ├── CONTRIBUTING.md
 +    ├── index.php
 +    ├── LICENSE
 +    ├── plugins
 +    ├── README.md
 +    ├── themes
 +    └── vendor
 +</code>
 +++++
 +
 +++++ docker-compose.yml |
 +<code yaml>
 +version: '3.7'
 +
 +services:
 +  cmspico:
 +    container_name: cmspico
 +    depends_on:
 +      - cmspico-php
 +    build: ./nginx
 +    restart: unless-stopped
 +    environment:
 +      NGINX_ROOT: /var/www/html
 +      NGINX_FASTCGI_PASS: cmspico-php
 +    ports:
 +      - 80:80
 +    volumes:
 +      - ./www:/var/www/html
 +
 +  cmspico-php:
 +    container_name: cmspico-php
 +    build: ./php
 +    restart: unless-stopped
 +    volumes:
 +      - ./www:/var/www/html
 +</code>
 +++++
 +
 +++++ php/Dockerfile |
 +<code bash>
 +FROM alpine:3.18
 +# ADD --chown=82:82  https://github.com/picocms/Pico/releases/download/v2.1.4/pico-release-v2.1.4.tar.gz /var/www/html/
 +WORKDIR /var/www/html
 +
 +RUN apk add --no-cache \
 +php82 \
 +php82-fpm \
 +php82-mbstring \
 +php82-dom && \
 +addgroup -g 82 -S www-data || true && \
 +adduser -u 82 -D -S -G www-data www-data || true && \
 +sed -i '/listen = /c listen = 0.0.0.0:9000' /etc/php82/php-fpm.d/www.conf && \
 +chown -R 82: /var/log/php* .
 +# tar -xf pico-release-v2.1.4.tar.gz && \
 +# rm pico-release-v2.1.4.tar.gz && \
 +
 +EXPOSE 9000
 +USER 82
 +CMD ["php-fpm82", "-F"]
 +</code>
 +++++
 +
 +++++ nginx |
 +<file bash Dockerfile>
 +FROM nginx:alpine
 +
 +WORKDIR /var/www/html
 +
 +COPY default.conf.template /etc/nginx/templates/
 +#COPY --chown=82:82 public/. /var/www/html/public
 +</file>
 +<file bash default.conf.template>
 +server {
 +    listen 80;
 +    index index.php index.html;
 +    root ${NGINX_ROOT};
 +
 +    location ~ \.php$ {
 +        try_files $uri =404;
 +        fastcgi_split_path_info ^(.+\.php)(/.+)$;
 +        fastcgi_pass ${NGINX_FASTCGI_PASS}:9000;
 +        fastcgi_index index.php;
 +        include fastcgi_params;
 +        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 +        fastcgi_param PATH_INFO $fastcgi_path_info;
 +    }
 +
 +    location / {
 +        try_files $uri $uri/ /index.php?$query_string;
 +        gzip_static on;
 +    }
 +
 +    location ~ /\.(?!well-known).* {
 +        deny all;
 +    }
 +}
 +</file>
 +++++
 +
 +====== Wordpress ======
 +===== Установка =====
 +[[https://make.wordpress.org/hosting/handbook/server-environment/|Prerequisites]]
 +<code bash>
 +# Скачать последнюю версию
 +wget https://ru.wordpress.org/latest-ru_RU.zip
 +# Распаковать
 +unzip latest-ru_RU.zip
 +# Скопировать в корень веб-каталога
 +mv wordpress/* /var/www/html
 +# Дать права веб-серверу
 +chown -R www-data:www-data /var/www/html
 +# Сделать базу под названием wordpress:
 +mysql -u root -p -e "create database wordpress";
 +</code>
 +Далее зайти на веб-интерфейс и пройти пошаговую установку.
 +===== Настройка =====
 +<code bash>
 +# Симлинки - нужны, чтобы освободить место на системной флешке.
 +# После переноса папки wp-content на отдельную карточку SD, создаётся симлинк,
 +# чтобы Wordpress думал, что он кладёт данные туда же, куда и раньше.
 +# сделать симлинк на первый путь со второго
 +ln -s /media/sdcard/wp-content /var/www/html/wp-content
 +
 +# заменить владельца симлинка на веб-сервер
 +chown -h www-data:www-data /var/www/html/wp-content
 +# рекурсивно заменить владельца файлов в новом расположении
 +chown -R www-data:www-data /media/sdcard/wp-content
 +
 +# Настроить максимальный размер файла на закачку в PHP
 +# Проверить версию PHP и путь к используемому php.ini, например, он может быть
 +# /etc/php/7.0/fpm/php.ini. Есть ещё
 +# /etc/php/7.0/cli/php.ini.
 +sed -i '
 +/upload_max_filesize =/c upload_max_filesize = 4G
 +/post_max_size =/c post_max_size = 4G' /etc/php/7.0/apache2/php.ini
 +
 +# Отключить листинг каталогов сайта
 +echo "Options -Indexes" >> /var/www/html/.htaccess
 +</code>
 +
 +==== Воспроизведение аудиофайлов в браузере в Ubuntu ====
 +Для этого нужно поставить кодеки:
 +<code bash>
 +sudo apt-get install ubuntu-restricted-extras
 +</code>
 +
 +===== Миграция =====
 +https://wordpress.org/support/article/backing-up-your-database/\\
 +https://wordpress.org/support/article/moving-wordpress/\\
 +https://wpengine.com/resources/migrate-wordpress-site/
 +
 +==== Миграция на статику ====
 +В Wordpress: Инструменты -> Экспорт -> Всё содержимое
 +
 +<code bash>
 +docker run --rm --name node -it -v /home/user/wp:/app node:alpine sh
 +cd /app
 +wget https://github.com/lonekorean/wordpress-export-to-markdown/archive/refs/heads/master.zip
 +unzip master.zip
 +cd wordpress-export-to-markdown-master/
 +npm install && node index.js
 +
 +Starting wizard...
 +? Path to WordPress export file? ../WordPress.2023-08-04.xml
 +? Path to output folder? output
 +? Create year folders? No
 +? Create month folders? No
 +? Create a folder for each post? Yes
 +? Prefix post folders/files with date? No
 +? Save images attached to posts? Yes
 +? Save images scraped from post body content? Yes
 +? Include custom post types and pages? No
 +
 +Parsing...
 +621 posts found.
 +643 attached images found.
 +525 images scraped from post body content.
 +
 +Saving 621 posts (0 already exist)...
 +[OK] post-1
 +[OK] post-2
 +[OK] post-3
 +...
 +Done, got them all!
 +
 +Downloading and saving 906 images (0 already exist)...
 +[OK] 0_35843_228d6bb_L.jpg
 +[OK] 0_35833_ef4db138_L.jpg
 +[OK] 0_35842_b0b48f84_L.jpg
 +...
 +Done, but with 3 failed.
 +
 +All done!
 +Look for your output files in: /app/wordpress-export-to-markdown-master/output
 +</code>
 +https://swizec.com/blog/how-to-export-a-large-wordpress-site-to-markdown/\\
 +https://github.com/lonekorean/wordpress-export-to-markdown
 +
 +
 +
 +===== Полезные плагины =====
 +[[https://ru.wordpress.org/plugins/stop-user-enumeration/|Stop User Enumeration]] - отключает выведение списка пользователей по запросу извне\\
 +[[https://ru.wordpress.org/plugins/email-address-encoder/|Email Address Encoder]] - видоизменяет почтовые адреса в коде таким образом, что их не могу прочитать роботы-сборщики\\
 +[[https://ru.wordpress.org/plugins/wp-fail2ban-redux/|WP Fail2Ban Redux]] - перенаправляет логи в /var/log/auth.log для работы [[service:fail2ban#для_wordpress|fail2ban]]\\
 +[[https://ru.wordpress.org/plugins/duplicator/|Duplicator]] - gives WordPress users the ability to migrate, copy, move or clone a site from one location to another and also serves as a simple backup utility.\\
 +[[https://ru.wordpress.org/plugins/syntaxhighlighter/|SyntaxHighlighter Evolved]] - allows you to easily post syntax-highlighted code to your site without losing its formatting or making any manual changes.
 +
 +==== Использование SyntaxHighlighter Evolved ====
 +[code lang=%%"css"%%]\\
 +your code here\\
 +[/code]
 +
 +Если язык не указывать, по умолчанию - text.
 +
 +Список поддерживаемых языков:
 +
 +<WRAP group>
 +<WRAP half column>
 +  * actionscript3
 +  * bash
 +  * clojure
 +  * coldfusion
 +  * cpp
 +  * csharp
 +  * css
 +  * delphi
 +  * diff
 +  * erlang
 +  * fsharp
 +  * groovy
 +  * html
 +  * java
 +  * javafx
 +</WRAP>
 +
 +<WRAP half column>
 +  * javascript
 +  * latex (you can also render LaTeX)
 +  * matlab (keywords only)
 +  * objc
 +  * perl
 +  * php
 +  * powershell
 +  * python
 +  * r
 +  * ruby
 +  * scala
 +  * sql
 +  * text
 +  * vb
 +  * xml
 +</WRAP>
 +</WRAP>
 +
 +https://en.support.wordpress.com/code/posting-source-code/
 +===== Хитрости =====
 +==== Как сделать название аудиофайла рядом с треком ====
 +В данном случае название будет курсивом
 +<code html>
 +<p style="display: inline;"><em>Название аудиофайла</em></p>
 +[audio mp3="http://site/wp-content/uploads/2017/03/12345.mp3"][/audio]
 +</code>
 +[[https://www.tipsandtricks-hq.com/wordpress-audio-music-player-plugin-4556|Источник]]
 +
 +==== Якоря в тексте ====
 +Откуда:
 +<code html>
 +<a href="#intro">Предисловие автора</a>
 +</code>
 +Куда:
 +<code html>
 +<h3 id="intro">Предисловие автора</h3>
 +</code>
 +
 +==== Вставить приветствие на странице в зависимости от времени суток ====
 +<code javascript daytime.js>
 +<script language="JavaScript" type="text/javascript">
 +date = new Date();
 +date = date.getHours();
 +if (date >= 0 && date < 6) {document.write("Доброй ночи!")} else {if (date >= 6 && date < 12) {document.write("Доброе утро!")} else {if (date >= 12 && date < 18) {document.write("Добрый день!")} else {document.write("Добрый вечер!")} }} //--></script>
 +<noscript>Привет!</noscript>
 +</code>
 +
 +==== Код встраивания роликов с Youtube без лишних функций ====
 +Заменить qhRL6SBHMsQ в коде на нужное значение
 +<code html youtube.html>
 +<iframe width="560" height="312" src="https://www.youtube.com/embed/qhRL6SBHMsQ?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>
 +</code>
 +
 +==== HTML и таблицы ====
 +Пример таблицы для корректного отображения в Wordpress:
 +<code html>
 +<table style="text-align: left;" "border:none;"><tbody>
 +<caption>Было:</caption>
 +<col style="width:50%;" /> <col style="width:20%;" /> <col style="width:15%;" /> <col style="width:15%;" />
 +<tr><th>Имя подкаталога</th><th>Размер</th><th>Файлы</th><th>Папки</th></tr>
 +<tr><td>Концерты</td><td>181,1 ГБ</td><td>204</td><td>30</td></tr>
 +<tr><td>Мультфильмы</td><td>153,5 ГБ</td><td>717</td><td>43</td></tr>
 +<tr><td style="width:21em">Документальные фильмы</td><td>126,9 ГБ</td><td>189</td><td>27</td></tr>
 +<tr><td>Записи</td><td>87,1 ГБ</td><td>33</td><td>5</td></tr>
 +<tr><td>Художественные фильмы</td><td>55,2 ГБ</td><td>48</td><td>5</td></tr>
 +<tr><td>Детские фильмы</td><td>41,3 ГБ</td><td>39</td><td>3</td></tr>
 +<tr><td>Образование</td><td>30,4 ГБ</td><td>1250</td><td>59</td></tr>
 +<tr><td>Прочее</td><td>67,9 МБ</td><td>13</td><td>1</td></tr>
 +<tr><th>Всего:</th><th>675,7 ГБ</th><th>2493</th><th>181</th></tr>
 +</tbody></table>
 +</code>
 +
 +[[https://wpbtips.wordpress.com/2012/02/05/introduction-to-html-for-wordpress-com-users/|Introduction to HTML for wordpress.com users]]\\
 +[[https://wpbtips.wordpress.com/2013/04/09/table-coding-for-wordpress-com-users/|Table coding for wordpress.com users]]
 +
 +===== Решение проблем =====
 +==== "Извините, вам не разрешено просматривать эту страницу" в админке ====
 +Добавить в ''wp-config.php''
 +<code php>
 +// Только не в конец файла, а сразу после настроек базы
 +$_SERVER['HTTPS'] = 'on';
 +</code>
 +
 +https://serveradmin.ru/oshibka-wordpress-izvinite-vam-ne-razresheno-prosmatrivat-etu-straniczu/
 +
 +==== Array and string offset access syntax with curly braces is no longer supported ====
 +После обновления PHP с 7.4 до 8.2 сайт не работает, в логах Nginx ошибка:
 +<code bash>
 +2023/06/18 20:05:42 [error] 31#31: *451 FastCGI sent in stderr: "PHP message: PHP Fatal error:
 +Array and string offset access syntax with curly braces is no longer supported in
 +/var/www/html/wp-content/plugins/simple-mail-address-encoder/simple-mail-address-encoder.php on line 83"
 +while reading response header from upstream, client: 172.18.0.11, server: wp,
 +request: "GET /tag/%D0%B7%D0%B0%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5/ HTTP/1.1",
 +upstream: "fastcgi://172.18.0.5:9000", host: "bva.dyndns.info"
 +</code>
 +Решение: заменить в упомянутом PHP-файле в упомянутой строке значение в фигурных скобках на значение в квадратных скобках.
 +<code php>
 +// Было
 +echo($str{0});
 +// Стало
 +echo($str[0]);
 +</code>
 +https://stackoverflow.com/questions/59158548/array-and-string-offset-access-syntax-with-curly-braces-is-deprecated
 +===== Полезные ресурсы =====
 +[[https://wpscans.com/|Сканер безопасности для Wordpress]]\\
 +[[https://codex.wordpress.org/Brute_Force_Attacks|Советы по безопасности]]\\
 +[[https://codex.wordpress.org/UNIX_Shell_Skills|UNIX Shell Skills]]
 +
 +====== Литература ======
 +[[https://www.tldevtech.com/10-best-flat-file-cmses-to-build-a-website-without-database/|10 Best Simple CMSs To Build A Website Without a Database]]\\
 +[[https://lowendspirit.com/discussion/3040/seeking-wordpress-alternative-flat-nodb|Seeking Wordpress alternative (flat/noDB)]]\\
 +https://www.slant.co/topics/9652/~flat-file-cms

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki