Содержание

Требования:

  1. Подсветка кода - powershell, bash, yaml, dos
  2. Таблицы
  3. Галереи картинок
  4. Плейлист аудио

Datenstrom Yellow

https://datenstrom.se/yellow/help
https://github.com/datenstrom/yellow
PHP time format

Настройки

Page settings

The following settings can be configured at the top of a page:

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

[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

<a href="<?php echo $yellow->page->base."/feed/page:feed.xml" ?>">Feed</a>.

/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

php/Dockerfile

nginx

Wordpress

Установка

Prerequisites

# Скачать последнюю версию
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

Полезные плагины

Stop User Enumeration - отключает выведение списка пользователей по запросу извне
Email Address Encoder - видоизменяет почтовые адреса в коде таким образом, что их не могу прочитать роботы-сборщики
WP Fail2Ban Redux - перенаправляет логи в /var/log/auth.log для работы fail2ban
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.
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.

Список поддерживаемых языков:

  • actionscript3
  • bash
  • clojure
  • coldfusion
  • cpp
  • csharp
  • css
  • delphi
  • diff
  • erlang
  • fsharp
  • groovy
  • html
  • java
  • javafx
  • javascript
  • latex (you can also render LaTeX)
  • matlab (keywords only)
  • objc
  • perl
  • php
  • powershell
  • python
  • r
  • ruby
  • scala
  • sql
  • text
  • vb
  • xml

https://en.support.wordpress.com/code/posting-source-code/

Хитрости

Как сделать название аудиофайла рядом с треком

В данном случае название будет курсивом

<p style="display: inline;"><em>Название аудиофайла</em></p>
[audio mp3="http://site/wp-content/uploads/2017/03/12345.mp3"][/audio]

Источник

Якоря в тексте

Откуда:

<a href="#intro">Предисловие автора</a>

Куда:

<h3 id="intro">Предисловие автора</h3>

Вставить приветствие на странице в зависимости от времени суток

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>

Код встраивания роликов с Youtube без лишних функций

Заменить qhRL6SBHMsQ в коде на нужное значение

youtube.html
<iframe width="560" height="312" src="https://www.youtube.com/embed/qhRL6SBHMsQ?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>

HTML и таблицы

Пример таблицы для корректного отображения в Wordpress:

<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>

Introduction to HTML 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

Полезные ресурсы

Сканер безопасности для Wordpress
Советы по безопасности
UNIX Shell Skills

Литература

10 Best Simple CMSs To Build A Website Without a Database
Seeking Wordpress alternative (flat/noDB)
https://www.slant.co/topics/9652/~flat-file-cms