Программирование сайтов

Подводный камень WordPress

Оказалось, что в категориях WordPress нельзя вывести форму комментариев. Такая задача обычно не стоит, однако вот понадобилось. Если категория представляет собой направление, требующее обсуждения или отзывов, было бы удобно использовать встроенную систему комментариев. Что же я нагуглил? Варианты решения проблемы:

  1. Написать собственную систему комментариев для категорий;
  2. Использовать страницы вместо категорий. 

Для своего сайта я бы использовал второй вариант. Но что если человек заказал изготовление сайта? Очень неудобный вариант.

Нужные SQL запросы

Поиск и замена подстроки в таблице table поля field:

UPDATE table SET field = REPLACE(field, 'старая строка', 'новая строка');

Операции над пользователями Linux

Установка нового пароля:

$ passwd username

Нужные команды для работы с базой MySQL

Экспорт:

$ mysqldump -u db_username -p db_name > db.sql

Импорт:

$ mysql -u db_username -p db_name < db.sql

Настройка Docker4Drupal для Drupal 7

Выделим папку под проект ~/docker/drupal7

Скачаем последний релиз Docker4Drupal и распакуем файлы в эту папку

Отредактируем файл .env

PROJECT_NAME=drupal7
PROJECT_BASE_URL=drupal7.localhost

...

PHP_TAG=5.6-dev-4.9.1

...

NGINX_VHOST_PRESET=drupal7

Отредактируем в файле docker-compose.yml в разделах php и nginx:

 volumes:
- ./:/var/www/html

Раскомментрировать весь раздел pma, если нужен PhpMyAdmin. По надобности, другие разделы.

Удалить файл docker-compose.overwrite.yml.

Закачаем файлы Drupal 7 в эту же папку проекта.

Запускаем контейнеры из docker-compose.yml:

$ cd~/docker/drupal7
$ docker-compose up -d

Если нужно исправить конфигурацию, после правок перезапускаем контейнеры:

$ docker-compose stop
$ docker-compose up -d

Данные базы, если не менять:

Хост: mariadb
База, пользователь и пароль: drupal

Адрес PMA: http://pma.drupal7.localhost:8000
Адрес сайта: http://drupal7.localhost:8000

 

Ubuntu 16.04 & Vesta CP — переключение между версиями PHP

Пример: Понижение до 5.6

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php5.6
php -v
sudo a2dismod php7.0
sudo a2enmod php5.6
sudo service apache2 restart
sudo update-alternatives --set php /usr/bin/php5.6

sudo apt-get install php5.6-mysql php-gettext php5.6-mbstring php-xdebug libapache2-mod-php5.6

Пример включения нужного расширения: sudo phpenmod mbstring

sudo apt-get update
sudo update-alternatives --set php /usr/bin/php5.6
sudo service apache2 restart

Права доступа в Linux (permissions)

У файлов и папок есть три вида владения, а у владельца есть три вида прав.

Виды владений Виды прав
  1. User — пользователь
  2. Group — группа
  3. Other — прочие
  1. Read — чтение
  2. Write — запись
  3. Execute — выполнение

Примеры: 

Владение правами записи на папку, позволяет создавать, удалять и переименовывать файлы в ней. Возможность изменять содержимое файлов зависит от наличия прав записи на файлы.

Если есть право записи на файл, но нет прав записи на папку файла, можно менять содержимое файла но нельзя удалить или переименовать файл.

Обозначение

Права

Обозначение Право на
r чтение
w запись
x выполнение

Владельцы

Обозначение Владелец
u Пользователь
g Группа
o Прочие
a Все

Действия

Обозначение Действие
+ Добавить право
Удалить право
= Установить право

Чтобы увидеть права и владельцев файла или папки, можно набрать в терминале ls -l. Пример:


$ ls -l
-rw-r--r-- 1 root root 11321 Oct 15 22:22 index.html

Понимать это следует так:

rw- r— r— root root index.html

Флаг
«-» файл

«d» папка

Права пользователя владеющего файлом|папкой Права группы владеющей файлом|папкой Права не владеющих файлом|папкой Пользователь владеющий файлом|папкой Группа владеющая файлом|папкой

Название файла|папки

Например, информация о папке со всеми правами всех владельцев будет выведена так:

drwxrwxrwx

Аналогично, для файла:

-rwxrwxrwx

Цифровое обозначение

Можно комбинацию прав одного типа владения заменить цифрой. Вот так цифры соответствуют правам:

0 ---
1 --x
2 -w-
3 -wx
4 r--
5 r-x
6 rw-
7 rwx

Установка прав

$ chmod 644 test.txt

или

$ chmod u = rw test.txt

или

$ chmod g + r test.txt

или

$ chmod go - w test.txt

Установить пользователя и группу:

$ chown admin:amdin test.txt

Установить пользователя:

$ chown admin test.txt

Установить группу:

$ chgrp admin test.txt

Установить для папки и ее содержимого (рекурсивно):

$ chown -R admin:admin test

Nano — редактор текста

Использование:

$ nano /path/to/file.txt

Управление:

Ctrl + O Сохранить изменения.
Ctrl + X

Выход. Если были не сохраненные изменения, нажать:
Y — чтобы сохранить;
N — чтобы не сохранять.

Ctrl + K Вырезать строку.
Ctrl + U Вставить строку.

 

Как обернуть элемент в тег — JavaScript

Например, обернем картинку в div с классом my-image.


<p>
<img id="photo" src="/images/photo.jpg" />
</p>


var image_code = document.getElementById('photo').parentElement.innerHTML; // получаем html код внутри родительского элемента
document.getElementById('photo').parentElement.innerHTML = '<div class="my-image">' + image_code + '</div>';

Изменить метки полей Views exposed filter between date

function mytheme_form_views_exposed_form_alter(array &$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
	switch ($form['#id']) {
		case 'views-exposed-form-myviewsname-page-1':
			$form['created']['min']['#title'] = 'от';
			$form['created']['max']['#title'] = 'до';
			break;
		case 'views-exposed-form-myviewsname-page-2':
			$form['created']['min']['#title'] = 'от';
			$form['created']['max']['#title'] = 'до';
			break;
	}
}