ExpressionEngine 2 — замечательная система управления контентом и, возможно, самая удобная для разработчиков CMS, используемая многими известными именами, такими как A List Apart, Andy Clarke и Veerle Pieters. По иронии судьбы, однако, его конфигурация по умолчанию плохо подходит для профессионального рабочего процесса веб-разработки, который обычно включает несколько сайтов, серверов и разработчиков.
Из этого туториала вы узнаете, как настроить ExpressionEngine 2, чтобы вы могли взяться за дело с надежной, но гибкой отправной точкой, которую можно легко развернуть в нескольких средах за считанные минуты.
обзор
Я не программист. Тем не менее, мантра программирования не повторяется , или принцип СУХОЙ для тех любителей аббревиатур среди нас действительно начал резонировать во мне, поскольку я все больше вовлекаюсь как в веб-разработку, так и в собственный бизнес. На самом деле, СУХОЙ это хороший совет для жизни в целом. Повторение себя стоит больше времени заранее и, возможно, намного больше в будущем, если вам придется вернуться и сделать одно и то же изменение в нескольких местах.
Кроме того, это мешает личностному росту, потому что, если вы делаете то, что уже сделали, вы не узнаете что-то новое. Что лучше, так это определить те места, где вы повторяете себя и придумываете систему для стандартизации этой задачи или фрагмента данных.
Маленькая история
Когда я впервые начал работать с ExpressionEngine полтора года назад, это был одноразовый проект, и я был начинающим дизайнером. Само собой разумеется, СУХОЙ менталитет был самым дальним из моих мыслей. Я радостно напевал, следил за настройками в соответствии с ситуацией, ничего не документировал и получал удовольствие от пользовательских полей и групп шаблонов, которые делают EE мечтой дизайнера. Это было похоже на мое первое свидание с программным обеспечением. В конце концов, мне настолько понравился EE, что я решил стать эксклюзивным и «жениться» на нем как на своей CMS, которую я выбрал для всех будущих проектов.
Однако после третьего или четвертого сайта я начал замечать недостатки в наших отношениях (что может случиться, когда вы действительно с чем-то познакомитесь) и разочаровался в выполнении рутинных, повторяющихся задач, связанных с развертыванием и управлением EE. Это было особенно очевидно в некоторых текущих проектах, которые требовали двух или трехкратных еженедельных обновлений от разработки до подготовки к работающим серверам. Дело дошло до того, что я тратил почти столько же времени на управление развертыванием, сколько на самом деле программировал.
Решение
Не желая терять деньги и раба от скучной тяжелой работы, я старался навести порядок.
Далее следует плод моего и чужого труда, руководство по применению принципа DRY для разработки и развертывания сайтов с помощью EE.
Он познакомит вас с тем, как я настроил дряблую бессмысленную конфигурацию по умолчанию ExpressionEngine 2, и превратил ее в компактную и эффективную рабочую лошадку, которая практически не повторяет работу с EE. В частности, эти модификации будут:
- Укажите начальную точку для всех часто используемых установленных надстроек и включенных настроек, чтобы вы не запускали мастер установки и не начинали каждый раз с нуля.
- Интегрируйте EE с выбранной вами системой контроля версий для быстрого развертывания на нескольких веб-серверах или рабочих станциях разработчиков и простого управления кодом. Мой опыт работы с SVN, но все принципы применимы и к Git.
- Централизуйте все настройки и настройки, чтобы упростить миграцию с одного сервера на другой, поэтому запуск и отправка обновлений — легкая задача, а не головная боль.
Это было довольно большое усилие, и я не мог сделать это один. Большое спасибо следующим людям, которые помогли мне, знали ли они это или нет:
- Тони Честера из OnWired и Кейси Рейд из Clearfire Studios , за то, что я направил меня в правильном направлении.
- Джейми Питток (Jamie Pittock) из Erskine Design и его потрясающий доклад на EECI 2010 , за то, что я разобрался со многими из этих вещей в EE 1 и вдохновил меня на продолжение работы в EE 2.
- Джеффу Фриману из Futurity Web Design, который помог мне с небольшим количеством PHP сделать это (как я уже сказал, я не программист).
Шаг 1: Загрузка и установка
Ради вашего здравого смысла, получите свежую копию последней сборки EE 2, прежде чем делать что-либо из этого. Загрузите и установите как обычно, желательно на локальном сервере, так как вы будете вносить множество изменений в файлы. Оставьте шаблоны Agile Records, когда вам будет предложено.
Возьмите файлы примеров, которые включены в этот учебник. Вам пока не нужно ничего с ними делать, но держите их под рукой.
Шаг 2: выливание супа Конфиг
Если вам когда-либо приходилось переносить ExpressionEngine с одного сервера на другой, вы знаете, что эта задача не из легких; на самом деле, это полный кошмар, если вы не готовы. Во многом это связано с тем, что ExpressionEngine хранит переменные конфигурации и пути к серверам на протяжении всего процесса создания, до такой степени, что их сложно отследить и настроить при перемещении серверов.
Кенн Уилсон из Corvid Works резюмирует это лучше, чем мой:
«Это то, что делает Expression Engine настолько непереносимым — для перехода с одного сервера на другой, скажем, с разработки на производство, требуется обновить этот URL-адрес и информацию о пути буквально в дюжине мест. Это неуклюже, отнимает много времени и подвержено ошибкам ».
Он прав К счастью, есть другой способ. Вместо того, чтобы редактировать все эти переменные в дюжине мест на панели управления и, возможно, забыть о некоторых, вы можете объединить их в одном месте — файлы конфигурации. Это верно, все эти поля разбросаны по десяткам страниц в вашей карте CP в пару файлов PHP. По умолчанию ExpressionEngine хранит информацию о конфигурации, о которой вам нужно будет беспокоиться, в двух файлах. Эти:
system/expressionengine/config/config.php
-
system/expressionengine/config/database.php
Угробление database.php
Как вы можете себе представить, database.php
хранит информацию о соединении с базой данных MySQL. Я полагаю, что EllisLab придерживается позиции, что легче найти информацию о БД, если она находится в собственном метко названном файле, но я собираюсь доказать обратное. Это СУХОЙ, черт возьми! Я предпочел бы открыть один файл и редактировать мои настройки из одного места, а не из двух, поэтому я полностью покончил с database.php
данных.php. Ну, не совсем, но я взял все настройки базы данных и перевел их в config.php
с небольшим количеством PHP.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
<?php
if ( ! defined(‘EXT’)){
exit(‘Invalid file request’);
}
/* THIS FILE WILL NEED PERMISSIONS SET TO 400 OR SIMILAR SO EE DOESN’T OVERWRITE IT.
require ‘config.php’;
break;
}
?>
|
Переименуйте существующий файл database.php
во что-то вроде old-database.php
и переместите его на рабочий стол, так как позже вам понадобятся настройки подключения. Замените его на database.php
включенный в этот учебник, и установите разрешения равными 400, как указано.
Поздравляю. Вам никогда не придется беспокоиться о database.php
снова.
Консолидация config.php
Теперь этот database.php
говорит ExpressionEngine, что нужно искать информацию о соединении с базой данных в config.php
нам нужно на самом деле поместить ее туда, но есть проблема. Когда EE перемещается с одного сервера на другой, параметры подключения к базе данных необходимо изменить, чтобы отразить новую среду сервера. Если мы хотим разработать и внедрить EE с системой контроля версий (и, поверьте мне, мы это делаем), то каждый раз, когда мы развертываем рабочую копию на новый сервер, нам нужно будет загружать копию файла config.php
, редактировать настройки базы данных, чтобы они были правильными для этого сервера, передайте его обратно на сервер по FTP и убедитесь, что наш контроль версий проигнорировал его при выполнении фиксации или обновления. В лучшем случае у нас будет отдельный файл конфигурации без контроля версий для каждого дополнительного сервера, на котором находится сайт. Для меня (и я шоу одного человека) это:
- локальный сервер iMac
- Локальный сервер Macbook Pro
- промежуточный сервер
- живой сервер
Добавьте еще пару разработчиков, если вы работаете в агентстве, и вы смотрите на множество этих пижонов, бегающих вокруг. Так что же происходит, когда вам нужно изменить другую переменную конфигурации, например, номер лицензии? Вы отправляете по электронной почте себе и другим разработчикам копию этого файла и загружаете его на все серверы один за другим? СУХОЙ, друзья мои, СУХОЙ. Единственный логический ответ — это единственный файл config.php
управлением версиями, который может работать со всеми серверными средами.
Чепуха, вы могли бы сказать, но благодаря некоторому умному PHP это действительно возможно. Как видно из приведенного ниже примера, синтаксис регистра в PHP ищет IP-адрес и обслуживает соответствующие настройки базы данных на основе этого IP-адреса. Теперь единственное, что вам нужно знать и изменять при развертывании на новом сервере, — это IP-адрес и информация о соединении с базой данных, которые должны быть вам легко доступны.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
/* Environmental Variables */
switch ( $_SERVER[‘SERVER_ADDR’] ) {
// local
case ‘127.0.0.1’ :
$db[‘expressionengine’][‘hostname’] = «localhost»;
$db[‘expressionengine’][‘username’] = «root»;
$db[‘expressionengine’][‘password’] = «password»;
$db[‘expressionengine’][‘database’] = «local-db»;
break;
// staging
case ‘72.10.54.22’ :
$db[‘expressionengine’][‘hostname’] = «mysql.exampleserver.com»;
$db[‘expressionengine’][‘username’] = «admin»;
$db[‘expressionengine’][‘password’] = «password»;
$db[‘expressionengine’][‘database’] = «staging-db»;
break;
// live
case ‘82.335.65.67’ :
$db[‘expressionengine’][‘hostname’] = «mysql.exampleserver.com»;
$db[‘expressionengine’][‘username’] = «admin»;
$db[‘expressionengine’][‘password’] = «password»;
$db[‘expressionengine’][‘database’] = «live-db»;
break;
}
|
На этом этапе я хочу провести различие между тем, что я называю переменными среды, и универсальными переменными . Переменные среды различны в зависимости от среды сервера. Универсальные переменные одинаковы независимо от того, на каком сервере находится сайт, поэтому они выходят за пределы синтаксиса IP переключения / регистра. Это такие вещи, как пути к серверу и URL-адреса к папке тем, папке с шаблоном, CAPTCHA, номер лицензии, в основном все, кроме вышеупомянутой информации базы данных и IP-адреса (все они прокомментированы во включенном файле для справки).
Вы слышали, как я говорил, что пути к серверам и URL-адреса остаются неизменными независимо от того, на каком сервере вы находитесь? Да вы сделали. Пока структура папок вашего сайта остается одинаковой в каждом случае (и если вы используете контроль версий, это очевидно будет), пользовательский config.php
включенный в эти руководства, использует переменные PHP для определения пути и URL-адреса корневого сервера и их заполнения. для вас. Почему EE не делает этого с самого начала, сбивает с толку меня, но я отвлекся. Больше не нужно забывать менять путь к папке с темами при переносе серверов и тратить час на то, чтобы выяснить, почему вместо CP отображается пустой экран. Кто-нибудь еще взволнован?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
/* Universal Variables */
$config[‘app_version’] = «211»;
$config[‘license_number’] = «0000-0000-0000-0000»;
$config[‘debug’] = «1»;
$config[‘install_lock’] = «»;
$config[‘system_folder’] = «admin»;
$config[‘doc_url’] = «http://expressionengine.com/user_guide/»;
$config[‘is_system_on’] = «y»;
$config[‘cookie_prefix’] = «»;
$config[‘site_name’] = «Flourish Interactive Codebase»;
$config[‘allow_extensions’] = «y»;
/* General
——————————————————————-*/
$config[‘site_index’] = «»;
$config[‘site_url’] = «http://».$_SERVER[‘HTTP_HOST’];
$config[‘server_path’] = $_SERVER[‘DOCUMENT_ROOT’];
$config[‘cp_url’] = $config[‘site_url’].»/».$config[‘system_folder’];
/* Universal database connection settings
——————————————————————-*/
$active_group = ‘expressionengine’;
$active_record = TRUE;
$db[‘expressionengine’][‘dbdriver’] = «mysql»;
$db[‘expressionengine’][‘dbprefix’] = «exp_»;
$db[‘expressionengine’][‘pconnect’] = FALSE;
$db[‘expressionengine’][‘swap_pre’] = «exp_»;
$db[‘expressionengine’][‘db_debug’] = FALSE;
$db[‘expressionengine’][‘cache_on’] = FALSE;
$db[‘expressionengine’][‘autoinit’] = FALSE;
$db[‘expressionengine’][‘char_set’] = «utf8»;
$db[‘expressionengine’][‘dbcollat’] = «utf8_general_ci»;
$db[‘expressionengine’][‘cachedir’] = $config[‘server_path’].$config[‘system_folder’].»/expressionengine/cache/db_cache/»;
/* Member directory paths and urls
——————————————————————-*/
$config[‘avatar_url’] = $config[‘site_url’].»/uploads/system/avatars/»;
$config[‘avatar_path’] = $config[‘server_path’].»/uploads/system/avatars/»;
$config[‘photo_url’] = $config[‘site_url’].»/uploads/system/member_photos/»;
$config[‘photo_path’] = $config[‘server_path’].»/uploads/system/member_photos/»;
$config[‘sig_img_url’] = $config[‘site_url’].»/uploads/system/signature_attachments/»;
$config[‘sig_img_path’] = $config[‘server_path’].»/uploads/system/signature_attachments/»;
$config[‘prv_msg_upload_path’] = $config[‘server_path’].»/uploads/system/pm_attachments/»;
/* Misc directory paths and urls
——————————————————————-*/
$config[‘theme_folder_url’] = $config[‘site_url’].»/themes/»;
$config[‘theme_folder_path’] = $config[‘server_path’].»/themes/»;
/* Templates Preferences
——————————————————————-*/
$config[‘save_tmpl_files’] = «y»;
$config[‘tmpl_file_basepath’] = $config[‘server_path’].»/templates/»;
$config[‘site_404’] = «404/index»;
$config[‘strict_urls’] = «n»;
|
Чтобы установить пользовательский файл config.php
:
- Переименуйте существующий файл
config.php
, расположенный вsystem/expressionengine/config/config.php
, во что-то вродеold-config.php
и переместите его на рабочий стол. - Возьмите
config.php
включенный в это руководство, и поместите его вsystem/expressionengine/config
. Установите разрешения на 400. - Откройте новый
config.php
в редакторе кода вместе сold-database.php
иold-config.php
- Скопируйте и вставьте настройки из старых файлов в новый. Файл был закомментирован, так что вы знаете, что и куда поместить.
Помните, что универсальная переменная может стать переменной среды, если вам это нужно. Допустим, вы хотите автоматически изменить имя своего сайта в зависимости от того, на каком сервере он находится, так что вы можете сразу увидеть, смотрите ли вы локальную, dev или живую версию своего сайта. Просто удалите переменную из области «универсальных переменных» и скопируйте ее в каждый случай IP, присваивая ей любое значение, которое вы хотите.
Шаг 3: Уборка дома
Давайте смотреть правде в глаза; Стандартная установка ExpressionEngine включает в себя множество файлов, которые вам не нужны, особенно если вы профессиональный разработчик, который не ковыряется в первый раз. К ним относятся файлы тем для примера сайта Agile Records, смайлики, вики-темы и многое другое. Зачем толстеть свой сайт без необходимости? Положите EE на диету и удалите все эти вещи, вы всегда можете взять свежую копию и добавить ее обратно в маловероятном случае, если она понадобится вам для вики, форума или другого сайта сообщества. Удалите только то, что имеет для вас смысл, но я сделал около десятка сайтов EE и никогда не использовал ни одного из них.
-
/themes/wiki_themes
-
/themes/site_themes/agile_records
-
/themes/profile_themes/agile_records
-
/images/smileys
-
/images/avatars
Шаг 4. Создайте стандартную структуру папок верхнего уровня и файл .htaccess
Подобно многим задачам в веб-разработке, нет единственно правильного способа решить эту проблему, но важно то, что вы выбираете путь и придерживаетесь его. Некоторым людям нравится помещать свои статические файлы ресурсов (изображения, css, js, swf и т. Д.) В папку /themes/site_themes/examplesite
. Я предпочитаю размещать каждую папку ресурсов на верхнем уровне, потому что я ленивый и не люблю нажимать на три уровня подпапок, чтобы получить доступ к этим файлам во время разработки, плюс мне нравятся красивые короткие URL-адреса в моих HTML и CSS. Теперь, когда я привык к стандартной структуре, я не создаю дополнительные файлы или папки верхнего уровня без крайней необходимости (вы поймете почему через минуту). Вот как выглядит моя структура верхнего уровня.
-
.htaccess
— объясню подробнее через минуту -
system
— переименуйте это пожалуйста -
css
-
favicon.ico
-
fw
— это сокращение от «framework», например мои фоновые изображения CSS -
images
—images
не управляемые CMS -
index.php
-
js
-
robots.txt
-
templates
-
themes
— CP и темы типа поля -
uploads
— куда идут все документы и изображения, управляемые CMS
Теперь я дошел до разговора о .htaccess
. Это загадка для многих разработчиков, и, честно говоря, для меня тоже, но я знаю достаточно, чтобы использовать его для удаления этого неприглядного index.php
из других симпатичных URL-адресов EE. Я использую вариант метода exclude из ExpressionEngine Wiki . Это никоим образом не гарантирует работу на вашем веб-хосте, но для меня это работает на MAMP Pro, HostGator и MediaTemple, как (gs), так и (dv). Применяются обычные предостережения, например, mod_rewrite
должен быть включен в http.conf Apache и т. Д. Если вы используете этот метод удаления index.php
и хотите добавить новый файл или папку верхнего уровня на свой сайт (и я имею в виду «настоящий «Файл или папка, а не запись EE, шаблон или группа шаблонов), вам нужно добавить исключение в .htaccess
иначе файл / папка будут недоступны.
RewriteEngine On RewriteCond $ 1! ^ (Admin | css | fw | images | js | templates | themes | uploads | favicon \ .ico | robots \ .txt | index \ .php) [NC] RewriteRule ^ (. *) $ Index.php? / $ 1 [L] AddHandler php5-скрипт .php
Чтобы установить мой собственный .htaccess
, temp.htaccess
включенный файл с именем temp.htaccess
в папку верхнего уровня. Удалите «временную» часть имени файла (все до точки). Ваша операционная система может предупредить вас, что переименование файла разрушит юниверс. Игнорируйте это и нажмите ОК. Файл может исчезнуть, и это нормально, потому что .htaccess
— это скрытый файл. Теперь, если вы хотите отредактировать его, вам нужно, чтобы скрытые файлы были видны в настройках вашей ОС.
Шаг 5. Установите надстройки по умолчанию и настройте их
После разработки нескольких сайтов EE появились дополнения, которые я либо не хочу, либо не могу жить. Это лучшее, что может предложить сообщество разработчиков EE, и они имеют честь быть установленными в моей кодовой базе, так что каждый новый сайт получает их с самого начала. Они есть (и все они бесплатны):
- Freeform от Solspace
- Dive Bar от Pixel & Tonic
- ED Image Resizer от Erskine Design
- Низкий Seg2Cat от Lodewijk Schutte (Низкий)
- Accessible CAPTCHA от Greg Salt (Фиолетовый клык)
- Ограничитель персонажа от EllisLab
Не просто установите их, настройте их. Например, я установил все свои шаблоны уведомлений по электронной почте для Freeform, создал дополнительные настраиваемые поля формы на основе того, что я обычно использую для стандартной формы контакта, и у меня есть шаблон с именем contact.html
котором есть код формы интерфейса пользователя. , включая проверку JavaScript и сообщение об успехе. Даже если мне нужно добавить поле или два или переместить этот код формы в другой шаблон, это вопрос настройки, а не создания с нуля каждый раз. DRY. За исключением CSS-стилей, эта форма готова к выходу из коробки.
Будьте в поиске другой статьи, как только я расскажу об этом и о нескольких коммерческих дополнениях для EE2 более подробно.
Шаг 6: Настройте группу пользователей вашего клиента
Предоставление неограниченного доступа к моему клиенту страшно и для них, и для меня.
Это одна из тех вещей, которые вы, вероятно, забудете сделать, пока не закончите работу с сайтом, но это не обязательно должно быть, если он находится в вашей кодовой базе. Учетная запись администратора EE по умолчанию принадлежит к группе участников Super Admins, которая обязательно имеет доступ ко всему. Предоставить неограниченный доступ к моему клиенту страшно и для них, и для меня, поэтому я создаю вторую группу участников под названием Admins. Я обычно жду, пока они не выберут адрес электронной почты, прежде чем я на самом деле создаю их учетную запись, но это займет всего пару секунд после того, как вы определите разрешения для группы участников.
В этой группе пользователей я отключил весь доступ к шаблонам, администрированию сайтов и участников, коммуникационному модулю и надстройкам. Все, что нужно большинству клиентов, — это создавать и редактировать контент, и, возможно, просматривать свои представления Freeform. Вот и все. Упростите свою жизнь и свою и заберите то, что им не нужно. Опять же, я должен был настроить это раньше, но отправная точка лучше, чем начинать с нуля.
Шаг 7: Работа с вашей кодовой базой
Поздравляем, теперь у вас должна быть намного лучшая отправная точка для вашего следующего проекта ExpressionEngine. Чтобы вы могли добавить к нему и использовать его повторно, создайте новый проект в вашем контроле версий и зафиксируйте свою настроенную кодовую базу ExpressionEngine как версию номер один. Ниже приведены примеры некоторых типичных операций, которые вам, вероятно, нужно будет выполнить после того, как у вас появятся новые проекты в конвейере (может варьироваться в зависимости от настроек сервера или если вы используете Git вместо SVN).
Создать новый проект — 10 минут
- Очистите все кеши вашего кода.
- Экспорт базы данных и импорт под новым именем проекта с использованием PHPMyAdmin или аналогичного.
- SVN экспортирует копию вашей кодовой базы в папку рабочей копии нового проекта SVN. ОЧЕНЬ ВАЖНО: обратите внимание, что я сказал экспорт, а не оформление заказа.
- Установите для следующих папок и их содержимого разрешения 777:
-
/templates
-
/uploads
(или как называется ваша папка загрузки) -
/system/expressionengine/cache/db_cache
-
- Добавьте информацию о подключении к БД для новой БД в
config.php
. Измените имя сайта, номера лицензий и любые другие параметры, которые вам нужно изменить. - Загрузите панель управления и измените настройки загрузки файлов. Они хранятся в базе данных и не могут быть помещены в конфигурацию по какой-то единственной причине.
- Сходить с ума.
Развертывание сайта на новом сервере — 10 минут
- Очистить все кэши.
- Экспорт и импорт базы данных с использованием PHPMyAdmin или аналогичного.
- Найдите IP-адрес и информацию о базе данных и добавьте новый раздел IP-адресов в
config.php
. - Зафиксируйте
config.php
в вашем хранилище. - Проверьте репозиторий вашего сайта в папке public_html вашего нового сервера.
- Если это локальный сервер, используйте ваш SVN-клиент.
- Если это удаленный сервер, используйте команду SSH svn checkout http://samplerepository.com/sampleproject/. Пробел и точка после косой черты проверяют содержимое папки в текущей папке, в противном случае вы получите public_html / sampleproject / index.php, если не указать точку.
- Установите для следующих папок и их содержимого разрешения 777:
-
/templates
-
/uploads
(или как называется ваша папка загрузки) -
/system/expressionengine/cache/db_cache
-
- Загрузите панель управления и измените настройки загрузки файлов.
Обновление сайта до существующего сервера — от 1 до 5 минут
- Очистите все кэши (только если вы внесли изменения в базу данных).
- Экспорт и импорт базы данных с использованием PHPMyAdmin или аналогичного (только если вы внесли изменения в базу данных).
- Запустите обновление SVN на своей копии сайта:
- Если это локальный сервер, используйте ваш SVN-клиент.
- Если это удаленный сервер, используйте команду SSH svn update. Вам не нужно повторно вводить URL или пароль.
- Загрузите панель управления и измените настройки загрузки файлов (только если вы внесли изменения в базу данных).
Вывод — пребывание в СУХОЙ пустыне
Занимаясь своим бизнесом, проектируя и разрабатывая офигенные веб-сайты ExpressionEngine, будьте всегда в курсе того, что вы делаете, с точки зрения общей функциональности. Некоторые части функциональности веб-сайта практически идентичны на разных сайтах, им просто нужны небольшие настройки разметки и CSS-оболочка, чтобы легко переходить с одного на другой.
В будущем микроформаты будут стандартизировать разметку еще больше! Это идеальные кандидаты для включения в вашу кодовую базу. Одна из тех, что мы уже обсуждали, — это вездесущая контактная форма. Некоторые другие потенциальные «стандартные» функции (у меня было несколько клиентов, которые спрашивали об этом):
- Блоги и связанные с ними формы комментариев
- Адрес или V карты
- Разделы новостей
- Карты сайта в формате XML или «Google»
- Поиск и страницы результатов поиска
- Custom Share This! код типа
- Сроки Facebook или Twitter
Теоретически у вас могут быть каналы и категории, настраиваемые группы полей и шаблоны, готовые к работе (я знаю, что для многих из них). Ваш клиент по-прежнему получает такую же стоимость, какую он получил бы, если бы вы создали эти части вручную для их сайта (возможно, больше, поскольку они будут дорабатываться и проверяться чаще), а вы выполняете меньше работы, что означает, что вы можете оценивать себя более конкурентоспособно или, если вы продаете фиксированную комиссию, взимайте ту же цену и получайте больше прибыли. Не забудьте развлекаться и получать удовольствие от разработки с ExpressionEngine!