shared_code web_developing web.master-artem.ru

web developing

Get Started. It's Free
or sign up with your email address
shared_code web_developing web.master-artem.ru by Mind Map: shared_code web_developing web.master-artem.ru

1. FrontEnd

1.1. modules

1.1.1. Оформленные Decorated

1.1.1.1. Плавная прокрутка до элемента на другой или на текущей странице Smooth scrolling to an item on another or current page

1.1.1.2. Фиксация блоков при прокрутке Locking blocks while scrolling

1.1.2. Перемещение элементов Moving items

1.1.2.1. Перемещение элементов по DOM дереву в зависимости от разрешения экрана Moving elements around the DOM tree depending on the screen resolution

1.1.3. Модуль перетаскивания и бросания Drag and Drop Module

1.1.4. Обработка событий Event handling

1.1.4.1. Событие Keyup (e.keyCode или e.key) Keyup event (e.keyCode or e.key)

1.1.5. Измерения Mensurate

1.1.5.1. Медиа запрос в js на максимум от ширины окна Media request in js for the maximum of the window width

1.1.6. Мобильные устройства Mobile devices

1.1.6.1. Вызов меню "Поделиться" на Android и iOS Calling the Share menu on Android and iOS

1.1.6.2. Проверка на мобильное устройство Mobile device check

1.1.7. Типографика Text

1.1.7.1. Обрезание строки и подстановка окончания js решение + css решение String truncation and end substitution js solution + css solution

1.1.8. Изображения Images

1.1.8.1. Изменить большое изображение, нажимая на мини-изображения Change large image by clicking on thumbnails

1.1.9. CSS модули CSS modules

1.1.9.1. reset.css + reset-art.css

1.1.9.2. SCSS генерация margin'ов SCSS margin generation

1.1.10. Кроссбраузерность Cross-browser compatibility

1.1.10.1. Альтернативный стиль, если вы не можете его использовать! Alternative style if you can't use it!

1.1.11. Счётчики Counters

1.1.11.1. Счетчик - таймер с выводом на экран Counter - timer with display

1.1.11.1.1. gist_link (link)

1.1.12. Ссылки "<a href" Links "<a href"

1.1.12.1. Ссылка "Вернуться назад" Back link

1.1.12.2. Выключить переход по ссылкам если равны '#' Disable following links if equal '#'

1.1.13. Формы Forms

1.1.13.1. установка курсора в определенное место (на 4 символ сразу после откр. скобки телефона) placing the cursor in a specific place (4 characters immediately after opening the phone bracket)

1.1.13.2. Универсальный mail script - отправка формы с сайта Generic mail script - submitting a form from a site

1.1.14. Вычисления Calculations

1.1.14.1. Максимальная ширина браузера Max browser width

1.2. components

1.2.1. Оформленные Decorated

1.2.1.1. btn-menu

1.2.1.2. figures

1.2.1.2.1. triangle

1.2.2. img

1.2.2.1. Оптимизация и конвертирование Optimization and conversion

1.2.2.1.1. Серьезная программа конвертации, оптимизации по совету от гугл (XnConvert) (link) Serious conversion program, optimization on the advice of Google (XnConvert) (link)

1.2.2.1.2. Repo: Оптимизация png, jpg из контекстного меню windows (link) Repo: Optimize png, jpg from windows context menu (link)

1.2.2.1.3. webp

1.2.2.2. Невидимые области на изображении ведущие на какие либо ресурсы Invisible areas in the image leading to any resources

1.2.2.2.1. <map><area>... (link)

1.2.2.3. SVG

1.2.2.3.1. Оптимизация SVG Optimizing SVG

1.2.2.3.2. выделение областей изображения (image map) selection of areas of the image (image map)

1.2.2.3.3. тени shadows

1.2.3. input

1.2.3.1. checkbox

1.2.3.1.1. checkmarker

1.2.4. font-face (link)

1.2.5. gradient

1.2.5.1. border

1.2.5.1.1. v1 (link)

1.2.5.1.2. v2 (link)

1.2.5.2. Gradient generator (link)

1.2.6. animations

1.2.6.1. Прелоадер Preloader

1.2.6.1.1. Прелоадер загрузки страницы. (link) Page loading preloader. (link)

1.2.6.1.2. С процентом загрузки With loading percentage

1.2.6.1.3. Круглый прогрессбар Round progress bar

1.2.6.2. libs_of_animations

1.2.6.2.1. LottieFiles - Free animation files built for Lottie, Bodymovin (link)

1.2.7. эффект загрузки контента content loading effect

1.2.7.1. https://simple-solutions.bitrix24.ru/bitrix/images/intranet/slider/profile.svg

1.3. effects

1.4. dev_tools

1.4.1. npm: js babel + scss + autoprefixer + minimize

1.4.1.1. GitHub

1.4.1.2. Cacher

1.5. Производительность Performance

1.5.1. Критически важный контент может быть заранее подгружен Critical content can be pre-loaded

1.5.1.1. rel="preload"

1.5.1.1.1. Важно избегать использования rel=preload для предварительной загрузки форматов изображений без широкой поддержки браузера (например, WebP). Также полезно избегать его использования для адаптивных изображений, определенных в srcsetтех случаях, когда извлекаемый источник может различаться в зависимости от состояния устройства. It's important to avoid using rel = preload to preload image formats without broad browser support (like WebP). It is also useful to avoid using it for responsive images defined in srcset in cases where the source being retrieved may differ depending on the state of the device.

1.6. Кроссбраузерность

1.6.1. Инструменты

1.6.1.1. Modernizr (link)

1.6.2. IE

1.6.2.1. Grid

1.6.2.1.1. Правила (link)

1.6.2.1.2. Guid (link)

1.6.2.1.3. Автопрефексиры

1.6.2.2. CSS идентификация ie 10/11

1.6.2.2.1. @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none)

1.7. Наблюдения

1.7.1. CSS

1.7.1.1. Резиновые блоки

1.7.1.1.1. Если надо сделать резиновую вёрстку то надо использовать calc, например:

1.7.1.2. В стилях желательно придерживаться очередности, чтобы легко ориентироваться в стилях.

1.7.1.2.1. что

1.7.1.2.2. где (модификатор-позиционирование)

1.7.1.2.3. как (модификатор-состояние)

1.7.2. Разница загрузки BOM (Browser) и DOM (Document)

1.7.2.1. Разница в милесекундах загрузки DOM и BOM относительно начала страницы. (link)

1.8. Исправления ошибок

1.8.1. Проблема на apple ios ошибка скроллинга всплывающего окна на fancybox с position: fixed; не прокручивается контент в всплывшем окне (link)

1.8.1.1. css

1.8.1.1.1. .fancy-popup {          position: absolute;//instead fixed }

1.8.1.2. js

1.8.1.2.1. $('[data-fancybox-some]').fancybox({          touch: false,//for android          scrolling: 'yes',          overflow: 'auto' });

2. CMS

2.1. Wordpress

2.1.1. Получить путь к теме wordpress в js файле. (link)

2.1.2. Технические требования интеграции верстки

2.1.2.1. Отсутствие ошибок в работе сайта, ошибок в консоли браузера; Максимально автоматизировать и упростить работу с контентом.    Использовать ACF (желательно) или CFS, делить их на группы/вкладки,    использовать полезные пояснения для редакторов.    Возможно использование Post Snippets; Использовать CPT для различного рода записей (например, услуги, акции, каталог); По возможности, не допускать использования HTML в редакторе    для наполнения страниц контент-менеджером; Не использовать Page Builders; Для контактных форм использовать CF7; Для таблиц использовать TablePress; Адекватная работа ЧПУ.    При необходимости можно использовать Custom Permalinks; Не нагружать сайт лишними плагинами. Использовать только то, что необходимо.

2.2. MODx

2.2.1. MODx_FormIt (link)

2.2.2. Сниппет и чанк для MODx для отображения класса 'active' на активной странице. (link)

2.2.3. https://gist.github.com/artemijeka/853e45c73ac23382d7aa6ddaac614083Пример поля MIGX в MODx Revolutoin    View modx-migx.js (link)

2.3. Bitrix

2.3.1. Debug

2.3.1.1. code (link)

2.3.2. login

2.3.2.1. без пароля и логина

2.3.2.1.1. <? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php"); global $USER; $USER->Authorize(1); LocalRedirect(“/bitrix/admin/”); ?> (link)

2.3.3. Birtix Подключение разных файлов в зависимости от пути. (link)

2.3.4. Bitrix убрать $_GET['success'] из url и скрыть popup с фразой об успехе. (link)

2.3.5. Bitrix. Вставка редактируемой области. (link)

2.3.6. Редирект

2.3.6.1. Bitrix - редирект по повторному нажатию на кнопку. (link)

2.3.7. Вывод информации из админки

2.3.7.1. Вывод элементов инфоблока в вёрстку (link)

2.3.8. Mail

2.3.8.1. Васянская форма для битрикс. (link)

2.3.8.2. Отправка элементов корзины на почту в D7.

2.3.8.3. Bitrix. Добавление своего макроса #PHONE# к шаблону письма. (link)

2.3.9. Forms

2.3.9.1. хороший пример формы обратной связи на технолайф 13.07.2020

2.3.9.1.1. $ordertext = '';            foreach ($basket as $basketItem) {                    $ordertext .= $basketItem->getField('NAME') . ' - ' . $basketItem->getQuantity() . 'шт. на сумму ' . $basketItem->getFinalPrice() .' руб.' . '<br />';            }                $name = trim($_POST["username"]);            $surname = trim($_POST["usersurname"]);            $phone = trim($_POST["userphone"]);            $mail = trim($_POST["useremail"]);            $arEventFields = array(                    "ORDER_USER"    => $surname . " " . $name,                    "ORDER_ID"            => $result->getId(),                    "PRICE"                    => $summ . " рублей",                    "EMAIL"                    => $mail,                    "PHONE"                            => $phone,                    "ORDER_LIST"            => $ordertext,                    "ORDER_DATE"            => $order->getDateInsert()            );            CEvent::Send("SALE_NEW_ORDER","s1",$arEventFields,"N","30", "");    }        CSaleBasket::DeleteAll(CSaleBasket::GetBasketUserID(), False);

2.3.10. Добавление custom свойства инфоблока в $arResult (link)

2.3.11. SEO

2.3.11.1. Section (link)

2.3.11.1.1. $SECTION_ID = $sec['ID']; $IBLOCK_ID = 11;    $ipropSectionValues = new ($IBLOCK_ID, $SECTION_ID); $arSEO = $ipropSectionValues->getValues(); if ($arSEO['SECTION_META_TITLE'] != false) { $APPLICATION->SetPageProperty("title", $arSEO['SECTION_META_TITLE']); } if ($arSEO['SECTION_META_KEYWORDS'] != false) { $APPLICATION->SetPageProperty("keywords", $arSEO['SECTION_META_KEYWORDS']); } if ($arSEO['SECTION_META_DESCRIPTION'] != false) { $APPLICATION->SetPageProperty("description", $arSEO['SECTION_META_DESCRIPTION']); }

2.3.11.2. Element (link)

2.3.11.2.1. $ipropValues = new (11/*ID инфоблока*/,$arFields['ID']/*ID элемента*/);              $arElMetaProp = $ipropValues->getValues();              if ($arElMetaProp['ELEMENT_META_TITLE'] != false) {                  $APPLICATION->SetPageProperty("title", $arElMetaProp['ELEMENT_META_TITLE']);              }              if ($arElMetaProp['ELEMENT_META_DESCRIPTION'] != false) {                  $APPLICATION->SetPageProperty("description", $arElMetaProp['ELEMENT_META_DESCRIPTION']);              }              if ($arElMetaProp['ELEMENT_META_KEYWORDS'] != false) {                  $APPLICATION->SetPageProperty("keywords", $arElMetaProp['ELEMENT_META_KEYWORDS']);              }

2.3.12. CIBlockElement::GetList()

2.3.12.1. GetProperties()

2.3.12.1.1. $arSelect = Array(); $arFilter = Array("IBLOCK_ID" => 2, "NAME" => $arResult[3]['TITLE']); $res = CIBlockElement::GetList(Array(), $arFilter, false, Array(), $arSelect); while ($ob = $res->GetNextElement()) { $arProps = $ob->GetProperties(); $title = $arProps['NAME_ENG']['VALUE']; }

2.3.12.2. GetFields()

2.3.12.2.1. $arSelect = Array(); $arFilter = Array("IBLOCK_ID" => 2, "NAME" => $arResult[3]['TITLE']); $res = CIBlockElement::GetList(Array(), $arFilter, false, Array(), $arSelect); while ($ob = $res->GetNextElement()) { $arFields = $ob->GetFields(); $title = $arProps['NAME_ENG']['VALUE']; }

2.4. October

2.5. OpenCart

2.6. Админка для статичного сайта

2.6.1. Textolite (link)

2.7. Shop-Script (webasyst)

3. GIT

3.1. global .gitignor (link)

4. Linux

4.1. Localhost

4.1.1. Lampp пример создания локального домена (Linux). (link)

4.2. Terminal

4.2.1. .bashrc aliases collection (link)

4.3. xneur

4.3.1. settings (link)

4.4. Права на файлы

4.4.1. Задать

4.4.1.1. chmod ugo+-rwx ./path/to/file

4.4.1.1.1. u - user

4.4.1.1.2. g - group

4.4.1.1.3. o - other

4.4.1.1.4. + добавить флаг

4.4.1.1.5. - убрать флаг

4.4.1.1.6. r - чтение

4.4.1.1.7. w - запись

4.4.1.1.8. x - исполнение

4.4.1.1.9. последний атрибут - путь к файлу

4.4.1.2. --- - 0 r-- - 4 (= 4*1 + 2*0 + 1*0) r-x - 5 (= 4*1 + 2*0 + 1*1) rwx -7 (= 4*1 + 2*1 + 1*1)

4.4.2. Посмотреть

4.4.2.1. ls -l ./path

4.5. Локальный сервер

4.5.1. Инструкция по установке локального сервера xampp на ubuntu и macOS хорошая тут. (link)

4.5.2. LAMPP

4.5.2.1. - - - - - - - - - - - - - - - - - - - - Раскоментировать в sudo gedit /opt/lampp/etc/httpd.conf Include etc/extra/httpd-vhosts.conf - - - - - - - - - - - - - - - - - - - - Прописать в sudo gedit /etc/hosts 127.0.0.1              php-2.loc - это имя локального хоста. - - - - - - - - - - - - - - - - - - - - Добавление нового локального доменного имени сюда: sudo gedit /opt/lampp/etc/extra/httpd-vhosts.conf Код по шаблону: <VirtualHost *:80>          DocumentRoot "/opt/lampp/docs/php-2.loc/"          ServerName php-2.loc          <Directory "/opt/lampp/docs/php-2.loc/">                  Options Indexes FollowSymLinks Includes execCGI                  AllowOverride All                  Require all granted          </Directory> </VirtualHost> # (Можно в пути указать любой путь на компьютере) - - - - - - - - - - - - - - - - - - - - Если доступ все еще не доступен: Открыть права на нужные папки И ПРОСЛЕДИТЬ ЧТОБЫ НА ВСЕМ ПУТИ БЫЛИ ПРАВИЛЬНЫЕ ПРАВА! - - - - - - - - - - - - - - - - - - - - (link)

4.5.2.2. Если apache не запускается:    sudo service apache2 status    sudo service apache2 stop - - - - - - - - - - - - - - - - - - - -

4.5.2.3. Вынос ярлыка программы в менюшку: Open a new terminal and run:      sudo gedit /usr/share/applications/xampp.desktop and save the following code in the file.    [Desktop Entry] Version=1.0 Name=XAMPP Comment=Менеджер управления XAMPP Exec=gksudo /opt/lampp/manager-linux-x64.run Icon=/opt/lampp/htdocs/dashboard/images/favicon.png Terminal=false Type=Application Categories=Network;Internet;    Run following command in terminal:      sudo apt-get update - - - - - - - - - - - - - - - - - - - - Исключение из автозагрузки apache2 Код: [Выделить]      sudo update-rc.d -f apache2 disable Код: [Выделить]      echo "manual" | sudo tee -a /etc/init/mysql.override Потом остановка Код: [Выделить]      sudo service apache2 stop Код: [Выделить]      sudo service mysql stop Ручное управление      sudo service apache2(mysql) start(stop , restart) LAMP | Русскоязычная документация по Ubuntu - - - - - - - - - - - - - - - - - - - - (link)

4.5.2.4. ПОМЕНЯТЬ ROOT ПАРОЛЬ В ФАЙЛЕ ЕСЛИ НАДО

4.5.2.4.1. /opt/lampp/phpmyadmin/config.inc.php

4.6. ПРОБЛЕМЫ И ИХ РЕШЕНИЯ

4.6.1. Проблема загрузки

4.6.1.1. Failed to start Load Kernel Modules

4.6.1.2. Или

4.6.1.3. Time out waiting for device dev-disk-by..

4.6.1.4. Надо залезть в /etc/fstab системы и закоментить подозрительные разделы или uuid у них поправить.

4.6.1.4.1. чтобы узнать uuid каждого раздела

4.7. Создание установочной флешки

4.7.1. linux

4.7.1.1. sudo dd bs=4M if=/home/artem/Media/OS/manjaro-deepin-17.1.12-stable-x86_64.iso of=/dev/sdX status=progress

4.7.1.1.1. X это буква раздела без номера!

4.7.2. windows

4.7.2.1. slacka/WoeUSB (link)

4.7.2.1.1. sudo woeusb --target-filesystem NTFS --device /media/artem/other/os/windows/ru_windows_10_enterprise_ltsc_2019_x64_dvd_78e7853a.iso /dev/sdd

4.8. Оптимизация изображений:

4.8.1. Сжатие изображений:

4.8.1.1. jpg

4.8.1.1.1. jpegoptim --strip-all --max=91 *.jpg

4.8.1.2. png

4.8.1.2.1. optipng -o=4 image.png

4.8.2. Изменение высоты изображений:

4.8.2.1. mogrify -geometry x1280 *.jpg && mogrify -geometry x1280 *.JPG

4.8.3. Повернуть изображения на 90 гр

4.8.3.1. mogrify -rotate 90 ./*

4.8.4. Изменение ширины изображений:

4.8.4.1. mogrify -geometry 700x *.jpg

4.9. Падение интернета после ждущего режима.

4.9.1. Sander, по выходу из сна - дай ему (link)

4.9.1.1. sudo systemctl restart NetworkManager.service

4.10. Запуск программ

4.10.1. Интерпритируемые программы

4.10.1.1. интерпретатор /путь/к/файлу/программы параметры

4.10.1.1.1. python hellowrld.py

4.10.1.1.2. java -jar program.jar

4.10.2. Пример файл xampp.desktop в /usr/share/applications

4.10.2.1. [Desktop Entry] Version=1.0 Name=XAMPP Comment=Менеджер управления XAMPP Exec=gksudo /opt/lampp/manager-linux-x64.run Icon=/opt/lampp/htdocs/dashboard/images/favicon.png Terminal=false Type=Application Categories=Network;Internet;

4.10.3. Создание ярлыка запуска

4.10.3.1. ASD

4.11. Переименование группы файлов

4.11.1. rename 's/А/Б/g' *

4.11.1.1. где А - любое количество каких-то символов

4.11.1.2. Б - любое кол-во каких-то символов на которые надо поменять

4.12. Зависшее графическое окружение

4.12.1. ctrl+alt+f1

4.12.1.1. sudo service lightdm restart

4.13. Отмонтирование каталога

4.13.1. sudo umount /path/to/catalog

4.14. alias Создание короткой команды "псевдоним" для длинной команды.

4.14.1. alias apt-get="sudo apt-get"

4.14.2. Чтобы работала после перезагрузки нужно ее прописать в конец файла:

4.14.2.1. sudo gedit ~/.bashrc

4.14.2.1.1. Обновить .bashrc

4.14.2.2. Мои alias

4.14.2.2.1. alias beget-start="sshfs [email protected]: ~/Beget -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,auto_cache,compression=no" alias beget-stop="fusermount -u ~/Beget" alias beget-ssh="ssh [email protected]" alias lampp="sudo /opt/lampp/lampp start" alias lampp-start="sudo /opt/lampp/lampp start" alias lampp-stop="sudo /opt/lampp/lampp stop" alias lampp-status="sudo /opt/lampp/lampp status" alias lampp-restart="sudo /opt/lampp/lampp restart"

4.15. Копирование

4.15.1. Например нужно скопировать ссылку на sublime в другое место чтобы он отображался в меню запуск по умолчанию

4.15.1.1. # Копируем ярлык cp /usr/share/applications/sublime_text.desktop ~/.local/share/applications/sublime_text.desktop      # Обновляем базу данных ярлыков sudo update-desktop-database

4.16. Смена пароля

4.16.1. sudo passwd <имя пользователя>

4.17. Редакторы кода

4.17.1. PhpStorm

4.17.1.1. Debuger (link)

4.18. Прилинковка хостинга к папке по SSH (link)

4.18.1. Соединение с папкой сервера по sshfs:

4.18.1.1. sudo sshfs -d -o allow_other -o reconnect -o ServerAliveInterval=15 [email protected]:/home/a51315/public_html /mnt/host_my -p 20022 -C

4.18.2. Отсоединение:

4.18.2.1. fusermount -u ~/beget

4.19. SSH connect

4.19.1. ssh [email protected]

4.20. Скачивание сайта

4.20.1. Зайти в дирректорию куда над скачать

4.20.1.1. wget -r

4.20.1.2. А лучше

4.20.1.2.1. wget -r -k -l 7 -p -E -nc -erobots=off --user-agent="Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/5З7.З6 (KHTML, like Gecko) Chrome/60.0.З112.11З Safari/5З7.36" www.site.kotory.scachat

4.20.1.2.2. wget -r -k -l 7 -p -E -nc http://site.com/

4.21. Работа с удаленным серверами через Sublime Text 3 и Git с автозагрузкой изменений!

4.21.1. Соединение должно быть по SSH: git remote set-url origin [email protected]:artemijeka/bitrix_local.git    Если нет ключа ( /home/a/artemkm9/.ssh/id_rsa    или    /home/fmf/.ssh/id_rsa ), то создать:    ssh-keygen -t rsa -b 4096 -C "[email protected]"    Добавляю его: eval `ssh-agent -s` && ssh-add ~/.ssh/id_rsa    Копирую содержимое из:    /home/a/artemkm9/.ssh/id_rsa.pub    или    /home/fmf/.ssh/id_rsa    Иду в: Build software better, together (для открытых проектов)    или    https://bitbucket.org/kuznecov_fmf/projects/admin/access-keys (для закрытых проектов)    Ввожу имя машины например: home__linux_manjaro или work__linux_manjaro    Потом вставляю код из /home/fmf/.ssh/id_rsa.pub    Сохраняю    Теперь git push должен работать без авторизации на локалке.    В sublime text 3 нужен плагин SFTP/FTP: В него вбиваю данные удаленного сервера. Через FileZilla качаю проект И при езменениях будет автоматом посылаться на удаленный сервер В терминале при этом можно делать гит коммиты, пуши, пулы и т.д.    (Это надо сделать для каждой рабочей машины. (Можно даже хостинговый сервер добавить в гит или bitbucket)) Например для удаленной работы с локального посМылая изменения на хостинг и регистрируя изменения в гит. (link)

4.22. Скачать фронтальную часть сайта

4.22.1. Как запустить Ubuntu Bash в Windows 10. (link)

4.22.2. cd ./path/to/new_app wget -m inf https://url

5. Полезные ссылки (link)

5.1. Транслит для URL (cyrillic -> latin) (link)

5.1.1. типа: %D0%A3%D1%81%D0%BB%D1%83%D0%B3%D0%B0%3A+%D0%A0%D0%B5%D0%BC%D0%BE%D0%BD%D1%82+%D0%B1%D1%8B%D1%82%D0%BE%D0%B2%D1%8B%D1%85+%D1%85%D0%BE%D0%BB%D0%BE%D0%B4%D0%B8%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA%D0%BE%D0%B2

5.2. Разные красивые узоры с помощью CSS градиентов. (link)

5.3. Разные красивые узоры с помощью SVG. (link)

5.4. Хороший сервис по работе с изображениями, анимациями и видео. (link)

5.5. Онлайн конвертер (link)

5.6. favicon

5.6.1. check&generate (link)

5.7. Быстрое создание статичного сайта

5.7.1. НАПРИМЕР САЙТ-ЗАГЛУШКА НА ДОМЕН Программа поможет быстро сделать статичный сайт, просто нарисовав его, без знаний верстки. Сайт получится сразу адаптивным. Его останется только скачать и разместить на нормальном домене. (link)

6. SEO

6.1. alt и title

6.1.1. Для атрибут alt «прилагательное + ключевая фраза».

6.1.1.1. Конечно, “прилагательное” может быть заменено на другую часть речи и вставлено за ключом. Но в любом случае, например, “двухсловник” будет разбавлен третьим словом. Даже если к ключу будет добавлена просто порядковый номер (ключ 1, ключ 2…), это будет лучше. чем просто повторяющийся из раза в раз ключ.

6.1.2. Для атрибута title рекомендовано расширенное описание «прилагательное + ключ + дополнение».

6.1.2.1. Оно должно быть длиннее. Можно использовать ( а некоторые специалисты считаю – нужно) слова “фото”, “иллюстрация”. Это как бы подсказка для робота…

6.2. Семантика

6.3. Очистка кэша ссылки в вконтакте. (link)

6.4. Open graph (link)

7. BackEnd

7.1. .htaccess

7.1.1. Сервер, сжатие,    ускорение.

7.1.1.1. .htaccess

7.1.1.1.1. ### agragregra/OptimizedHTML-5 ###    # Add correct content-type for fonts & SVG AddType application/font-woff2 .woff2 AddType image/svg+xml .svg    ExpiresActive On ExpiresDefault "access plus 5 seconds"    # Cache Images ExpiresByType image/x-icon "access plus 2592000 seconds" ExpiresByType image/jpeg "access plus 2592000 seconds" ExpiresByType image/png "access plus 2592000 seconds" ExpiresByType image/gif "access plus 2592000 seconds" ExpiresByType image/svg+xml "access plus 2592000 seconds"    # Cache Fonts ExpiresByType application/font-woff2 "access plus 2592000 seconds" ExpiresByType image/svg+xml "access plus 2592000 seconds"    # Cache other content types (CSS, JS, HTML, XML) ExpiresByType text/css "access plus 604800 seconds" ExpiresByType text/javascript "access plus 2592000 seconds" ExpiresByType application/javascript "access plus 2592000 seconds" ExpiresByType application/x-javascript "access plus 2592000 seconds" ExpiresByType text/html "access plus 600 seconds" ExpiresByType application/xhtml+xml "access plus 600 seconds"    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript application/font-woff2 image/svg+xml (link)

7.1.2. Редиректы

7.1.2.1. В .htaccess

7.1.2.1.1. http:// -> https://

7.1.2.1.2. Переадресация с директории в другую директорию.

7.1.2.1.3. old.site -> new.site

7.1.3. Правила (link)

7.1.4. Защищаем .htaccess файл (link)

7.1.5. Убираем конец адреса (переадрисация на обрезанную ссылку) (link)

7.1.6. Убрать окончание расширение файла в адресе сайта .htaccess (link)

7.1.7. 20+ правил .htaccess, которые должен знать каждый разработчик | Proofsite: ваш cайт должен продавать! (link)

7.1.8. Установка кодировки по умолчанию.

7.1.8.1. AddDefaultCharset UTF-8

7.1.9. Установка часового пояса по умолчанию.

7.1.9.1. php_value date.timezone "Europe/Samara"

7.2. PHP

7.2.1. Запись в файл

7.2.1.1. $emailsubscribers = './emailsubscribers.txt'; $fo = fopen($emailsubscribers, "a"); // a = add fwrite( $fo, ('new text, ') ); // new text,    fclose($fo);

7.2.2. Подбор окончания слова

7.2.2.1. <?php      $num = $input; // число $scriptProperties['item'] = $options; // наименование $scriptProperties['end_1'] = 'ов'; // например 45 товаров $scriptProperties['end_2'] = ''; // например 31 товар $scriptProperties['end_3'] = 'а'; // например // 2 товара      $stri = array( $scriptProperties['end_1'], $scriptProperties['end_2'], $scriptProperties['end_3'] ); $index = $num % 100; if ( $index >=11 && $index <= 14 ) $index = 0; else $index = ( $index %= 10 ) < 5 ? ( $index > 2 ? 2 : $index ): 0;      return $scriptProperties['item'] . $stri[$index]; (link)

7.2.3. Дебагинг/скрытая разработка

7.2.3.1. <pre style="display: none" class="var_dump">    <?      var_dump($_COOKIE);      if ($_COOKIE['PHPSESSID'] === '10b21e4b09d3f2e2bcd53b12a502d264' || $_COOKIE['PHPSESSID'] === 'b8695a2a1dac41eae30828679c1039ec') {          $APPLICATION->SetAdditionalCSS(SITE_TEMPLATE_PATH . "/css/test.css");      } else {          $APPLICATION->SetAdditionalCSS(SITE_TEMPLATE_PATH . "/css/ie.css");      }      ?>      </pre>

7.2.4. File

7.2.4.1. Включение файла PHP в строку при помощи буферизации. (link)

7.2.4.2. Получение имен файлов и каталогов в заданной дирректории. (link)

7.2.5. Преобразования

7.2.5.1. Числа

7.2.5.1.1. PHP преобразование числа к удобному формату (денежному). (link)

7.2.5.2. Строки

7.2.5.2.1. Преобразование строки описывающей цвет из RGB формата в HEX.    View decToHex.php (link)

7.2.5.2.2. Функция мультирасчленения строки в массив по любому набору вхождений подстрок. (link)

7.2.6. REGEX

7.2.6.1. Регулярное выражение для валидации номера телефона:

7.2.6.1.1. ^((8|7)[ ]?)?(?{3}?[ ]?)?[ ]{7,10}$    Ориентировано на российские мобильные + городские с кодом из 3 цифр (например, Москва).    Зеленый свет для: +79261234567 89261234567 79261234567 +7 926 123 45 67 8(926)123-45-67 123-45-67 9261234567 79261234567 (495)1234567 (495) 123 45 67 89261234567 8-926-123-45-67 8 927 1234 234 8 927 12 12 888 8 927 12 555 12 8 927 123 8 123

7.2.6.2. текст заменить

7.2.6.2.1. $res = preg_replace("/мл/", "ml", $content);

7.2.7. JSON

7.2.7.1. Преобразование в json объект.

7.2.7.1.1. json_encode($php_var);

7.2.7.2. Преобразование в php переменную

7.2.7.2.1. json_decode($json_string);

7.3. Mail

7.3.1. Repo: phpmailer_example (link)

7.3.2. mail script - отправка формы с сайта (link)

7.3.3. Тест отправки почты с формы с сайта. (link)