Ссылки

Помимо простой логики, лежащей в основе проекта, я воспользовался некоторыми идеями, которые были реализованы другими людьми. При их реализации в Симплуторе я в итоге написал соответствующий код полностью с нуля. Но не могу не упомянуть добрым словом:

Код кнопки "Вверх"

  1. Я нашёл красивый код плавной анимации кнопки, но мне не понравилась сложная инструкция по его установке (html, стиль, яваскрипт в два места, картинка).
  2. На Хабре я наткнулся на короткий способ отличить интернет эксплореры
  3. Там же на Хабре (конкретную ссылку не могу найти их было несколько таких описаний) нашёлся чрезвычайно красивый и простой css код геометрических фигур
  4. ...и правильный пинок яваскриптовым программистам "почему не так, как задумано, происходит перестройка дерева DOM и почему document.write - зло"
Эти решения пригодились и для последующих частей проекта.

Галерея картинок

  1. На сайте cafewebmaster.com я нашёл скрипт обхода каталогов и реализацию генерации превьюшек на лету с параллельной записью их в каталог. Код его мне настолько понравился, что его центральная часть сохранилась до сих пор, хотя и была переработана. Ссылку на оригинал этого кода дать, увы, невозможно из-за ошибок на том сайте
  2. Как и в кнопке "вверх", я свёл рисование всех интерфейсных элементов галереи в браусере в один яваскриптовый код и избавился от всех внешних файлов (картинок для кнопок, стилевых файлов)
  3. Я полностью написал заново работу галереи в мобильных браусерах и единообразно описал обработку событий мыши и кнопок в различных браусерах. Все встреченные мной куски кода от разных людей, которые послужили основной для этих решений, перечислить невозможно, и ни одно не было применено "как есть", все переработаны. Код в результате стал воистину монструозен, и потому был тщательно поделен на отдельный .gallery.php размером 9 килобайт и самостоятельную чисто яваскриптовую галерею, навешиваемую поверх произвольного html кода 24 килобайта размером

Кнопки социальных сетей

Продравшись через бездны реализаций кнопок "расшарить", я уяснил, что подавляющее их большинство имеет целью привязать сайт к своему сервису и непременно уволочь побольше информации о клиенте к себе в какую-то свою базу данных и бигдату.

В результате постановка всех таких кнопок на сайт приводит к загрузке мегабайтных скриптов jQuery, шрифтов и внешних картинок. Всё это увеличивает время загрузки каждой страницы сайта и к тому, что при малейшем изменении на внешних сервисах сайт для посетителя начинает невменяемо тормозить.

Мне это надоело, и для разнообразия я сделал строго противоположное общеупотребительным решение - единственный яваскрипт без обращения ко внешним ресурсам, отрисовывающий графические элементы в SVG формате, а интерфейс расшаринга берущий непосредственно с той соцсети, в которую создаётся пост.

При этом, конечно, становится невозможно красиво писать о том, сколько уже народу тебя так расшарило или лайкнуло (ибо чтобы собрать информацию об этих крохотных циферках на кнопочках, надо как раз и обращаться на внешний ресурс), но если вы как вебмастер сайта хотите более тормозной и общепринятой реализации кнопок - найдите более традиционные и поставьте вместо.

Код изменения стиля ссылки на текущую страницу

В логике многих движков занимает достаточно много места содержательный код, который показывает активный пункт меню, активную ссылку страницы в меню, убирает ссылку на текущую страницу. В целом это верный интерфейсный паттерн, однако в современном яваскрипте и DOM структуре страницы достаточно средств чтобы сделать это "на стороне клиента" и не напрягать сервер и мозг.

Поиск по сайту RiSearch

Содержательную часть кода я оставил без изменений, однако из-за глобального переезда всего мира на Unicode выяснилось, что без серьёзного переписывания кода нормальная работа поиска получается только в однобайтовых кодировках, поэтому сейчас на в целом utf-8 сайте внутренняя логика и файлы индексов поиска генерятся в windows-1251 кодировке. Но результат и формы работают в utf-8.

Механизм собственного темплейта тоже полностью убран из RiSearch, а некоторые параметры конфигурации перемещены в общий конфиг CMS.

Простейший визуальный редактор

Отсюда

Код облака тэгов