Документация из Wiki была объединена в одну страницу. Если вас интересует конкретная статья, ищите её в левом меню.

Документация Movable Type

Movable Type — это бесплатная платформа для блогинга, отличающаяся мощностью, гибкостью и удобством работы. Движок разрабатывается профессионалами, постоянно добавляются новые функции, а текущие совершенствуются.

Движок считается лучшим не просто так. Многое из того, что появляется в Movable Type, впоследствии вы можете увидеть и в других движках. Инновационный подход и экспериментальный дух разработчиков, а также компания, хорошо зарекомендовавшая себя в мире блогинга — это три составляющих, благодаря которым каждый пользователь MT остаётся доволен своим выбором.

Бесплатные версии Movable Type

  1. MT 4.x Open Source — четвёртая ветка движка. Полностью работоспособная и функциональная версия, однако уже не обновляемая.
  2. MT 5.x Open Source — пятая ветка, в которой появилось несколько полезных новшеств: первая бета, первый взгляд, обновлённый интерфейс и новые возможности, облачные серверы и nginx+PSGI. Обновляется только если появляются угрозы безопасности.

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

Платные версии

Все нововведения появляются в 6-й ветке Movable Type, с выходом которой изменилась лицензия, запрещающая свободное распространение изменений в коде.

Также в шестой ветке по умолчанию доступно Pro-расширение, включающее:

  • Professional Pack, включающий Custom Fields — дополнительные поля, с помощью которых можно создавать собственные данные у записей, авторов, страниц, и другого контента, а также дополнительные связки шаблонов для создания форума, общего блога и профессионального сайта.
  • Community Solution — расширение, позволяющее расширить коммуникационные возможности Movable Type за счёт более гибкого создания и управления профилями пользователей и комментаторов.

Существует Enterprise-версия (также может называться Movable Type Advansed), с помощью которой можно настроить работу Movable Type на нескольких серверах и осуществить LDAP-интеграцию.

Можно ли бесплатно скачать и использовать 6-ю версию?

Да, для персонального использования.

Скачать можно с японского сайта. Инструкция есть на форуме.

Демо

Вы можете испытать Movable Type в действии, не устанавливая платформу на свой сервер. Специально для этого создан сайт www.movabletypedemo.org, где можно протестировать последнюю версию MT (на английском языке).

Скачать Movable Type

Локализованная версия Movable Type:

Основные функции Movable Type

  • Поддержка неограниченного количества сайтов и блогов на одной инсталляции — Независимо от того, что для вас блогинг — просто увлечение или профессиональное дело — в MT вы можете создать столько блогов, сколько захотите. Они могут распологаться не только в подпапках, но и на отдельных доменах.
  • Статическая и динамическая публикация — По умолчанию Movable Type генерирует статические файлы, это положительно сказывается на производительности сервера.
  • Удобное управление медиа файлами — В Movable Type встроен удобный менеджер файлов, с помощью которого можно управлять изображениями, видео, аудио или любыми другими файлами.
  • Мощная система шаблонов — С помощью шаблонов вы можете легко настроить, как внешний вид вашего блога, так и формат публикуемых файлов. Например, можно публиковать файлы с уже привычным расширением .html, а можно использовать и другие расширения (php, asp, txt, css, js, pdf, doc, и т.д.).
  • Пользовательские роли — В Movable Type по умолчанию уже имеется несколько стандартных ролей (администраторы, редакторы, комментаторы, авторы, дизайнеры), с помощью которых можно чётко разделить уровни доступа для различных пользователей. Также в любой момент вы можете создать собственные роли.
  • Собственный язык шаблонов — Вам не придётся изучать ни один язык программирования, чтобы изменить дизайн блога. Теги шаблонов MT просты, как и обычный HTML.
  • Фиды активности — В MT можно отслеживать практически любые события с помощью фидов. Это могут быть последние записи, комментарии, активность в системе и другая полезная информация.
  • Надёжная защита от спама — В Movable Type уже есть современные средства для защиты от спама, что повзолит вам не беспокоиться об этой проблеме.
  • Категории, подкатегории, теги — Упорядочте контент так, как удобно именно вам. Теги могут быть добавлены не только к записям, но и к любым медиа объектам. А при поиске по тегу, посетитель сможет подписаться на новые сообщения, содержащие его.
  • Встроенная библиотека стилей — В Movable Type встроен инструмент, который позволяет сменить дизайн в два клика. Библиотека уже содержит более 40 профессионально выполненных дизайнов, список которых постоянно пополняется.
  • Виджеты — Управляйте блоками вашего сайта простым перетаскиванием элементов в панели управления.

Что можно сделать на MT

  • Персональный блог
  • Коллективный блог
  • Новостной сайт
  • Медиа-ресурс
  • Фотогалерею
  • Сборник статей
  • Информационный справочник

Это не полный список сайтов, которые можно создать, используя Movable Type. Хотя MT и разрабатывается как платформа для блогинга, движок очень гибок и позволяет управлять различным контентом, используя встроенные средства. Кроме того, это мультиблоговый движок, а значит — на одной инсталляции может работать и блог, и фотогаллерея, и сборник статей, и ещё что-нибудь.

Скриншоты (5-я версия)

Movable Type Screenshot Movable Type Screenshot Movable Type Screenshot Movable Type Screenshot Movable Type Screenshot Movable Type Screenshot Movable Type Screenshot Movable Type Screenshot Movable Type Screenshot Movable Type Screenshot

Начало работы с Movable Type

Системные требования

В зависимости от того, как будет использоваться Movable Type, системные требования будут отличаться. Тем не менее, минимальные рекомендованные характеристики следующие:

  • 1 GHz CPU;
  • 512 Мб оперативной памяти;
  • 100 Мб свободного дискового пространства для Movable Type и генерируемых файлов.

Примечание: для системных файлов Movable Type необходимо приблизительно 20 Мб, остальное место на диске необходимо для генерируемых файлов и загружаемого медиа (картинки, документы и другие файлы).

Операционная система

Платформа Movable Type протестирована на следующих операционных системах:

  • Windows XP Professional, Service Pack 2
  • Windows Server 2003, Service Pack 2
  • Mac OS X
  • Все основные Unix-системы, включая:
    • Solaris, SunOS
    • RedHat Enterprise, Fedora и CentOS
    • Linux
    • BSD

Movable Type быстрее всего работает на Unix-системах, поэтому рекомендуется выбирать сервер или хостинг именно с этими операционными системами.

Perl

Movable Type отлично работает с Perl 5.8.1 и выше. С другими версиями Perl MT также будет работать, но официально поддерживаемая версия — 5.8.1.

Веб-сервер

Для работы MT необходим веб-сервер, на котором возможно выполнение CGI-скриптов. Если вы хотите использовать динамическую публикацию, то веб-сервер также должен поддерживать PHP. Следующие веб-серверы протестированы и корректно работают с Movable Type:

  • Apache 1.3x, Apache 2.x
  • IIS 5.x, IIS 6.x (Windows-платформа)

Примечание: Movable Type поддерживает mod_perl 1.x, но не поддерживает mod_perl 2.x.

PHP

Movable Type поддерживает статическую и динамическую публикацию. Для динамической публикации необходимо наличие PHP версии 4 и выше (рекомендуется 5-я версия).

База данных

Movable Type 4 отлично поддерживает следующие базы данных:

  • MySQL 4.0 и выше
  • PostgreSQL 7.x, PostgreSQL 8.x
  • SQLite

Movable Type 5 поддерживает работу только с MySQL.

Браузер

Movable Type отлично работает в следующих браузерах:

  • Safari 2.x
  • Safari 3.x
  • Firefox 2.x
  • Firefox 3.x
  • IE6
  • IE7+

Примечание: Movable Type работает отлично и в браузере Opera 9, 10 и 11, но в некоторых случаях некорректно работает подсветка синтаксиса в шаблонах и визуальный редактор записей.

Установка Movable Type

Какие программы потребуются для установки

Для загрузки файлов на сервер потребуется FTP или SSH клиент. В качестве FTP-клиента можно порекомендовать бесплатную программу Filezilla. А для работы с SSH — бесплатную программу Putty (расширенная версия — ExtraPuTTY) или платную SecureCRT. В Linux и MacOS для доступа по SSH к серверу можно использовать обычный терминал.

Необходимая для установки информация
  • Имя пользователя и пароль для доступа на сервер (по FTP или SSH);
  • Путь до директории, где разрешено выполнение CGI-скриптов (обычно это папка cgi или cgi-bin`);
  • Путь до директории, где будет располагаться сайт;
  • Путь до директории, где будут находиться статические файлы Movable Type;
  • Хост базы банных, а также имя пользователя и пароль.

Примечание: базу данных необходимо создать до установки MT.

Быстрая установка Movable Type

Чтобы быстро установить Movable Type, следуйте следующим инструкциям:

  • Загрузите на сервер все файлы Movable Type, кроме папки mt-static. Файлы должны быть загружены в папку cgi-bin (или cgi), в которой разрешено выполнение CGI скриптов. Например, вот как может выглядеть стандартная установка: http://example.com/cgi-bin/mt/.
  • Папку mt-static необходимо загрузить в корневую директорию вашего сайта, чтобы доступ к ней был следующего вида: http://example.com/mt-static/.
  • На все .cgi файлы (например, mt.cgi, mt-search.cgi, и т.д.), находящиеся в директории Movable Type, необходимо выставить права доступа (CHMOD) 755.
  • Откройте Movable Type в браузере. Например, адрес может выглядеть так: http://example.com/cgi-bin/mt/mt.cgi.
  • Автоматически запустится инсталлятор. Следуйте инструкциям установки.

Детальное описание установки Movable Type

Общая информация

Папка для скриптов

Платформа Movable Type написана на языке Perl, поэтому для успешной работы необходимо узнать, в какой папке на сервере возможно выполнение CGI-скриптов. Обычно эта папка называется cgi или cgi-bin, и может быть доступна по адресу http://example.com/cgi/ или http://example.com/cgi-bin/ одновременно. Папка cgi обычно располагается на том же уровне, где и корневая папка документов домена.

Расположение папки с CGI-скриптами

Если вы сомневаетесь, где находится папка для выполнения CGI-скриптов, то необходимо уточнить эту информацию у службы поддержки хостера или у администратора сервера.

Папка со статическими файлами

В дистрибутиве Movable Type есть специальная папка, в которой содержатся все статические файлы — mt-static. По умолчанию она находится в той же папке, где и все остальные файлы. Но её необходимо разместить в корневой директории вашего сайта. Вот как это может выглядеть:

Расположение папки mt-static

Адрес и путь расположения блога

Блог может располагаться как в корневой директории, так и в любой поддиректории, и даже на отдельном домене. Рассмотрим вариант с установкой блога в корневую директорию домена.

Корневая директория домена — это, обычно, папка docs, htdocs или public_html. В этой папке хранятся документы, которые будут доступны по адресу http://example.com/.

  • Относительный URL: /example-folder/
  • Абсолютный URL : http://example.com/example-folder/
  • Относительный путь на сервере: ./example-folder или ../example-folder, или example-folder
  • Абсолютный путь на сервере: /home/username/example.com/docs/example-folder

Обратите внимание, что относительный путь на сервере не может начинаться со слэша (знак косой черты — «/»), иначе путь будет рассчитываться от корневой директории сервера.

База данных

Для работы Movable Type 4 подойдёт одна из следующих баз данных: MySQL, PostgreSQL или SQLite. Рекомендуется использовать MySQL или PostgreSQL, так как именно с этими базами данных Movable Type работает наиболее быстро.

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

Movable Type использует кодировку UTF-8. Это наиболее современная кодировка, которую поддерживает большинство серверов. На российских серверах, чаще всего, установлена кодировка cp1251 (windows-1251) — кириллица. А на зарубежных — latin1. Поэтому необходимо настроить базу данных на корректную работу с кодировкой UTF-8.

Пример настройки базы данных MySQL через PHPMyAdmin:

Настройка кодировки базы данных

FTP и SSH

FTP — это простой способ переслать файлы на другой сервер; это специальный протокол, который поддерживается практически всеми серверами.

SSH — это продвинутый, защищённый протокол, с помощью которого можно удалённо управлять сервером, отправляя ему необходимые команды.

Для работы того или другого понадобятся следующие данные: имя пользователя, пароль, хост для подключения. Для работы с SSH вам понядобятся знать некоторые команды. Самые распространённые из них приведены в статье Полезные команды Linux.

Закачка дистрибутива на сервер

После того, как вы скачали архив с дистрибутивом, его необходимо распаковать и закачать на свой сервер. Рекомендуется создать в папке cgi подпапку mt и закачивать файлы в неё.

Файлы Movable Type

Примечание: Не забудьте переместить папку mt-static в корневую директорию домена.

Примечание: при закачке файлов по FTP, теряются права доступа на них. Поэтому нужно вручную установить права доступа (CHMOD) на все файлы с расширение .cgi, равные 755.

Установка прав доступа

Если вы используете SSH, то гораздо проще и быстрее будет закачать на сервер архив, и уже там распаковать его. Для этого используйте следующие команды:

cd /home/username/example.com/cgi

(переход в папку cgi)

wget http://movable-type.ru/mt-latest-tar

(скачивание архива tar.gz с последней русской версией Movable Type)

tar xzf MT*.tar.gz

(распаковка архива)

После этих действий в папке cgi у вас будет архив MT-4.32-ru.tar.gz (версия может отличаться), а также папка MT-4.32-ru. Теперь необходимо переименовать папку MT-4.32-ru в папку mt. Для этого нужна специальная команда:

mv MT-4.32-ru mt

Основная папка Movable Type переименована, но в ней по-прежнему находится папка со статическими файлами, её необходимо переместить:

cd mt

(переход в папку mt)

mv mt-static /home/username/example.com/docs/mt-static

(перемещение папки mt-static в корневую директорию домена)

Установка Movable Type

Для установки откройте в браузере адрес, на котором располагается MT. Например, это может быть адрес http://example.com/cgi-bin/mt/mt.cgi. Если всё нормально, то запустится инсталлятор, с помощью которого нужно будет указать необходимые для установки данные.

Возможные проблемы при установке или после неё

500-я ошибка сервера

Возникает, чаще всего, из-за того, что неправильно установлены права доступа на CGI-скрипты. В Linux- системах, чтобы подобные скрипты были «выполняемыми», на них необходимо установить права доступа 755 (по-другому права доступа называются CHMOD, от англ. change mode).

После установки на сайте кириллица отображается какими-то непонятными символами

Это значит, что на сервере по умолчанию выставлена неправильная кодировка. Чаще всего, это cp1251 (windows-1251). Необходимо изменить кодировку по умолчанию на UTF-8. Для этого, если у вас веб-сервер Apache, добавьте в корневой каталог вашего сайта файл .htaccess (с точкой в начале):

AddDefaultCharset utf-8

Если подобная проблема возникает при работе с Movable Type, то попробуйте добавить в файл mt-config.cgi следующую строчку:

SQLSetNames 1

Обновление Movable Type

Обновление Movable Type

Существует 2 варианта обновления. Перед каждым обновлением не забывайте делать резервные копии: как базы данных, так и файлов Movable Type.

1 вариант: перезапись существующих файлов

  • Скачайте последнюю версию Movable Type: http://movable-type.ru/mt4 или http://movable-type.ru/mt5.
  • Разархивируйте дистрибутив и загрузите все файлы на сервер, перезаписав старые файлы (кроме файла mt-config.cgi).
  • Откройте Movable Type в браузере и пройдите процесс обновления.

2 вариант: переименование каталога установки

  • Скачайте последнюю версию Movable Type: http://movable-type.ru/mt4 или http://movable-type.ru/mt5.
  • Переименуйте на сервере вашу папку Movable Type. Например, если ваша папка называлась «mt», то можно переименовать её в «mt-old».
  • Создайте новую папку «mt» и загрузите в неё файлы дистрибутива, а затем из старой папки скопируйте в новую файл mt-config.cgi.
  • Откройте Movable Type в браузере и пройдите процесс обновления.

Папку mt-static следует обновлять исключительно методом перезаписывания файлов, так как в ней содержатся мини-копии картинок, а также другие статические файлы, сгенерированные Movable Type.

Обновление с Movable Type на Movable Type Pro

Для добавления к русской версии Pro-функциональности просто добавьте указанные файлы из Movable Type Pro. После того, как файлы скопированы, откройте Movable Type в браузере, автоматически запустится процесс обновления.

Обновление Movable Type 4.x до 4.x Pro

Список файлов для копирования:

  • /mt-cp.cgi(не забудьте установить права доступа 755)
  • /addons
  • /mt-static/addons
  • /mt-static/jquery/themes/Motion — (по желанию; обязательно, если используется плагин Motion)
  • /mt-static/plugins/ActionsStreams — (по желанию; обязательно, если используется плагин Motion)
  • /mt-static/plugins/FacebookCommenters — (по желанию)
  • /mt-static/plugins/feeds-app-lite — (по желанию)
  • /mt-static/plugins/mixiComment — (по желанию)
  • /mt-static/plugins/Motion — (по желанию)
  • /mt-static/themes/tristan-blue — (по желанию)
  • /mt-static/themes/tristan-blue-4.2 — (по желанию)
  • /plugins/ActionStreams — (по желанию; обязательно, если используется плагин Motion)
  • /plugins/CommunityActionStreams — (по желанию; обязательно, если используется плагин Motion)
  • /plugins/FacebookCommenters — (по желанию)
  • /plugins/feeds-app-lite — (по желанию)
  • /plugins/mixiComment — (по желанию)
  • /plugin/Motion — (по желанию)

Обновление с Movable Type 5.x до 5.x Pro

Список файлов для копирования:

  • /mt-cp.cgi(не забудьте установить права доступа 755)
  • /addons
  • /mt-static/addons
  • /mt-static/plugins/FacebookCommenters — (по желанию)
  • /mt-static/plugins/feeds-app-lite — (по желанию)
  • /mt-static/plugins/mixiComment — (по желанию)
  • /mt-static/themes/tristan-blue — (по желанию)
  • /mt-static/themes/tristan-blue-4.2 — (по желанию)
  • /plugins/FacebookCommenters — (по желанию)
  • /plugins/feeds-app-lite — (по желанию)
  • /plugins/mixiComment — (по желанию)

Импорт из других систем

Импорт из Wordpress в Movable Type

Если вам необходимо перенести блог с Wordpress на Movable Type, то вы можете сделать это за три простых шага. Как только вы выполните эту инструкцию, у вас будет полнофункциональный и безопасный блог на платформе Movable Type. В процессе импорта будут перенесены: записи и страницы с сохранёнными статусами публикации, комментарии, трекбэки, категории, теги и пользователи.

Перенос контента с Wordpress на Movable Type

  • Скачайте и установите Movable Type.
  • Экспортируйте данные из Wordpress
    • Авторизуйтесь с администраторскими права в Wordpress.
    • Перейдите в раздел «Экспорт», находящийся во вкладке «Управление».
    • Выберите «Все авторы», чтобы экспортировать весь блог.
    • Скачайте файл экспорта и сохраните его на своём компьютере.

  • Импортируйте данные в Movable Type
    • Авторизуйтесь в Movable Type с правами администратора
    • Перейдите в раздел «Импорт», находящийся в меню «Инструменты».
    • Выберите блог, в который хотите импортировать данные.
    • В пункте «Импорт из» выберите «WordPress eXtended RSS (WXR)».
    • Выберите экспортированный ранее файл и нажмите кнопку «Импорт записей».

На этом всё! Теперь вы можете приступить к управлению импортированным контентом.

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

Основы Movable Type

Создание и публикация записей

Редактор записей

Основы

Главная задача Movable Type — это удобная работа с ведением блога. Сложность в написании и публикации статьи снижена до минимума благодаря удобному интерфейсу. Ниже приведены основные функции в создании и публикации статьи.

  • Первым делом необходимо войти в панель управления и выбрать блог, где вы собираетесь создавать запись. Это делается с помощью меню выбора блога.
  • Для того чтобы создать запись нужно перейти на страницу «Создание новой записи», это делается посредством кнопки «Создать запись» или же с помощью меню «Создать > Запись».
  • Выполнив предыдущее действие, можно увидеть стандартную страницу создания записи Movable Type. Эта страница содержит основные области для работы с текстом и его публикации. Инструмент «Опции отображения» поможет настроить эти области, он позволит включить или выключить отображение областей на странице. О предназначении каждой области читайте ниже.
  • Просмотр: эта функция покажет, как будет выглядеть ваша запись в блоге, когда вы ее опубликуете. Для того чтобы воспользоваться ею, нажмите на кнопку «Просмотр».
  • Сохранить: эта функция сохраняет вашу запись в базу данных и, возможно, опубликует ее в блог основываясь на статусе публикации (см. ниже).

Области страницы

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

Основная область записи
  • Заголовок записи. Как видно из названия, это поле предназначено для ввода заголовка (названия) записи. В шаблонах блога для отображения заголовка используется тег <mt:EntryTitle/>.
  • Текст. Стандартное поле ввода, предназначенное для основного текста вашей записи. Этот текст может быть написан и отредактирован в разных форматах ввода. Для того чтобы отображать текст записи в блоге, в шаблонах используется тег <mt:EntryBody/>.
  • Продолжение. Это дополнительное поле ввода предназначено для текста продолжающего вашу запись или для дополнительной информации. Как правило, это поле используется для больших записей, вступительный текст пишется в стандартном поле, а его продолжение в этом, на главной странице отображается только вступление, а на странице записи отображается весь текст. Для отображения этого текста в шаблонах используется тег <mt:EntryMore/>.
Область метаданных
  • Метки. Данное поле используется для ввода меток (тегов). Узнайте больше о тегах записей и страниц и как управлять ими. Метки отображаются в блоге с помощью тега в шаблоне <mt:EntryTags>.
  • Категории. Используйте это поле для присвоение категории к вашей записи. Чтобы присвоить категорию к записи нажмите на ссылку «Добавить категорию».
  • Ключевые слова. Не путайте их с тегами, ключевые слова предназначены для добавление метаданных в заголовок вашей записи посредством тега <mt:EntryKeywords>. Ключевые слова помогают при индексе записей поисковыми ботами.
Область публикации
  • Статус. Эта опция предназначена для присвоения статуса публикации для записи. К записям присваивается статус «Опубликовать» ''(Published)'' - при сохранении запись автоматически публикуется в блог, «Не публиковать (В черновик)» - запись лишь сохраняется в базу данных в качестве незаконченной записи. Статус по умолчанию настраивается администратором.
  • Дата публикации. Эта опция предназначена для указания даты опубликования записи. Если ввести дату в будущем, то запись опубликуется именно в тот день который вы указали. А если указать прошлое то запись опубликуется как запись того дня который вы указали.
  • Базовое имя. Базовое имя указывается для отображения его в строке адреса. Базовое имя должно указываться в латинице во избежание ошибок. Например, заголовок записи у нас "С новым годом", то базовое имя должно быть следующего вида "s_nowim_godom".
Область обратной связи
  • Позволить комментировать/оставлять трекбэки. Это поле включает или выключает функции комментирования и TrackBacks. Настройки по-умолчанию настраиваются администратором.

Типы публикаций

В Movable Type существует несколько типов публикации. Вы можете использовать любой тип и любую их комбинацию. Например, некоторые файлы, включающие в себя множество данных, рекомендуется кешировать и публиковать при помощи очереди публикации.

Статическая публикация

Файлы публикуются сразу, как только изменился тот или иной контент. Например, индексный шаблон «Главная страница» будет автоматически опубликован, когда вы добавите новую запись. Также этот шаблон будет опубликован, когда к этой записи добавят комментарий.

Динамическая публикация

Существуют следующие варианты:

  • полная динамическая публикация, когда запросы обрабатываются скриптом mt-view.php;
  • ручная, когда создаётся один индексный шаблон и один модульный, чтобы, например, сделать пейджинацию — Пейджинация на PHP и Smarty;
  • совмещение того и другого.
Ручная публикация

Этот вариант удобен для публикации различных индексных шаблонов типа CSS, Javascript и других неизменяемых файлов. Шаблон опубликуется только тогда, когда вы это сделаете.

Очередь публикации

Очередь публикации — это список задач, который выполняется при запуске скрипта run-periodic-tasks (скрипт находится в папке tools).

Обзор языка шаблонов Movable Type

Система шаблонов в Movable Type устроена таким образом, что вы можете отобразить контент в точности, как пожелаете. Шаблоны позволяют указать, где будет расположен контент и как он будет выглядеть. Для этого используются специальные теги, которые обычно добавляют к другой разметке, например, к HTML или XML.

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

Большая часть содержания шаблона состоит из неизменяемых частей, например, HTML-тегов (или XML для фидов) и обычного текста. Области, в которых будет постоянно обновляющийся контент, заключены в теги шаблонов Movable Type. Эти теги очень похожи на обычные HTML или XML теги, так что дизайнерам не составит большого труда понять особенности работы с ними и не нужно будет изучать какие-либо языки программирования, чтобы просто изменить внешний вид записей в блоге.

Синтаксис тегов шаблонов

Для тех, кто знаком с HTML и XML, тега шаблонов Movable Type покажутся вполне знакомыми. Все теги шаблонов заключены в угловые скобки. Существуют блоковые теги и строчные. Блоковые состоят из пары тегов — открывающего и закрывающего. А строчные — из одного.

Примеры тегов

<mt:EntryTitle/> — строчный тег.

<mt:Entries>…</mt:Entries> — блоковый тег.

Обратите внимение: вам могут встретиться различные варианты оформления тегов Movable Type, но рекомендуется использовать стиль XML, чтобы избежать конфликтов в текстовых редакторах и обеспечить совместимость с будущими версиями. Например, тег <MTEntries> равозначен тегу <mt:Entries>.

<mt:Entries> и <MTEntries> — равнозначные теги.

<mt:EntryTitle/> и <$MTEntryTitle$> — равнознычные теги.

В тегах шаблонов используется префикс, известный также как пространство имен, чтобы теги Movable Type можно было легко отличить от HTML-тегов или любых других языков разметки. Кроме того, теги шаблонов можно использовать внутри других языков: PHP, ASP, JSP, и т.д.

<mt:Entries>
    <mt:EntryTitle/>
</mt:Entries>

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

<mt:FooBar>
<mt:foobar>
<MT:fooBar>
Атрибуты тегов шаблонов

Большинство тегов поддерживает атрибуты, которые позволяют изменить стандартное поведение тега. Атрибуты тегов — это ещё одна особенность тегов шаблонов, которая покажется знакомой тем, кто уже работал с HTML или XML. Атрибут — это пара — ключ и его значение, которая находится в имени тега и отделяется от него пробелом. Значение атрибута всегда должно быть заключено в двойные или одинарные кавычки. Пример:

<mt:Entries lastn="40">
    <mt:EntryTitle/>
</mt:Entries>

В этом примере lastn является одним из атрибутов блокового тега <mt:Entries> и имеет значение 40. В результате выполнения этого кода будет отображено 40 заголовков последних записей. Большинство тегов имеют необязательные атрибуты, но в некоторых тегах существуют атрибуты, которые нужно обязательно указывать.

Кроме того, в Movable Type существует набор набор глобальных фильтров, которые могут применяться ко всем тегам.

Типы тегов шаблонов

В Movable Type существуют три типа тегов шаблонов: переменные, блоковые и условные.

Переменные теги (теги-переменные)

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

<mt:BlogName/>
<mt:EntryTitle/>
Блоковые теги

Блоковые теги (иначе — контейнерные теги) получили своё название из-за того, что содержат внутри себя другие теги или какой-либо текст. А также состоят из открывающего и закрывающего тега.

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

<mt:Entries>
Запись «<mt:EntryTitle/>» написана <mt:EntryAuthor/> в <mt:EntryDate/>
</mt:Entries>

В этом примере <mt:Entries> — это блоковый тег, выводящий список записей. Каждая отображённая запись будет содержать заголовок, заключённый в кавычки, автора записи и дату, когда запись была опубликована.

Условные теги

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

<mt:If tag="EntryCommentCount" ge="1">
У этой записи больше одного комментария
</mt:If>

В этом примере проверяется количество комментариев к записи. И, если оно больше или равно 1, то выводится текст «У этой записи больше одного комментария».

Условные теги легко узнать, так как они всегда начинаются с <mt:If/>.

Контекст в тегах шаблонов

Контекст (место расположения тега) имеет важное значение в шаблонизаторе Movable Type. Некоторые теги контекстно-независимы (например, <mt:BlogName/>), но большинство тегов могут располагаться только в определённых местах.

Контекст — это расположение тега относительно других тегов и определённых шаблонов. Иногда разный контекст для одного тега может приводить к разным результатам. Пример:

<mt:Entries>
    <mt:EntryTitle/> <!-- Всё правильно, тег используется в соответствии с контекстом. -->
</mt:Entries>
<mt:EntryTitle/> <!-- Ошибка! Тег используется вне контекста -->

Первый тег <mt:EntryTitle/> находится в контексте тега <mt:Entries>. Как упоминалось выше, <mt:Entries> выводит список записей, а в данном случае — список заголовков записей. Второй тег <mt:EntryTitle/> приведёт к ошиибке, так как он находится вне контекста тега <mt:Entries>. Шаблонизатор просто не поймёт, какой заголовок необходимо вывести.

Явный и неявный контекст

Рассмотренный выше пример — это явный контекст, когда тег был использован за пределами другого тега. Также существует неявный контекст, когда определённые теги могут (или не могут) быть использованы в определённых шаблонах.

Например, блоковый тег <mt:Entries> на главной странице выведет один список записей, на странице с архивом по месяцам — другой, и на странице категории список записей будет отличаться от главной страницы, хотя во всех вариантах используется один и тот же тег.

Такой механизм работы позволяет сократить количество кода в шаблонах, так как можно размещать один и тот же код в разных шаблонах, но работать он будет по-разному. Кроме того, в некоторых случаях не понадобятся блоковые теги для вывода содержимого. Например, в шаблоне записи не нужно добавлять блоковый тег <mt:Entries>, так как контекст здесь — индивидуальная запись. И, чтобы вывести заголовок этой записи, достаточно будет указать <mt:EntryTitle/>.

Типы шаблонов

В Movable Type существуют следущие типы шаблонов:

  • Индексные — эти шаблоны не привязаны к каким-либо архивам, публикуется только один файл, имя которого задаётся в настройках шаблона. Это может быть как главная страница сайта, так и файлы с любыми расширениями (например: .php, css, .html, .asp, .xml, и т.д.)
  • Архивные — шаблоны, публикующиеся по специальным правилам, которые указываются в настроках шаблона (путь публикации). Архив может быть:
    • Записью;
    • Списком записей:
      • по дням;
      • по неделям;
      • по месяцам;
      • по годам;
      • авторов;
      • авторов по дням;
      • авторов по неделям;
      • авторов по месяцам;
      • авторов по годам;
      • категорий;
      • категорий по дням;
      • категорий по неделям;
      • категорий по месяцам;
      • категорий по годам.
    • Страницей;
  • Модульные — шаблоны, которые не публикуются, но включаются в другие шаблоны. Например, чтобы не размещать в множестве шаблонов одинаковый код, можно перенести его в модульный шаблон, который затем включить во все необходимые шаблоны.
  • Системные — шаблоны, которые тоже не публикуются, но используются для отображения некоторых важных страниц, например, при поиске по сайту, сообщениях о добавлении комментария или отображении ошибки.
  • Виджеты — тоже, что и модульные, но для их вызова используются другие теги.

Пути публикации архивов

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

Один шаблон может иметь несколько путей публикации, например, архив автора и автора по месяцам может быть опубликован с помощью одного шаблона, если в нём задать специальные условия с помощью тегов mt:If, mt:Else, mt:Unless, и др.

Для создания архива по месяцам подобно этому:

2008/12/index.html

… используйте %y для обозначения года в четырёхзначном формате и %m для обозначения месяца в двухзначном формате, а также %i для индексного файла. Также не забывайте разделять значения слэшем («/»):

%y/%m/%i

Для создания архива категории подобно этому:

категория/под-категория/index.html

… используйте %-c для создания пути категории, слова в которой разделены дефисом, а также %i для индексного файла, не забывая разделять значения слэшем:

%-c/%i

Чтобы создать архив записи подобно этому:

2008/12/entry-basename.html

… 4-х значный год, 2-х значный месяц, а также базовое имя записи с расширением, указанным в параметрах блога:

%y/%m/%-f

Пути архивов используют различные теги Movable Type для создания ссылок (например, <mt:EntryPermalink/>). Когда путь архива заканчивается индексным файлом (для большинства серверов это index.html или index.php), то Movable Type удаляет этот индексный файл из URL.

Таким образом, если фактическое расположение файлов выглядит так:

2008/12/entry-basename/index.html
2008/12/index.html

То Movable Type создаёт ссылки без индексного файла (если только вы не создадите собственный путь, в котором индексный файл будет):

<a href="2008/12/entry-basename/"><!-- запись --></a>
<a href="2008/12/"><!-- ежемесячный архив --></a>

Основные пути архивов

Ниже представлены основные пути архивов в Movable Type. Значение по умолчанию для определённого типа архива выделено жирным шрифтом.

Тип архива Путь архива Значение в шаблонах
Записьгггг/мм/базовое-имя-записи.html%y/%m/%-f
Записьгггг/мм/базовое_имя_записи.html%y/%m/%f
Записьгггг/мм/базовое-имя-записи/index.html%y/%m/%-b/%i
Записьгггг/мм/базовое_имя_записи/index.html%y/%m/%b/%i
Записьгггг/мм/дд/базовое-имя-записи.html%y/%m/%d/%-f
Записьгггг/мм/дд/базовое_имя_записи.html%y/%m/%d/%f
Записьгггг/мм/дд/базовое-имя-записи/index.html%y/%m/%d/%-b/%i
Записьгггг/мм/дд/базовое_имя_записи/index.html%y/%m/%d/%b/%i
Записькатегория/под-категория/базовое-имя-записи.html%-c/%-f
Записькатегория/под-категория/базовое-имя-записи/index.html%-c/%-b/%i
Записькатегория/под_категория/базовое_имя_записи.html%c/%f
Записькатегория/под_категория/базовое_имя_записи/index.html%c/%b/%i
Страницапуть-папки/базовое-имя-страницы.html%-c/%-f
Страницапуть-папки/базовое-имя-страницы/index.html%-c/%-b/%i
Страницапуть_папки/базовое_имя_страницы.html%c/%f
Страницапуть_папки/базовое_имя_страницы/index.html%c/%b/%i
Ежедневныйгггг/мм/дд/index.html%y/%m/%d/%f
Еженедельныйгггг/мм/день-недели/index.html%y/%m/%d-week/%i
Ежемесячныйгггг/мм/index.html%y/%m/%i
Ежегодныйгггг/index.html%y/%i
Категориякатегория/под-категория/index.html%-c/%i
Категориякатегория/под_категория/index.html%c/%i
Ежедневный категориикатегория/под-категория/гггг/мм/дд/index.html%-c/%y/%m/%d/%i
Ежедневный категориикатегория/под_категория/гггг/мм/дд/index.html%c/%y/%m/%d/%i
Ежемесячный категориикатегория/под-категория/гггг/мм/index.html%-c/%y/%m/%i
Ежемесячный категориикатегория/под_категория/гггг/мм/index.html%c/%y/%m/%i
Еженедельный категориикатегория/под-категория/гггг/мм/день-недели/index.html%-c/%y/%m/%d-week/%i
Еженедельный категориикатегория/под_категория/гггг/мм/день-недели/index.html%c/%y/%m/%d-week/%i
Ежегодный категориикатегория/под-категория/гггг/index.html%-c/%y/%i
Ежегодный категориикатегория/под_категория/гггг/index.html%c/%y/%i
Авторавтор/отображаемое-имя-автора/index.htmlauthor/%-a/%f
Авторавтор/отображаемое_имя_автора/index.htmlauthor/%a/%f
Ежедневный автораавтор/отображаемое-имя-автора/гггг/мм/дд/index.htmlauthor/%-a/%y/%m/%d/%f
Ежедневный автораавтор/отображаемое_имя_автора/гггг/мм/дд/index.htmlauthor/%a/%y/%m/%d/%f
Ежемесячный автораавтор/отображаемое-имя-автора/гггг/мм/index.htmlauthor/%-a/%y/%m/%f
Ежемесячный автораавтор/отображаемое_имя_автора/гггг/мм/index.htmlauthor/%a/%y/%m/%f
Еженедельный автораавтор/отображаемое-имя-автора/гггг/мм/день-недели/index.htmlauthor/%-a/%y/%m/%d-week/%f
Еженедельный автораавтор/отображаемое_имя_автора/гггг/мм/день-недели/index.htmlauthor/%a/%y/%m/%d-week/%f
Ежегодный автораавтор/отображаемое-имя-автора/гггг/index.htmlauthor/%-a/%y/%f
Ежегодный автораавтор/отображаемое_имя_автора/гггг/index.htmlauthor/%a/%y/%f

Редактирование пути архива

Путь архива располагается в разделе «Опции шаблона», который находится внизу каждого архивного шаблона.

  • Перейдите к Дизайн -> Шаблоны.
  • Откройте любой архивный шаблон, например: Запись, Список записей категории, Ежемесячный список записей, и т.д.
  • В нижней части экрана найдите ссылку «Опции шаблона», там будет «Путь публикации архивов», где вы можете отредактировать существующий или создать новый путь.

Использование тегов шаблонов в путях архивов

Movable Type позволяет использовать в путях архивов теги шаблонов.

Например, чтобы опубликовать записи с подобным URL:

2009/September/16/basename.html

Используйте тег <mt:EntryDate/>, в котором можно использовать дополнительные форматы дат. В результате путь архивов будет выглядеть так:

%y/<mt:EntryDate format="%B"/>/%d/%-f

Пример с использованием дат и слэшей:

<mt:EntryDate format="%Y/%B/%d"/>/%-f

Обратите внимание: необходимо понимать, что использование тегов шаблонов в путях архивов в некоторых ситуациях несёт определённые риски. Нет абсолютной гарантии, что указанные теги, а также их комбинация с модификаторами (например, dirify="1") будет совместима в будущих версиях. Если вы используете теги в этом месте, то не забывайте детально проверять список изменений в новых версиях Movable Type, чтобы избежать возможных ошибок в работе.

Значения путей архивов

%a

Базовое имя автора <mt:AuthorBasename/> Пример: melody_nelson.

%_a

То же самое, что и %a. Может быть использовано для принудительного использования подчёркивания.

%-a

То же самое, но с использованием дефиса. Пример: melody-nelson.

%b

Для индивидуального имени записи, равнозначно <mt:EntryBasename/>. По умолчанию это первые 30 дирифицированных символов с использованием подчёркивания в качестве разделителя. Значение указывается автоматически для записи, но может быть переопределено вручную через поле «Базовое имя» в редакторе записей. Пример: my_summer_vacation

%_b

Тоже самое, что и %b.

%-b

То же, что и выше, но используется дефис вместо подчёркивания. Пример: my-summer-vacation.

%c

Путь категории и подкатегории (если существует) до записи. Используется базовое имя категории. Пример: arts_and_entertainment/tv_and_movies.

%_c

Равнозначно %c.

%-c

Тоже, что и выше, но с использованием дефиса. Пример: arts-and-entertainment/tv-and-movies.

%C

Базовое имя основной категории, равнозначно тегу <mt:CategoryBasename/> Пример: tv_and_movies.

%-C

Тоже, что и выше, но с использованием дефиса. Пример: tv-and-movies.

%d

Двухзначное значение месяца. Равнозначно тегу <mt:ArchiveDate format="%d"/> Пример: 09.

%D

Трёхзначное название дня недели. Равнозначно тегу <mt:ArchiveDate format="%e" trim="1"/> Пример: Tue.

%e

Числовое значение ID записи — шесть цифр. Если значение ID меньше 999999, то первые цифры заменяются нулями. Равнозначно тегу <mt:EntryID pad="1"/>. Пример: 000040.

%E

Числовое значение ID записи. Равнозначно тегу <mt:EntryID pad="0"/>. Пример: 40.

%f

Имя публикуемого файла, уже включающее расширение, указанное в параметрах блога. Может быть использовано вместо %b или %i для обеспечения правильного поведения в соответствии с контекстом. Равнозначно тегу <mt:ArchiveFile/> Пример: entry_basename.html или index.html.

%-f

Тоже, что и %f, но с использованием дефиса. Пример: entry-basename.html.

%F

Тоже, что и %f, но без расширения файла. Равнозначно тегу <mt:ArchiveFile extension="0"/>. Пример: entry_basename.

%-F

Тоже, что и %f, но без расширения файла и с использованием дефиса. Равнозначно тегу <mt:ArchiveFile extension="0" separator="-"/>. Пример: entry-basename.

%h

Час в 24-часовом формате с ведущим нулём. Равнозначно тегу <mt:ArchiveDate format="%H"/> Пример: 09 или 16.

%H

Час в 24-часовом формате без ведущего нуля. Равнозначно тегу <mt:ArchiveDate format="%k" trim="1"/> Пример: 9 или 16.

%i

Значение конфигурационной директивы IndexBasename вместе с расширением файла. Равнозначно тегу <mt:IndexBasename extension="1"/>. Пример: index.html.

%I

Тоже, что %i, но без расширения файла. Равнозначно тегу <mt:IndexBasename/> Пример: index.

%j

Трёхзначный день года, c нулями. Равнозначно тегу <mt:ArchiveDate format="%j"/> Пример: 040.

%m

Двухзначный месяц, с нулями. Равнозначно тегу <mt:ArchiveDate format="%m"/> Пример: 07.

%M

Трёхзначное значение месяца. Равнозначно тегу <mt:ArchiveDate format="%b"/> Пример: Sep или Jan.

%n

Двухзначные минуты, с нулями. Равнозначно тегу <mt:ArchiveDate format="%M"/>. Пример: 04.

%p

Номер текущей страницы. Равнозначно <mt:PagerBlock><mt:IfCurrentPage><mt:Var name="__value__"/></mt:IfCurrentPage></mt:PagerBlock>.

%s

Двухзначные секунды, с нулями. Равнозначно тегу <mt:ArchiveDate format="%S"/> Пример: 01.

%x

Расширение файла вместе с точкой (.). Равнозначно тегу <mt:BlogFileExtension/>. Если расширение файла не указано, то будет возвращено пустое значение. Пример: .html.

%y

Четырёхзначный год. Равнозначно тегу <mt:ArchiveDate format="%Y"/> Пример: 2005.

%Y

Двухзначный год, с нулями. Равнозначно тегу <mt:ArchiveDate format="%y"/> Пример: 05.

Подключение сгенерированных шаблонов (Server Side Includes)

SSI (Server Side Includes) в представлении Movable Type — это возможность использовать в шаблонах стандартные теги MT, которые при публикации преобразуются в язык, указанный в атрибутах или настройках модуля. Проще всего будет понять на примере.

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

Пример

Предположим, у вас есть модульный шаблон Navigation, который должен присутствовать на каждой странице сайта. Так как, обычно, в навигации содержится множество данных, то их получение требует определённых затрат. При публикации множества страниц это может быть заметно. К тому же, сгенерированная таких образом навигация может отличаться на разных страницах. Поэтому желательно сгенерировать шаблон один раз, а затем включать его «на лету» в другие шаблоны.

Можно обойтийсь и без SSI, например, создать индексный шаблон с навигацией, который подключать в другие шаблоны одним из следующих образов:

<?php include("/home/user/example.com/docs/includes/navigation.php"); ?>
<mt:Include file="/home/user/example.com/docs/includes/navigation.php"/>

А с использованием SSI код в шаблоне будет выглядеть так:

<mt:Include module="Navigation"/>

Результат, который будет во всех шаблонах (кроме системных):

<?php include("/home/user/axample.com/docs/includes_c/navigation.php"); ?>
Плюсы SSI:
  • Простота использования.
  • Не нужно знать языков программирования.
  • Стандартные теги Movable Type.
  • Не нужно знать абсолютный путь на сервере.
  • Не нужно указывать разный код для обычных и системных шаблонов.

Поддерживаемые языки

  • PHP
  • SHTML
  • Active Server Pages (ASP)
  • Java Server Pages (JSP)

Использование модуля

Для использования модуля его необходимо активировать. Для этого перейдите к настройке публикации, а затем в пункте «Включение на стороне сервера» выберите тип включения.

SSI

После активации модуля, будет доступно для варианта использования:

  • через параметры отдельного шаблона;
  • через атрибут тега <mt:Include/>.
Работа с SSI через параметры шаблона

Этот метод наиболее простой.

  • Откройте модульный шаблон, например, Navigation, а затем в его опциях активируйте «Включение на стороне сервера».
  • После этого во всех остальных шаблонах, куда при помощи тега <mt:Include/> будет включаться Navigation, будет генерироваться похожий код:
<?php include("/home/user/axample.com/docs/includes_c/navigation.php"); ?>
Работа с SSI через атрибут тега <mt:Include/>

На примере модуля «Navigation»:

  • В необходимом месте ваших шаблонов добавьте тег <mt:Include module="Navigation" ssi="php"/>
  • Это сгенерирует необходимый код.

Если в значении атрибута «ssi» указать «0», то шаблон, наоборот, не будет обрабатываться как SSI. Другие возможные значения атрибута ssi: php, asp, jsp, shtml.

Фильтры тегов

Фильтры тегов — это специальные атрибуты для тегов Movable Type, которые изменяют поведение тех или иных тегов. Глобальные фильтры могут быть применены практически к любым тегам.

Пример применения фильтра к тегу <mt:EntryTitle/>

Допустим, у вас есть такой код:

<h1><a href="<mt:EntryPermalink/>"><mt:EntryTitle/></a></h1>

И вы хотите, чтобы из названия записи были вырезаны HTML-теги. Для этого нужно применить глобальный фильтр remove_html:

<h1><a href="<mt:EntryPermalink/>"><mt:EntryTitle remove_html="1"/></a></h1>

Также возможно применение фильтров к целым блокам:

<!-- Сначала необходимо создать блок -->
<mt:SetVarBlock name="markdown_title"># <a href="<mt:EntryPermalink/>"><mt:EntryTitle/></a></mt:SetVarBlock>

<!-- А затем в том месте, где необходимо, вывести его. -->
<mt:GetVar name="markdown_title" filters="markdown_with_smartypants"/>

Список глобальных фильтров

Смотрите на https://movabletype.org/documentation/appendices/modifiers/

Права доступа на публикуемые файлы

Чтобы изменить права доступа (CHMOD) у публикуемых файлов (по умолчанию: 666 — на файлы, 777 — на папки), нужно добавить в mt-config.cgi следующие директивы:

HTMLUmask 0022
UploadUmask 0022
DirUmask 0022

После этого, файлы будут публиковать с правами 644, а папки с 755. Значения можно изменять, выставляя права, которые вам необходимы.

Управление несколькими инсталляциями Movable Type

В некоторых случаях может возникнуть желание или необходимость организовать несколько инсталляций Movable Type с разными конфигурационными файлами. Это позволит:

  • Упростить техническое обслуживание всех инсталляций Movable Type;
  • Ускорит модернизацию системы, так как потребуется обновление файлов только в одном месте;
  • Упростит управление плагинами, так как плагины располагаются в одном месте.

Для этого необходимо для каждой инсталляции Movable Type создать свой собственный mt-config.cgi файл, в котором будут определены специфические свойства конфигурации для каждого экземпляра MT, в том числе информацию о соединении с базой данных.

Как это работает

Movable Type смотрит сначала на конкретные переменные среды и получает инструкции, где искать основной исходный код и файл конфигурации. Эти переменные окружения:

  • MT_HOME — эта переменная должна указывать на каталог, который содержит mt.cgi файл и используется для построения пути поиска до lib и extlib каталогов, которые содержат основной исходный код Movable Type. Если это переменная не определена, то Movable Type будет использовать текущую директорию в качестве значения MT_HOME.
  • MT_CONFIG — эта переменная содержит полный путь к файла конфигурации Movable Type. Если он не определен, то Movable Type будет использовать $MT_HOME/mt-config.cgi как путь к конфигурационному файлу MT.

Важное примечание: Movable Type требует, чтобы все mt-config.cgi файлы, которые используются для различных инсталляций MT, должны быть расположены в одном каталоге. Это связано с тем, что Movable Type выводит определенные пути в файловой системе, основанные на месте расположения mt-config.cgi.

Настройки Apache

Один экземпляр Apache может быть использован для размещения сайтов под неограниченным количеством доменов. Это достигается за счет использования виртуальных хостов Apache (VirtualHosts). Каждый виртуальный хост может иметь свои собственные независимые конфигурации и переменные окружающей среды для обработки веб-запросов и позволяет системным администраторам контролировать каждый домен отдельно.

Пример конфигурации

В следующем примере используются следующие допущения:

  • Movable Type установлен в /var/www/shared/cgi-bin/mt
  • Необходимо настроить два сайта site1.example.com и site2.example.com, используя один MT, но разные базы данных.
  • Эти два веб-сайта имеют свои Movable Type файлы конфигурации. Эти файлы находятся в /var/www/shared/conf/.

В этом примере используется модуль Apache mod_env указывающий на один экземпляр Movable Type, но различные файлы конфигурации для каждого экземпляра сайта.

<VirtualHost *:80>
    ServerName site1.example.com
    SetEnv MT_HOME /var/www/shared/cgi-bin/mt
    SetEnv MT_CONFIG /var/www/shared/conf/site1-mt-config.cgi
    ScriptAlias /cgi-bin/ /var/www/shared/cgi-bin/
    Alias /mt-static/ /var/www/shared/cgi-bin/mt-static/
</VirtualHost>

<VirtualHost *:80>
    ServerName site2.example.com
    SetEnv MT_HOME /var/www/shared/cgi-bin/mt
    SetEnv MT_CONFIG /var/www/shared/conf/site2-mt-config.cgi
    ScriptAlias /cgi-bin/ /var/www/shared/cgi-bin/
    Alias /mt-static/ /var/www/shared/cgi-bin/mt/mt-static/
</VirtualHost>

В приведенном выше примере, доступ до Movable Type можно получить используя следующие URL:

MTHOME

Часто в статьях и описания можно встретить значение MTHOME (или $MTHOME). Это означает путь до вашей установки Movable Type на сервере. Например, если Movable Type установлен в директории /home/username/example.com/cgi-bin/mt, то значение MTHOME — это /home/username/example.com/cgi-bin/mt.

mt-config.cgi

mt-config.cgi — основной конфигурационный файл Movable Type. По умолчанию он содержит только необходимые параметры (параметры соединения с базой данных, параметры почты, путей CGI и статических файлов), но можно переопределить практически любую стандартную конфигурацию, используя специальные директивы. Их полный список можно посмотреть в документации Movable Type: http://www.movabletype.org/documentation/appendices/config-directives/

Плагины Movable Type

Плагины для Movable Type

Плагин — это набор дополнительных скриптов для Movable Type, расширяющих основную функциональность или добавляющих новую.

Большинство из всех существующих плагинов собраны на специальном сайте — plugins.movabletype.org. Перед установкой плагина, обращайте внимание, для какой версии Movable Type он предназначен.

Как устанавливать плагины

Чтобы установить любой плагин, нужно:

  • Скачать его и разархивировать.
  • Из папки plugins необходимо загрузить папку с плагином в папку plugins на сервере.
  • Из папки mt-static/plugins/ необходимо загрузить папку со статическими файлами плагина в директорию со статическими файлами на сервере.

Загрузки плагина на сервер достаточно для его установки, больше ничего делать не нужно. Если плагин не использует базу данных, он будет установлен автоматически. А если использует, то при входе в Movable Type автоматически запустится скрипт обновления, чтобы добавить в базу данных необходимые изменения.

Примечание: обратите внимание, что файлы из папки mt-static необходимо разместить в вашу папку со статическими файлами.

Пример установки плагина (на основе плагина Яндекс.OpenID)

Структура файлов плагина на сервере

Структура стутических файлов плагина на сервере

Плагины CCode и TCode

Для защиты от автоматического спама (рассылаемого при помощи ботов) существует множество инструментов, начиная с привычных картинок с вводов цифр, заканчивая различными сервисами. Но все они, во-первых, неудобны для комментатора (требуют дополнительных действий), а во-вторых — не гарантируют 100% защиты.

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

Одна часть спамбота вылавливает установленные на сайтах формы. Затем эта форма вносится в некую базу - на этом этапе форму может посмотреть человек и определить список обязательных полей. После чего спамбот начинает работать - без всяких посещений страниц, зачем? Делается прямой POST (или GET) запрос к обработчику формы, в котором передаются значения всех обязательных и желательных (например, адрес сайта редко бывает обязательным) полей. Все, собственно. Именно поэтому такими эффективными оказываются плагины типа CCode для Movable Type (кстати, спасибо saahov`у за совет), генерящие уникальный ключ для каждой загрузки формы - они просто в три раза удорожают работу спамбота и делают неэффективной достаточно простую операцию по их обходу. Потому что для каждого постинга через форму с CCode требуется загрузить исходную страницу, достать из нее значение определенного поля и отправить его обработчику. Три операции вместо одной. Дешевле просто выкинуть блог из базы.

TCode работает аналогичным образом, но для трекбэков. Их рекомендуется выключить на системном уровне, а также удалить или переименовать скрипт трекбэков, так как кроме спамеров трекбэками никто не пользуется.

Установка плагина

  • Скачайте плагин с официальной страницы (или с сайта MT.ru). Далее установите его стандартным способом.
  • После этого необходимо добавить небольшой Javascript-код в ваш шаблон Javascript. Для этого скопируйте из файла default_templates/obfuscator.js код и вставьте его в конец вашего Javascript-шаблона.
  • Теперь нужно добавить тег плагин в форму комментирования. Найдите эту форму в ваших шаблонах, она может выглядеть так:
<form method="post" action="<$mt:CGIPath$><$mt:CommentScript$>" name="comments_form" id="comments-form" onsubmit="return mtCommentOnSubmit(this)">
    <input type="hidden" name="static" value="1"/>
    <input type="hidden" name="entry_id" value="<$mt:EntryID$>"/>
    <input type="hidden" name="__lang" value="<$mt:BlogLanguage$>"/>
    <input type="hidden" name="parent_id" value="<$mt:CommentParentID$>" id="comment-parent-id"/>
    <input type="hidden" name="armor" value="1"/>
    <input type="hidden" name="preview" value=""/>
    <input type="hidden" name="sid" value=""/>
    <div id="comments-open-data">
        <div id="comment-form-name">
            <label for="comment-author">Имя</label>
            <input id="comment-author" name="author" size="30" value="" onfocus="mtCommentFormOnFocus()"/>
        </div>
        
<!-- Часть формы вырезана -->
</form>

Вам необходимо добавить после поля <input type="hidden" name="sid" value=""/> тег плагина <mt:EntryCCode/>. Пример:

<form method="post" action="<$mt:CGIPath$><$mt:CommentScript$>" name="comments_form" id="comments-form" onsubmit="return mtCommentOnSubmit(this)">
        <input type="hidden" name="static" value="1"/>
        <input type="hidden" name="entry_id" value="<$mt:EntryID$>"/>
        <input type="hidden" name="__lang" value="<$mt:BlogLanguage$>"/>
        <input type="hidden" name="parent_id" value="<$mt:CommentParentID$>" id="comment-parent-id"/>
        <input type="hidden" name="armor" value="1"/>
        <input type="hidden" name="preview" value=""/>
        <input type="hidden" name="sid" value=""/>
        <mt:EntryCCode/> <!-- Тег плагина -->
        <div id="comments-open-data">
            <div id="comment-form-name">
                <label for="comment-author">Имя</label>
                <input id="comment-author" name="author" size="30" value="" onfocus="mtCommentFormOnFocus()"/>
            </div>
            
<!-- Часть формы вырезана -->
</form>

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

Плагины для подписки на комментарии

Чтобы посетители вашего блога могли подписываться на новые комментарии к записям, которые они прокомментировали, необходимо установить один из двух перечисленных плагинов:

  • MT-Notifier — мощный плагин для различных уведомлений. Позволяет не только подписываться на комментарии, но и на другие обновления. Кроме того, можно управлять подписчиками, добавлять их самостоятельно. Единственный минус плагина — он платный. Для некоммерческих проектов его цена — $24.
  • Comment Subscribe — плагин выполняет одну единственную функцию — подписку на комментарии. Минус плагина: он не позволяет управлять списком подписчиков.

Советы и хитрости

Оптимизация публикации

Прежде чем изучать эту статью, рекомендуется ознакомиться со следующими материалами:

Перевод шаблонов на ручной режим

Большинство индексных шаблонов можно перевести на ручной режим. Тогда публикация будет производиться вручную и нагрузка на сервер при добавлении/изменении контента снизится.

Шаблоны, которые обязательно нужно перевести на ручной режим публикации:

  • Javascript;
  • Таблица стилей (CSS);
  • И все другие статические шаблоны, созданные вами.

Перевод шаблонов в режим очереди публикации

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

Простой пример:

  • У вас есть шаблон индексный шаблон Sitemap, в котором публикуются все записи, страницы и множество других данных. Если в блоге мало контента, то этот процесс не будет заметен. Но, если наоборот, то при каждом добавлении комментария будут ощущаться заметные тормоза.
  • Тоже самое происходит при добавлении комментария и публикации архивных шаблонов. При добавлении комментария публикуется не только страница с записью, но также: страница с категорий, в которой размещена запись; архив по месяцам; и любые другие архивы, в которых присутствует эта запись.

Чтобы перевести шаблон в режим очереди, откройте его, а затем в опциях выберите «С использованием очереди публикации».

Примечание: для корректного использования очереди публикации необходимо настроить скрипт run-periodic-tasks.

Сокращение количества модульных шаблонов

В стандартных шаблонах Movable Type (те, которые создаются при создании блога), присутствуюет множество модульных шаблонов. Например: HTML Head, Боковое меню, Детали комментария, и др. Эти шаблоны включаются в другие с помощью тега <mt:Include module="Имя модульного шаблона"/>.

Можно сократить количество модулей путём размещения их кода сразу же в шаблонах, либо использовать тег <mt:SetVarTemplate>. Пример использования этого тега:

  • Сначала в шаблоне необходимо создать блок с кодом:
    <mt:SetVarTemplate name="VAR_TEMPLATE_NAME">
      Код шаблона
    </mt:SetVarTemplate>
    
  • А затем в нужном месте шаблона вызвать этот код:
    <mt:Var name="VAR_TEMPLATE_NAME"/>
    

Кеширование шаблонов

Кешировать можно модульные шаблоны. Хотя по умолчанию в стандартных шаблонах ни один модуль не использует кеширование. Перед настройкой кеширования шаблонов, нужно зайти в «Параметры -> Публикация» и активировать модуль кеширования.

Примечание: следует учесть, что нельзя кешировать шаблоны, в которых присутствуют изменяющиеся данные, иначе на всех страницах будет один и тот же контент. Например, нельзя кешировать шаблоны «Комментарии» и «Детали комментария», так как в первом случае во всех записях будут комментарии к одной записи, а во втором — в каждой записи все комментарии будут одинаковыми.

Кеширование модульных шаблонов желательно использовать следующим образом:

  • У вас есть индексный шаблон, например, sitemap.xml.
  • Вы можете создать модульный шаблон SitemapModule, который при помощи тега <mt:Include module="SitemapModule"/> включить в индексный шаблон sitemap.xml. И указать для шаблона SitemapModule обновление кеша 1 раз в сутки.
  • После этого индексный желательно перевести в режим очереди публикации. В этом случае нагрузка будет минимальная.

Использование PHP

Как известно, Movable Type позволяет публиковать файлы с любым расширением. Чтобы достичь максимальной производительности, можно «вынести» все неизменямые части шаблонов в индексные шаблоны и публиковать их в ручном режиме. И включать их в остальные шаблоны не с помощью <mt:Include/>, а используя встроенные средства PHP.

Пример:

  • У каждого блога есть навигация, контент в которой одинаковый на всех страницах. Чтобы не публиковать множество файлов при изменении этого контента, достаточно создать индексный шаблон navigation.php, который затем включить в остальные шаблоны:
    <?php
      include ('/home/username/example.com/docs/navigation.php');
    ?>
    

Но можно использовать PHP и при помощи встроенной в MT технологии SSI. Для этого её нужно активировать в «Параметры -> Публикация» — в пункте «Включении на стороне сервера» необходимо выбрать «PHP-включение».

'Пример:'

  • После активации необходимо создать модульный шаблон «NavigationModule» и в необходимом месте шаблона использовать тег <mt:Include/>:
    <mt:Include module="NavigationModule" ssi="php"/>
    

    В этом случае Movable Type сам сгенерирует PHP-файл, который будет располагаться в папке includes_c. Кстати, при использовании этого варианта можно использовать кеширование.

Использование PHP в шаблонах

Включение файлов на лету в публикуемых файлах

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

Как это сказывается на производительности

Представьте, что у вас 200 записей. Вы публикуете их. Данные в записи — это запросы к базе данных. Чем больше запросов — тем больше требуется ресурсов для выполнения задачи. Каждая запись, это (на примере стандартных шаблонов): получение самой записи, комментариев к ней, получение различных модульных шаблонов, получение последних записей, получение тегов для облака, и т.д. Большинство данных можно публиковать только один раз, используя отдельные индексные шаблоны, которые затем на лету включать в опубликованные файлы.

Какие части шаблонов можно вынести в отдельные файлы
  • Шапка
  • Подвал
  • Навигация
  • Различные меню
  • И т.д.
Как это сделать (на примере навигации)

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

  • Создать индексный шаблон, назвав его, к примеру, «Навигация», с именем файла «navigation.php».
  • Скопировать код навигации в этот шаблон.
  • В шаблонах, где раньше находилась навигация, необходимо вместо неё добавить следующий код:
<?php include("/home/username/example.com/navigation.php"); ?>

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

  • И затем опубликовать все шаблоны.

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

То же самое, но с использованием модулей
  • Вместо индексного файла необходимо создать модульный шаблон, например, «Navigation». Добавить в него код навигации.
  • В его опциях указать «Обрабатывать как PHP включение».
  • Затем в шаблонах, где использовалась навигация, добавить следующее:
<mt:Include module="Navigation"/>
  • После этого опубликовать все шаблоны.

Плюс этого метода, что можно указать время кеширования для шаблона «Navigation».

Нормальные адреса у страниц с тегами

При использовании стандартных шаблонов Movable Type URL тегов выглядят следующим образом:

http://example.com/cgi-bin/mt/mt.cgi?mt-search.cgi?blog_id=1&tag=tagname&limit=20

Не очень красивый и запоминающийся адрес, поэтому лучше сделать подобное:

http://example.com/tag/tagname

Как сделать нормальные URL у тегов

  • Для начала нужно выполнить поиск в шаблонах по фразе «TagSearchLink», результат отобразит все шаблоны, в которых есть тег <mt:TagSearchLink/>.
  • Этот тег нужно заменить на следущее:
<mt:BlogURL/>tag/<MTTagName encode_url="1"/>
  • После изменения шаблонов, нужно полностью опубликовать сайт. А также добавить в файл .htaccess следующую строчку:
RewriteEngine on
RewriteRule ^tag/(.*)$ /cgi-bin/mt/mt-search.cgi?blog_id=1&tag=$1&limit=20

Если блоги на разных доменах

Чтобы использовать такой метод для блогов, которые находятся на домене, отличном от домена, на котором находится Movable Type, необходимо добавить в httpd.conf, в VirtualHost домена следующий параметр:

ScriptAlias /cgi-bin/ /home/username/example.com/cgi-bin/

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

После внесения изменений в httpd.conf, необходимо добавить в .htaccess параметры, аналогичные указанным выше.

В каком случае это необходимо

  • По адресу example.com/cgi-bin/mt/ располагается админка.
  • Путь на сервере к этой папке для этого домена — /home/username/example.com/cgi-bin/mt.
  • Второй блог располагается по адресу example.org. Для него стандартное расположение папки cgi-bin будет вида /home/username/example.org/cgi-bin. Поэтому необходимо для домена example.org переназначить расположение папки cgi-bin, чтобы при запросе example.org/cgi-bin/mt/ обрабатывались скрипты из каталога /home/username/example.com/cgi-bin/mt.

Примеры шаблонов

Пример: Навигационная цепочка

Навигационная цепочка вида Категория » Подкатегория. Данное решение нужно вставлять в шаблон страниц.

<mt:HasParentCategory>
    <mt:ParentCategories exclude_current="1">
        <a href="<mt:CategoryArchiveLink/>"><mt:CategoryLabel/></a>
    </mt:ParentCategories>  »
</mt:HasParentCategory>
<mt:ArchiveTitle/> 

Пример: RSS (или Atom) фид через FeedBurner

Для подсчёта количества подписчиков можно использовать FeedBurner. Для этого необходимо изменить путь публикации у стандартного Atom (или RSS) потока и отдавать этот поток FeedBurner. А со старого адреса делать переадресацию на адрес в FeedBurner.

Как переадресовать с текущего RSS-потока на поток в FeedBurner

  • Измените путь публикации для шаблона Atom (Лента последних сообщений или Feed - Recent Entries). Изначально он публикуется по адресу atom.xml, можно публиковать его, например, в папке feedburner/atom.xml.
  • Если в шаблонах встречается тег <$mt:Link template="feed_recent"$>, то необходимо заменить его на подобное: <mt:BlogURL/>atom.xml. Для этого выполните поиск в шаблонах по фразе <$mt:Link template="feed_recent"$> (в нестандартных шаблонах имя шаблона может быть другое), а затем замените эту конструкцию на <mt:BlogURL/>atom.xml.
  • Добавьте в FeedBurner адрес, где теперь публикуется шаблон с фидом. Например: http://example.com/feedburner/atom.xml.
  • После этого создайте на сервере файл .htaccess (если ещё не создан) и добавьте в него следующее:
RewriteEngine On
RewriteRule ^atom\.xml$    http://feeds2.feedburner.com/Имя_вашего_фида

После этого при запросе atom.xml будет срабатывать автоматическая переадресация на поток в FeedBurner.

Пример: Последние записи от автора

Данное решение будет отображать последние 10 статей от каждого автора.

<mt:Authors>
<h1><mt:AuthorName/></h1>
<mt:SetVarBlock name="author"><mt:AuthorName/></mt:SetVarBlock>
<ul>
    <mt:Entries author="$author" lastn="10">
        <li><a href="mt:Permalink"><mt:EntryTitle/></a></li>
    </mt:Entries>
</ul>
</mt:Authors>

Пример: «Пейджинация» на статических страницах

Пейджинация — это разбивка содержимого на отдельные страницы.

Существуют 3 способа сделать пейджинацию:

Пейджинация по датам

Пейджинация по датам — это когда контент отображается за определённый период, но вместо ссылок «предыдущая/следущая страницы выводятся ссылки на предыдущий/следующий период.

Как это сделать

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

(На примере стандартных шаблонов.)

Откройте файл «Список записей» (Entry Listing), найдите в нём код:

<div class="content-nav">
    <MTArchivePrevious>
    <a href="<$MTArchiveLink$>">&laquo; <$MTArchiveTitle$></a> |
    </MTArchivePrevious>
    <a href="<$MTLink template="main_index"$>">Main Index</a> |
    <a href="<$MTLink template="archive_index"$>">Archives</a>
    <MTArchiveNext>
    | <a href="<$MTArchiveLink$>"><$MTArchiveTitle$> &raquo;</a>
    </MTArchiveNext>
</div>

Замените его вот на этот:

<mt:IfArchiveType type="Author">
    <div class="content-nav">
        <mt:ArchiveList archive_type="Author-Monthly" lastn="1">
        <a href="<mt:ArchiveLink/>" id="last-link" title="Сообщения за <mt:ArchiveTitle/>">&laquo; За весь месяц</a>
        </mt:ArchiveList>
    </div>
</mt:IfArchiveType>
<mt:IfArchiveType type="Category">
    <div class="content-nav">
        <mt:ArchiveList archive_type="Category-Monthly" lastn="1">
        <a href="<mt:ArchiveLink/>" id="last-link" title="Сообщения за <mt:ArchiveTitle/>">&laquo; За весь месяц</a>
        </mt:ArchiveList>
    </div>
<mt:Else>
    <div class="content-nav">
        <mt:ArchivePrevious><a href="<mt:ArchiveLink/>">&laquo; <mt:ArchiveTitle/></a> | </mt:ArchivePrevious>
        <a href="<mt:Link template="main_index"/>">Главная страница</a> |
        <a href="<mt:Link template="archive_index"/>">Архивы</a>
        <mt:ArchiveNext> | <a href="<mt:ArchiveLink/>"><mt:ArchiveTitle/> &raquo;</a></mt:ArchiveNext>
    </div>
</mt:IfArchiveType>

Обратите внимание на первые 2 условия: Author и Category. Код сделан таким образом, что будут публиковаться (если эти архивы активны) ссылки на архивы категорий и авторов по месяцам. Если у вас не публикуются архивы категорий и авторов по месяцам, но, к примеру, публикуются архивы авторов и категорий по дням/неделям/годам, то необходимо изменить атрибут тега ArchiveList — archive_type.

В шаблоне главной страницы найдите код:

<div class="content-nav">
    <a href="<$MTLink template="archive_index"$>">Archives</a>
</div>

И замените его на этот:

<mt:IfArchiveTypeEnabled archive_type="Monthly">
    <div class="content-nav">
    <mt:ArchiveList archive_type="Monthly" lastn="1">
        <a href="<mt:ArchiveLink/>" id="last-link" title="Сообщения за <mt:ArchiveTitle/>">&laquo; За весь месяц</a>
    </mt:ArchiveList>
    </div>
</mt:IfArchiveTypeEnabled>

После этих действий опубликуйте блог полностью. Ещё один вариант пейджинации по датам, предложенный участником форума liketts.

Пейджинация с помощью плагинов

На данный момент самым актуальным плагином для пейджинации является разработка от Марка Кэри — Pagination. Плагин делаёт пейджинацию следующего вида: index.html?page=1, index.html?page=2, index.html?page=3, и т.д. Минус плагина: для страниц пейджинации используется динамическая публикация через Perl.

Пример: Пейджинация на PHP и Smarty

Рассмотрим, как можно при помощи PHP и пары шаблонов сделать динамическую пейджинацию. Для работы этого примера понадобится создать 2 шаблона: один индексный, один модульный.

1. Создание модульного шаблона

Его нужно создать в первую очередь, так как в последствии будет использован ID этого шаблона. Содержание этого шаблона можно скопировать из стандартного шаблона главной страницы:

<mt:SetVar name="body_class" value="mt-main-index">
<mt:SetVar name="main_template" value="1">
<mt:SetVar name="main_index" value="1">
<mt:SetVar name="sidebar" value="1">
<mt:SetVarBlock name="title"><mt:BlogName encode_html="1"/></mt:SetVarBlock>

<mt:Include module="Header"/>

<mt:Entries>
    <mt:EntryTrackbackData/>
    <mt:Include module="Entry Summary"/>
</mt:Entries>

<div class="content-nav">
    <a href="<mt:Link template="archive_index"/>">Archives</a>
</div>

<mt:Include module="Footer"/>

В этот шаблон необходимо добавить данные для пейджинации:

<mt:SetVar name="body_class" value="mt-main-index">
<mt:SetVar name="main_template" value="1">
<mt:SetVar name="main_index" value="1">
<mt:SetVar name="sidebar" value="1">
<mt:SetVarBlock name="title"><mt:BlogName encode_html="1"/></mt:SetVarBlock>

<mt:Include module="Header"/>

<mt:Entries lastn="10" offset="`$smarty.request.offset`">
    <mt:EntryTrackbackData/>
    <mt:Include module="Entry Summary"/>
</mt:Entries>

<div class="content-nav">
    {{capture assign="count"}}<mt:BlogEntryCount/>{{/capture}}

    {{if $smarty.request.offset < $count-10}}
        <a href="?offset={{$smarty.request.offset+10}}">Следующая страница</a>
    {{/if}}

    {{if $smarty.request.offset > 0}}
        <a href="?offset={{math equation="max(x-10,0)" x=$smarty.request.offset}}">Предыдущая страница</a>
    {{/if}}
</div>

<mt:Include module="Footer"/>

2. Создание индексного шаблона

После создания модульного шаблона, нужно узнать его ID. Сделать это можно, посмотрев при редактировании адрес: example.com/cgi-bin/mt/mt.cgi?__mode=view&_type=template&id=123&blog_id=1. Где значение параметра id и есть ID шаблона (в данном примере 123).

Далее необходимо создать индексный шаблон, опубликовав его под именем entries.php (имя может быть и другое, главное — чтобы расширение было .php). Содержимое шаблона (не забудьте указать в нём ID своего модульного шаблона):

<?php

// Подключение PHP-библиотеки MT
include('<mt:CGIServerPath/>/php/mt.php');

// Определение ID блога и загрузка конфига
$mt = new MT(<mt:BlogID/>, '<mt:ConfigFile/>'); // Для MT 4
//$mt = MT::get_instance(<mt:BlogID/>, '<mt:ConfigFile/>'); // Для MT 5

// Подкючение шаблона по ID
$mt->display("mt:123");

?>

3. Ссылка с главной страницы

Теперь, чтобы пользователи могли «листать» записи вашего блога, необходимо разместить ссылку с главной страницы. Для этого откройте шаблон главной страницы, найдите блок

<div class="content-nav">
    <a href="<mt:Link template="archive_index"/>">Archives</a>
</div>

и замените на

<source lang="html4strict">
<div class="content-nav">
    <a href="<mt:BlogURL/>entries.php?offset=10">Предыдущие записи</a>
</div>

Пример: Создание RSS-потока

Лента с последними сообщениями уже используется в MT 4.1, но в Atom-формате. Используя следующий пример, вы можете создать ленту с последними сообщениями в формате RSS.

Создание шаблона

  1. Создайте новый Индексный шаблон.
  2. Назовите его RSS Feed и укажите имя публикуемого файла rss.xml.
  3. Содержание шаблона:
<mt:HTTPContentType type="application/rss+xml"/>
<?xml version="1.0" encoding="<mt:PublishCharset/>"?>
<rss version="2.0">
    <channel>
        <title><mt:BlogName remove_html="1" encode_xml="1"/></title>
        <link><mt:BlogURL/></link>
        <description><mt:BlogDescription remove_html="1" encode_xml="1"/></description>
        <language><mt:BlogLanguage ietf="1"/></language>
        <copyright>Copyright <mt:Date format="%Y"/></copyright>
        <lastBuildDate><mt:Entries lastn="1"><mt:EntryDate format_name="rfc822"/></mt:Entries></lastBuildDate>
        <generator>Movable Type <mt:Version/></generator>
        <mt:Entries lastn="15">
            <item>
                <title><mt:EntryTitle remove_html="1" encode_xml="1"/></title>
                <description><mt:EntryBody encode_xml="1"/></description>
                <link><mt:EntryPermalink encode_xml="1"/></link>
                <guid><mt:EntryPermalink encode_xml="1"/></guid>
                <mt:EntryCategories>
                    <category domain="<mt:BlogURL/>"><mt:CategoryLabel remove_html="1" encode_xml="1"/></category>
                </mt:EntryCategories>
                <mt:EntryTags>
                    <category domain="<mt:BlogURL/>"><mt:TagName remove_html="1" encode_xml="1"/></category>
                </mt:EntryTags>
                <pubDate><mt:EntryDate format_name="rfc822"/></pubDate>
            </item>
        </mt:Entries>
    </channel>
</rss>

Теперь осталось опубликовать шаблон и добавить (или заменить, если подобный тег присутствует) ссылку на RSS в шаблон. Приведённый пример добавляется между тегами head, чтобы браузеры могли самостоятельно обнаруживать поток. В стандартных шаблонах теги head находятся либо в шаблоне «Шапка сайта», либо в «HTML head»

<link rel="alternate" type="application/rss+xml" title="RSS" href="<mt:Link template="RSS Feed"/>"/>

Полезная информация

Полезные команды Linux

Для некоторых задач Movable Type могут потребоваться навыки работы с командной строкой Linux. Это очень просто, достаточно знать основные команды, которые понимает Linux-сервер.

Взаимодействие с сервером происходит по протоколу SSH, поэтому, если вы работаете в ОС Windows, вам необходимо будет установить программу для работы с SSH (в Linux и Mac OS ничего дополнительно устанавливать не требуется):

  • PuTTY (русскоязычный сайт PuTTY) — бесплатная программа для работы с SSH, не требующая установки.
  • ExtraPuTTY — расширенная версия PuTTY.
  • SecureCRT — мощная программа для работы по SSH (поддерживающая многие другие протоколы).

Архивация/Разархивация

Создание tar.gz-архива:

tar czf имя-архива.tar.gz имя-папки

Распаковка tar.gz-архива:

tar xzf имя-архива.tar.gz

Создание tar.bz2-архива:

tar cjf имя-архива.tar.bz2 имя-папки

Распаковка tar.bz2-архива:

tar xjf имя-архива.tar.bz2

Распаковка rar-архива:

unrar x имя-архива.rar

Работа с файлами и папками

Список файлов и папок:

ls

Полный список файлов и папок, включая скрытые:

ls -a

Сменить директорию:

cd имя-каталога

Примеры использования:

  • cd / — переход в корневую директорию диска;
  • cd .. — переход на один уровень выше;
  • cd ../.. — переход на 2 уровня вверх;
  • cd $HOME — переход в домашнюю директорию (достаточно набрать просто cd);
  • cd /home/имя-папки/имя-подпапки — переход в указанную папку.

Создание папки:

mkdir имя-папки

Удаление файла или папки:

rm имя-файла

Удаление файлов и папок рекурсивно (включая все вложенные файлы и папки):

rm -r имя-папки

Скопировать файл:

cp имя-файла имя-копии-файла

Скопировать папку:

cp -r имя-папки имя-копии-папки

Переименовать файл:

mv имя-файла новое-имя-файла

Если «новое-имя-файла» — это папка, то файл будет перемещён в эту папку.

Создать символическую ссылку:

ln -s имя-файла имя-ссылки

Изменение прав доступа (CHMOD) у файла или папки:

chmod 755 имя-папки

Изменение прав доступа (CHMOD) у всех файлов рекурсивно:

find . -type f | xargs chmod 644

Изменение прав доступа (CHMOD) у всех файлов с определённым расширением рекурсивно:

find . -name '*.cgi' -type f | xargs chmod 755

Изменение прав доступа (CHMOD) у папок рекурсивно:

find . -type d | xargs chmod 755

Бэкап базы данных

Бекап базы данных с помощью mysqldump (команда должна быть в одной сроке):

mysqldump --user=ПОЛЬЗОВАТЕЛЬ --host=ХОСТ -acnqQ --single-transaction --default-character-set=КОДИРОВКА --password=ПАРОЛЬ -- БАЗА_ДАННЫХ | sed "s#^CREATE TABLE#\0 IF NOT EXISTS# ; s#^INSERT INTO#REPLACE INTO#" | gzip -qf9c > /home/username/путь-где-будут-храниться-бэкапы/имя-базы-данных-`date +%Y-%m-%d`.sql.gz

Пример кодировки: cp1251, utf8.

Работа с Perl

Выполнение Perl-скрипта:

perl имя-скрипта.cgi

Установка модулей Perl через CPAN:

install ИМЯ::МОДУЛЯ

Перед выполнением этой команды необходимо войти в CPAN, выполнив следующую команду:

perl -MCPAN -e "shell"

Другие полезные команды

Закачать файл на сервер:

wget http://example.com/filename.zip

Список процессов:

top

Список процессов определённого пользователя:

top -u имя-пользователя

Текущая дата:

date

Сменить пароль:

passwd

Сменить пароль у определённого пользователя:

passwd имя-пользователя

Показать информацию и ядре:

uname -a

Показать информацию о CPU:

cat /proc/cpuinfo

Показать информацию о памяти:

cat /proc/meminfo

Показать информацию об использовании дисков:

df

Перезапустить какой-нибудь сервис:

/etc/init.d/имя-сервиса команда

Например: /etc/init.d/apache2 restart

Информация об использовании памяти и swap:

free

Возможное расположение приложения:

whereis имя-приложения

Например: whereis apache2

Перезагрузить сервер (полная перезагрузка):

reboot

Клавиатурные сочетания

  • Ctrl+C — завершить текущую команду.
  • Ctrl+D — разлогиниться (аналогично exit).
  • Ctrl+W — удалить одно слово в текущей строке.
  • Ctrl+U — удалить строку.
  • !! — повторить последнюю команду.
  • exit — разлогиниться.

Другие списки Linux-команд