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
The following page status values are supported:
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
===== Плагины =====
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 и обновить страницу сайта, архив сам распакуется и установится.
curl -L https://github.com/GiovanniSalmeri/yellow-video/archive/refs/heads/main.zip -o ~/volumes/yellow/system/extensions/video.zip
==== Картинки ====
Одиночные: 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
=== Расчёт размера картинок в галерее ===
$width = 879
$border = 4
$row = read-host "Кол-во картинок в ряду"
($width - $border * ($row - 1)) / $row
==== Аудиоплеер ====
https://github.com/GiovanniSalmeri/yellow-sound\\
{{:service:pasted:20230805-143127.png?600}}
[sound my_song.mp3]
[sound violin/ciaccona.flac]
[sound album=2214@funkwhale.it]
[sound track=3VM35337X7Ro1tesUHnZ95]
[sound playlist.m3u]
==== Подсветка синтаксиса ====
Установка: ''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
">Feed.
/system/config/config.ini
FeedFilter: blog
https://internetblogger.de/2016/11/yellow-cms-rss-feed-plugin-installieren/
==== Typography ====
https://github.com/GiovanniSalmeri/yellow-typography
===== Обновление =====
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
====== 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
++++ Дерево каталогов проекта |
├── 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
++++
++++ docker-compose.yml |
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
++++
++++ php/Dockerfile |
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"]
++++
++++ nginx |
# Скачать последнюю версию
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";
Далее зайти на веб-интерфейс и пройти пошаговую установку.
===== Настройка =====
# Симлинки - нужны, чтобы освободить место на системной флешке.
# После переноса папки 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
==== Воспроизведение аудиофайлов в браузере в Ubuntu ====
Для этого нужно поставить кодеки:
sudo apt-get install ubuntu-restricted-extras
===== Миграция =====
https://wordpress.org/support/article/backing-up-your-database/\\
https://wordpress.org/support/article/moving-wordpress/\\
https://wpengine.com/resources/migrate-wordpress-site/
==== Миграция на статику ====
В Wordpress: Инструменты -> Экспорт -> Всё содержимое
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
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.
Список поддерживаемых языков:
Название аудиофайла
[audio mp3="http://site/wp-content/uploads/2017/03/12345.mp3"][/audio]
[[https://www.tipsandtricks-hq.com/wordpress-audio-music-player-plugin-4556|Источник]]
==== Якоря в тексте ====
Откуда:
Предисловие автора
Куда:
Предисловие автора
==== Вставить приветствие на странице в зависимости от времени суток ====
==== Код встраивания роликов с Youtube без лишних функций ====
Заменить qhRL6SBHMsQ в коде на нужное значение
==== HTML и таблицы ====
Пример таблицы для корректного отображения в Wordpress:
Было:
Имя подкаталога Размер Файлы Папки
Концерты 181,1 ГБ 204 30
Мультфильмы 153,5 ГБ 717 43
Документальные фильмы 126,9 ГБ 189 27
Записи 87,1 ГБ 33 5
Художественные фильмы 55,2 ГБ 48 5
Детские фильмы 41,3 ГБ 39 3
Образование 30,4 ГБ 1250 59
Прочее 67,9 МБ 13 1
Всего: 675,7 ГБ 2493 181
[[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''
// Только не в конец файла, а сразу после настроек базы
$_SERVER['HTTPS'] = 'on';
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 ошибка:
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"
Решение: заменить в упомянутом PHP-файле в упомянутой строке значение в фигурных скобках на значение в квадратных скобках.
// Было
echo($str{0});
// Стало
echo($str[0]);
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