Есть у нас любимый клиент — дядя Саша, как он себя называет. И есть у нашего клиента 3 поселка (пока три). А также был у дяди Саши сайт http://old.tpom.ru, который практически ничего не продавал. Поэтому дядя Саша пришел к нам и получил новый сайт http://tpom.ru.

Хотите заглянуть «за кулисы» разработки этого проекта?

Начали мы с анализа рынка, конкурентов — это позволило нам сформировать новую концепцию сайта. Сначала мы сделали прототип будущего сайта, потом в дело включился дизайнер. После того, как макеты были утверждены дядей Сашей, мы приступили к верстке и установке сайта на MODX REVO.

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

Первый самый важный этап после установки дистрибутива CMS MODX REVO — установить необходимые компоненты, которые облегчат жизнь программисту и дяде Саше.

Что сразу поставили:
  • Ace
  • AdminTools
  • AjaxForm
  • BackupMODX
  • CKEditor
  • ClientConfig
  • FastUploadTV
  • filetranslit
  • FormIt
  • frontendManager
  • Gallery
  • Jevix
  • MetaX
  • MIGX
  • MinifyX
  • modDevTools
  • modMySettings
  • pdoTools
  • phpThumbOn
  • SEO Pro
  • SEO Tab
  • tagElementPlugin
  • TinyMCE Rich Text Editor
  • translit
  • UpgradeMODX
  • VersionX
Чтобы облегчить немного начальную настройку, можно поставить siteExtra на чистый движок, он установит часть компонентов и поможет сделать первоначальные настройки.

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

ClientConfig — незаменимый компонент для всех наших проектов. Так как я «помешана» на удобстве админки для клиентов, то ClientConfig помогает вывести необходимые данные (телефон, адрес, e-mail и т.п.) в одно место, чтобы например при изменении телефона клиентом, он поменялся сразу на всем сайте. В шаблон данные вставляются, очень удобно.
ClientConfig

BackupMODX — позволяет нам делать бэкапы без доступа на хостинг. Опять же, незаменимая вещь в хозяйстве :)

AdminTools — открыли для себя недавно, дополнение добавляет функционал избранных элементов в дерево ресурсов и другие возможности.

filetranslit — без него никуда, есть еще клиенты, которые умудряются заливать файлы с русскими названиями, в итоге потом сложности при переносе. Так что «защиту от дурака» мы тоже обязательно ставим.

FastUploadTV — позволяет легко и быстро загружать картинки. Как вывести это поле на первую вкладку, чтобы оно было под рукой и на виду, расскажу позднее, когда опишу настройку админки.
FastUploadTV
требует некоторую настройку TV-поля
FastUploadTV
Тип ввода: простая загрузка файла
Путь сохранения: assets/images/{d}-{m}-{y}/ (я обычно так ставлю)
Префикс имени файла: {rand}-
Показывать значение TV: нет
Показать изображение: да

Gallery — с его помощью организована фотогалерея tpom.ru/gallery/gallery-poselok-marino.html

MinifyX — минимизирует код, снижает нагрузку на сервер.
В чанке шапки идет вызов
[[MinifyX?
 	&minifyJs=`1`
        &minifyCss=`1`
        ®isterJs=`default`
        ®isterCss=`default`
  &jsSources=`
     /assets/tpom/js/vendor/Bxslider/jquery.bxslider.min.js,
     /assets/tpom/js/vendor/colorbox/jquery.colorbox-min.js`
  &cssSources=`
     /assets/tpom/css/fonts.css,
     /assets/tpom/css/css3.css,
     /assets/tpom/css/main.css`
]]

[[+MinifyX.javascript]]

[[+MinifyX.css]]


MetaX — работает с тэгами, очень удобный компонент.
Вызывается просто
[[MetaX?]]

но в чанке metax-xhtml4 я все же вношу некоторые дополнения от себя:
<!-- base xhtml4 -->
	<base href="[[++site_url]]" />
	<title>[[*pagetitle]] | [[++site_name]]</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />

    <meta name="keywords" content="[[$AllKeywords:notempty=`[[$AllKeywords:strip]], `]][[*tags:strip]]" />
	[[*description:notempty=`<meta name="description" content="[[*description:strip]]" />`]]
	[[*longtitle:notempty=`<meta name="abstract" content="[[*longtitle:replace=`<br />== `:replace=`
== `:striptags]]" />`]]
	<meta name="robots" content="[[+metax.robots]]" />
	<link rel="canonical" href="[[+metax.canonical]]" />
	<meta http-equiv="content-language" content="[[++cultureKey:ifempty=`en`]]" />
	<meta http-equiv="Content-Type" content="[[*contentType:lcase]]; charset=[[++modx_charset]]" />
	<meta http-equiv="pragma" content="[[+metax.cache]]" />
	<meta http-equiv="cache-control" content="[[+metax.cache]]" />
	<meta http-equiv="Content-Style-Type" content="text/css" />
	<meta http-equiv="Content-Script-Type" content="text/javascript" />
<!-- meta -->
	
	<meta http-equiv="last-modified" content="[[*editedon:strtotime:date=`%a, %d %b %Y %H:%M:%S %Z`]]" />
	<meta name="author" content="[[+metax.createdby]]" />
	<meta name="copyright" content="Copyright © [[+metax.copyyears]] by [[++site_name]]" />

	<!--[if IE]><meta http-equiv="imagetoolbar" content="no" /><![endif]-->
<!-- Dublin Core -->
	<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
	<meta name="DC.contributor" content="[[++site_name]]" />
	<meta name="DC.creator" content="[[+metax.editedby]]" />
	<meta name="DC.date" content="[[*editedon:strtotime:date=`%Y-%m-%d`]]" />
	<meta name="DC.format" content="[[*contentType:lcase]]" />
	<meta name="DC.identifier" content="[[*pagetitle]] - [[*id]]" />
	<meta name="DC.language" content="[[++cultureKey:ifempty=`en`]]" />
	<meta name="DC.publisher" content="[[++site_name]]" />
	<meta name="DC.rights" content="Copyright © [[+metax.copyyears]] by [[++site_name]]" />
	<meta name="DC.rightsHolder" content="[[++site_name]]" />
	<meta name="DC.title" content="[[*pagetitle]]" />
<!-- icons/rss/css -->
	[[+metax.favicon:notempty=`<link rel="shortcut icon" type="image/x-icon" href="[[+metax.favicon]]" />`]]
	[[+metax.mobile:notempty=`<link rel="apple-touch-icon" href="[[+metax.mobile]]" />`]]
[[+metax.css]]
[[+metax.rss]]
<!-- end MetaX output -->


На этом я пока остановлюсь, сразу обо всем не расскажешь :)
Если «закулисье» проекта интересно, то обязательно будет продолжение, где я поделюсь всеми «фишками» этого проекта изнутри.
Дайте обратную связь, интересно ли? Нужно ли это?

А если понравилось, то поддержите меня, лайкнув на статью :) это придаст мне решимости писать дальше :)