χάμστερ :: :: :: :: :: ::
Feci, quod potui, faciant meliora potentes
Первая статья из серии советов.
Первый вопрос, с которым я столкнулся - куда расположить стили, картинки и скрипты верстки. И если после изучения системы со стилями стало все понятно, то с картинками и скриптами вопрос остался. Вообще изначально я размещал файлы, как привык, тоесть в корне сайта создавал свои папки со стилями картинками и скриптами. Но локально было все замечательно, а вот когда выкладывал на хостинг - при необходимости заменить или поправить файл - нужно было лезть через ftp (или другим доступным способом), что было несколько неудобно. После некоторого количества экспериментов я пришел к следующей схеме:
Стили
Для стилей нужно использовать предназначенный для этого функционал системы.
Из плюсов - система научилась обрабатывать и кэшировать стили, тоесть никакой разницы использовать обычный файл или функционал системы - сейчас нет. Более того, когда в шаблоне используется несколько стилей - они автоматом собираются в один.
Второй плюс - это использование логики smarty в таблице стилей. В принципе, когда есть готовая верстка - это не актуально, но когда сам верстаешь - это можно использовать, например определить базовые пути к файлам, цвета или размеры элементов вначале стиля в переменных, а затем использовать внутри стиля. И для изменения цвета или размера не нужно будет просматривать весь стиль.
У меня в практике был случай, когда часть меню формировалась через стили (тоесть в стилях для каждого пункта меню была прописана своя картинка и цвет). Для добавления нового пункта нужно было лезть в стили и добавлять новый, что было не удобно с точки зрения пользователя. Удобство системы состоит в том, что даже в стилях можно вызывать модули смарти. Тоесть я внутри стиля сделал вызов модуля менеджера меню, в котором формировалась часть css из данных пунктов меню. Но тут нужно помнить, что в стилях для использования тегов смарти используются двойные квадратные скобки [ [smarty_tag ... ] ], тоесть даже в шаблоне модуля меню нужно использовать именно квадратные скобки, а не фигурные.
Из минусов - первый - если есть готовая верстка, и в стилях используются пути к картинкам или другим ресурсам - их нужно менять с учетом того, что конецный стиль будет находиться в папке /tmp/cache. Например, в верстке, в стиле для бэкграунда задано background: #000 url(../images/header.gif) no-repeat; То когда мы запустим сайт, данное правило картинку не найдет. Тоесть нужно будет прописать абсолютные пути к картинкам.
Второй минус - нужно следить за кэшем. Тоесть если используется динамически формируемый стиль, как в моем примере, то после изменения в структуре страниц (добавление новой страницы или удалении старой, а так-же смене картинки или цвета, если они задаются в свойствах страницы) - кэш нужно чистить.
Остальные ресурсы
Для остальных ресурсов шаблона я использую папку /uploads/template, которую создаю через менеджер файлов. Внутри папки создаю несколько подпапок в зависимости от типов ресурсов (соответственно images, fonts, js и другие, если нужно). В эти папки я помещаю соответствующие ресурсы. Чем это удобно: первое - если нужно заменить какой-либо скрипт или картинку - это можно сделать средствами системы. Второе - отдельная папка для ресурсов шаблона - тоесть можно быстро определить, где нужно править, при необходимости. Третье - в случае смены дизайна - можно создать еще одну папку с ресурсами, новый набор шаблонов, а затем - быстро переключить, и при необходимости удалить старую папку. Четвертое - не нужно включать доступ к корню системы в менеджере файлов. Из минусов - доступ к данным файлам пользователями системы.
Картинки
Следует разделить несколько видов картинок.
Первый вид - картинки шаблона, как я писал выше, удобнее всего складывать в папку /uploads/template/images.
Второй вид - картинки, которые прикрепляются к странице при помощи тега content_image. Для таких картинок лучше всего создавать отдельные папки - во первых это проще найти, во вторых - удобно группировать. Например, у страницы есть 2 вида картинок - превью и, например, тип статьи. Соответственно нужно создать 2 папки - одна будет содержать картинки превью, вторая - картинки типов статьи. Все эти папки желательно создавать в папке /uploads/images - в этом случае к данным папкам вместе с менеджером файлов будет доступ из менеджера картинок.
Третий вид - картинки, которые создаются модулями (например, своими). Для них лучше всего использовать папку /uploads/[modulename]/. Тоесть этим отделяем их от остальных картинок. Исключением могут служить модули галерей (например, Album). Для них лучше всего создавать одну корневую папку внутри папки /uploads/images, затем для каждой галереи создавать свою папку.
Четвертый вид - картинки для контента (обычных страниц). Тут единственный совет - группировать в папках, при необходимости. Ведь при редактировании страницы - неудобно выбирать одну картинку из десятка а то и сотни.
Скрипты и шрифты
Ну с ними проще всего - просто размещаем в папке /uploads/template/js и /uploads/template/fonts соответственно. При необходимости можем заменить, обновить через систему, не заходя по ftp или другие доступные средства.
Другие файлы для скачивания
Здесь так-же совет только один - систематизировать. В папке /uploads/ создать папку files, например, а внутри по папкам соответственно распологать файлы.
Краткое заключение
Первое - для стилей использовать стандартный функционал.
Второе - ресурсы шаблона размещать в папке /uploads/template. В принципе - можно внутри папки templates создать несколько папок для разных шаблонов.
Третье - стараться систематизировать файлы.
Четвертое - данная структура позволит создавать и редактировать сайт не используя дополнительных подключений к серверу, тоесть прямо из админки.
Последнее замечание
Для того, чтобы не было проблем с отображением названия файлов с названиями содержащими буквы и символы, отличные от латинского (английского) - нужно помнить, что система работает с кодировкой utf-8. Соответственно хостинг или платформа, на которой располагается сайт, были настроены для использования данной кодировки.
Новое на сайте:
- Node.js
- PHP
- Python
- Apache и другие
- Git
- Postgres и локаль
- mysqldump с удаленного сервера
- unity ios build
- Включение и просмотр логов запросов mysql
- Could not find a valid tablespace file for 'database/#sql-*'
- JavaScript, CustomEvent, dispatchevent и jquery.on()
- rabbitmq побился индекс, когда закончилось место