Текст книги "CMS Drupal: система управления содержимым сайта"
Автор книги: Виктор Ромашов
Жанр: Программы, Компьютеры
сообщить о неприемлемом содержимом
Текущая страница: 16 (всего у книги 19 страниц)
Данный файл содержит следующие переменные:
▪ $title – заголовок публикации;
▪ $content – полное содержимое публикации либо только ее анонс;
▪ $date – дата создания публикации;
▪ $links – ссылки для публикации (например, Читать далее, Добавить комментарий);
▪ $name – имя автора публикации;
▪ $terms – список терминов таксономии, присвоенных публикации;
▪ $teaser – если значение параметра равно True, то в переменной $content содержится анонс публикации;
▪ $promote – если значение равно True, то анонс публикации будет отображаться на главной странице;
▪ $sticky – если значение параметра равно True, то анонс публикации будет закрепляться вверху всех списков;
▪ $status – если значение равно True, то данная публикация уже есть на сайте;
▪ $comment – может принимать следующие значения:
– 0 – запретить комментирование публикации;
– 1 – разрешить посетителям только просматривать комментарии к публикации;
– 2 – разрешить посетителям просматривать комментарии и добавлять свои комментарии.
▪ $readmore – если значение параметра равно True, то анонс публикации не включает в себя весь материал публикации;
▪ $is_admin – если значение равно True, то текущий пользователь является администратором сайта;
▪ а также переменные $picture, $node_url, $submitted, $is_front.
Кроме того, в сценарии может использоваться объект $node. Имена и назначение многих свойств этого объекта совпадают с именами и назначением переменных, описанных выше. Просмотреть перечень всех свойств объекта $node можно с помощью строки кода вида print_r($node);.
В качестве примера посмотрите на код файла node.tpl.php стандартной темы PushButton.
<div class="node<?php if ($sticky) { print «sticky»; }?><?php if
(!$status) { print «node-unpublished»; }?>">
<?php print $picture?>
<?php if ($page == 0):?>
<h1 class="title"><a href="<?php print $node_url?>"><?php print $title
?></a></h1>
<?php endif;?>
<span class="submitted"><?php print $submitted?></span>
<span class="taxonomy"><?php print $terms?></span>
<div class="content"><?php print $content?></div>
<?php if ($links):?>
<div class="links">» <?php print $links?></div>
<?php endif;?>
</div>
Каталог color
Для того чтобы стандартный модуль Color мог изменять цветовую гамму, используемую вашей темой оформления, в папке темы оформления необходимо создать вложенную папку color, а в ней, в свою очередь, должны находиться файл color.inc и другие дополнительные файлы.
Создание подтемы
Ранее мы рассмотрели самый сложный способ создания темы оформления – изменение или создание файлов шаблонов. Если же вам нужно просто изменить цвета, размеры и, возможно, расположение определенных элементов существующей темы оформления, то можно поступить намного проще.
Достаточно создать подтему внутри понравившейся темы оформления. Другими словами, создайте каталог внутри каталога понравившейся темы оформления – имя созданного вами каталога и будет именем новой темы оформления. Поместите внутрь созданного каталога файл logo.png со своим логотипом, а также скопируйте в созданный каталог файл style.css, расположенный в папке с понравившейся вам темой. Вам осталось только отредактировать для себя содержимое файла style.css, который вы скопировали в созданный каталог. И, конечно, включить созданную тему оформления на странице Управление → Конструкция сайта → Темы оформления.
Что делать после создания темы оформления
Когда тема оформления создана, следует тщательно проверить ее работоспособность – как минимум неделю использовать ее на своем сайте. Кроме того, проверьте, как в вашей теме отображаются различные блоки CMS Drupal, смогут ли работать стандартные и сторонние модули при использовании вашей темы оформления и т. д.
Движки тем
Каждая тема оформления работает на основе определенного движка (engines) темы. Движок темы – это набор базовых функций, которые предоставляют основные возможности по использованию и управлению темой оформления. С точки зрения администратора сайта, от движка темы зависит, какие настройки по управлению темами оформления будет поддерживать CMS Drupal.
По умолчанию CMS Drupal пятой и шестой версии использует движок тем под названием PHPTAL theme engine (http://drupal.org/project/phptal). Вы сможете найти файлы данного движка в каталоге themesenginesphptemplate вашего сайта.
Помимо данного движка тем, существуют и другие. Вы можете попробовать воспользоваться ими, если вам недостаточно тех возможностей по управлению темами оформления, которые предоставляет стандартный движок CMS Drupal. Наиболее популярны следующие движки тем:
▪ Awesomengine: http://drupal.org/project/awesomengine;
▪ Hexagon: http://drupal.org/project/hexagon;
▪ Smarty theme engine: http://drupal.org/project/smarty;
▪ XTemplate: http://drupal.org/project/xtemplate;
▪ Zengine: http://drupal.org/project/zengine.
Перед подключением одного из перечисленных движков не забудьте убедиться, что полюбившаяся вам тема оформления поддерживает использование данного движка.
Стандартные переменные и объекты CMS DrupalВы уже знаете о стандартных переменных CMS Drupal. Многие из них мы уже рассмотрели: $status, $comment, $sticky и т. д.
Однако, помимо стандартных переменных, существуют и стандартные объекты CMS Drupal. Собственно, я уже упоминал о них. Например, $user, $node, $block.
При программировании под CMS Drupal лучше использовать именно стандартные объекты, поскольку стандартные переменные – это просто копии содержимого этих объектов, которые созданы для удобства использования. Причем стандартные переменные доступны не везде, тогда как доступ к стандартным объектам можно получить отовсюду: в тексте блока, в тексте новой публикации, в TPL-файлах и т. д.
Единственное, что нужно сделать, перед тем как использовать стандартные объекты, – не забыть подключить объект к текущей области видимости, то есть ввести следующий код: global объект;. Например, global $user;.
Стандартные объекты имеют свойства, то есть это не что иное, как аналоги наших стандартных переменных. Чтобы получить доступ к свойству, нужно воспользоваться подобной записью: объект->свойство. Например, строка $user->name возвращает имя текущего пользователя.
Далее мы рассмотрим свойства основных объектов CMS Drupal, а также список мест, откуда можно получить доступ к этим свойствам и объектам.
Объект $user
Этот объект позволяет получить сведения о текущем (который в данный момент просматривает страницу) зарегистрированном пользователе. Если текущий пользователь не зарегистрирован, то объект $user не существует. Использовать объект $user нужно следующим образом:
global $user;
if (isset($user->uid)) {
//что-то делаем
}
Объект $user можно использовать в следующих местах:
▪ в тексте блока;
▪ в тексте публикации;
▪ в файле page.tpl.php;
▪ в файле node.tpl.php;
▪ в файле block.tpl.php;
▪ в файле comment.tpl.php.
В табл. 3.1 перечислены основные свойства рассматриваемого объекта.
Таблица 3.1. Свойства объекта $user
Объект $node
Хранит сведения о публикации, на странице которой сейчас находится пользователь. Объект $node можно использовать в следующих местах:
▪ в файлеnode.tpl.php;
▪ в файле comment.tpl.php.
В табл. 3.2 перечислены основные свойства рассматриваемого объекта.
Таблица 3.2. Свойства объекта Snode
Объект $block
Хранит сведения о конкретном блоке.
Данный объект можно использовать в файле block.tpl.php.
В табл. 3.3 перечислены основные свойства рассматриваемого объекта.
Таблица 3.3. Свойства объекта $block
Объект $comment
Содержит сведения о конкретном комментарии к публикации. Данный объект можно использовать в файле comment.tpl.php.
В табл. 3.4 перечислены основные свойства рассматриваемого объекта.
Таблица 3.4. Свойства объекта Scomment
Стандартные функции
Помимо переменных, в файлах *.tpl.php можно использовать стандартные функции CMS Drupal. Таких функций очень много. Рассмотрим некоторые из них.
▪ format_interval(секунды) – преобразует количество секунд в формат вида часы минуты секунды. Например, команда format_interval(444); вернет строку 7 минут 2 4 секунды.
▪ user_is_anonymous() – возвращает true, если текущий пользователь анонимен.
▪ user_is_blocked(логин) – возвращает true, если пользователь с данным логином заблокирован.
▪ comment num all (идентификатор публикации) – возвращает количество комментариев к данной публикации.
▪ drupal_get_title() – возвращает заголовок текущей страницы.
▪ drupal_is_front_page() – возвращает true, если текущая страница является главной страницей сайта.
▪ arg() – возвращает массив, содержащий путь к текущей странице. Например, если вы находитесь на странице http://neodn.com/node/add, то функция вернет массив, первый элемент которого будет содержать значение node, а второй – значение add.
Дополнительные программы для CMS Drupal
Следует признать, что CMS Drupal предоставляет огромные возможности по созданию, настройке и расширению вашего сайта, но только не по администрированию базы данных, сайта и т. д. В административных вопросах, которые не касаются конкретно работы вашего сайта, приходится использовать программы сторонних разработчиков. Например, программы, входящие в стандартный пакет базы данных MySQL. Это оказалось не очень удобно, поэтому в скором времени после выпуска CMS Drupal на свет появился набор дополнительных программ, предназначенных для ее настройки и поддержки в работоспособном состоянии. Набор таких программ постоянно расширяется, и найти его можно на официальном сайте CMS Drupal (http://www.drupal.org), а также на некоторых сайтах сторонних разработчиков.
Например, обратите внимание на программу Sypex Dumper Lite, скачать которую можно с сайта http://sypex.net/.
Данная программа (точнее, сценарий) предназначена для экспорта/импорта всего содержимого базы данных, используемой CMS Drupal. Для того чтобы воспользоваться данным сценарием, скачайте его, если нужно – разархивируйте, после чего перенесите файл dumper.php в каталог на вашем сервере (рекомендуется поместить файл в подкаталог sitessypexdumper каталога вашего сайта, предварительно его создав). После этого на папку, в которую вы поместили файл dumper.php, установите права доступа 777.
Примечание
По умолчанию сценарий dumper.php настроен на работу с базами данных, расположенными на хосте localhost. Если на вашем хостинге используется другой хост, содержащий базу данных, то перед размещением сценария dumper.php на сервере следует отредактировать его содержимое. Хост, к которому подключается сценарий dumper.php, указывается в 34 строке сценария.
Выполнив все подготовительные действия, откройте в браузере файл dumper.php на сайте (обратитесь к нему по протоколу HTTP, например, http://<ваш_сайт>/sites/sypexdumper/dumper.php). Отобразится страница с предложением ввести имя базы данных и пароль для подключения к ней. После подключения к базе данных вы сможете экспортировать и импортировать ее содержимое – для этого предназначены специальные ссылки.
Структура CMS Drupal
С каждой главой вы узнаете о CMS Drupal все больше и больше. Теперь пришла пора посягнуть на «святая святых» этой системы управления содержимым – рассмотреть назначение файлов самой CMS Drupal. Тех файлов, которые вы переместили на свой хостинг, чтобы развернуть там эту систему.
Прежде всего взглянем на файлы (табл. 3.5), которые находятся в корне каталога вашего сайта. Если вы работаете в операционной системе Windows, то для открытия данных файлов лучше использовать программу Microsoft Word. Все дело в том, что все файлы CMS Drupal используют формат содержимого, ориентированный на операционную систему UNIX, а в нем используются знаки абзаца, которые отличаются от знаков, используемых в Windows. Из-за этого при попытке открытия файлов в простых текстовых редакторах наподобие Блокнота (notepad.exe) вы потеряете переходы на новую строку, и все содержимое файла превратится в одну сплошную кашу. В отличие от Блокнота, Microsoft Word (а также стандартная программа Windows wordpad.exe) «понимает» как формат Windows, так и формат UNIX, поэтому содержимое файлов будет открываться в первозданном виде, и просматривать их будет намного удобнее. Правда, редактировать их в данной программе не всегда удобно, так как после редактирования и сохранения файлы будут автоматически преобразованы в формат Windows, что может самым неожиданным образом сказаться на их работе на вашем хостинге.
Таблица 3.5. Файлы, которые можно найти в каталоге CMS Drupal
Помимо файлов, в каталоге вашего сайта хранится набор вложенных папок.
▪ files – здесь содержатся все файлы, загруженные посетителями на ваш сайт. Кроме того, в данном каталоге могут храниться персонализированные файлы настроек CMS Drupal и отдельных модулей (файлы настроек, содержимое которых было изменено в соответствии с потребностями вашего сайта). Например, измененный JS-файл, измененные файлы каскадных таблиц стилей используемой вами темы оформления, файлы. htaccess, robots.txt и др.
▪ includes – включает в себя файлы с расширением INC, содержащие PHP-код ядра CMS Drupal.
▪ misc – дополнительные файлы, необходимые для корректного отображения вашего сайта: изображения, JS– и CSS-файлы.
▪ modules – содержит модули, которые входят в состав CMS Drupal. Вы можете поместить в этот каталог и новые модули, однако правильнее для этого использовать каталог sitesallmodules.
▪ profiles – включает в себя профили установки CMS Drupal. Профиль установки – это текстовый файл с расширением PROFILE, который определяет, какие модули будут включены после инсталляции CMS Drupal и какие настройки будут присвоены этим модулям. Каждый файл профиля установки должен находиться в отдельной папке, расположенной в каталоге profiles.
Вы можете создать свой профиль установки. Для этого можно использовать модули Install Profile API and Profile Wizard (http://drupal.org/project/instalLprofile_api) или Profile Generator (http://drupal.org/project/profile_generator).
▪ scripts – набор сценариев (файлы с расширением SH), предназначенных для удаленного обслуживания CMS Drupal с помощью SSH-подключения. Не все хостинги разрешают клиентам подключаться с помощью SSH.
Например, в данном каталоге можно найти следующие сценарии:
– cron-lynx.sh – выполняет запуск планировщика заданий cron (для корректной работы сценария в его коде нужно изменить адрес хоста для подключения);
– drupal.sh – реализует доступ к командной строке для управления вашим хостингом (если хостинг работает на основе Linux);
▪ sites – в данном каталоге содержатся файлы настроек CMS Drupal, а также модули и темы оформления, которые вы добавили после установки системы.
▪ themes – содержит темы оформления, которые входят в состав CMS Drupal. Вы можете поместить в этот каталог и новые темы оформления, однако правильнее для этого использовать каталог sitesallthemes.
Некоторые файлы играют особую роль в работе администратора сайта, построенного на основе CMS Drupal. Сейчас мы рассмотрим их более подробно.
Файл settings.php каталога sitesdefaultОбратите внимание на файл settings.php, расположенный в каталоге sitesdefault или каталоге вида sitesимя_вашего_сайта, если на хостинге используется режим мультисайтинга.
Данный файл хранит многие настройки CMS Drupal, доступ к которым вы не сможете получить ни на одной странице вашего сайта. Это внутренние настройки CMS Drupal, изменять которые стоит лишь в том случае, если CMS Drupal работает не так, как хотелось бы. Сейчас мы рассмотрим назначение некоторых из этих настроек – возможно, в будущем вам пригодятся эти знания.
Внимание!
«По умолчанию файл settings.php доступен только для чтения, и чтобы получить возможность его редактирования, вы должны сменить права доступа к файлу. * Не забудьте после редактирования файла снова присвоить ему доступ только для чтения.
Открывать и редактировать файл settings.php можно в обычном текстовом редакторе типа notepad.exe, но, если есть возможность, лучше для этих целей воспользоваться специальными редакторами для создания PHP-кода. Примером может служить программа phpDesigner 2007 Professional (http://www.mpsoftware.org/).
Настройки в файле settings.php могут храниться в двух видах – либо в виде значений переменных, либо в виде параметра, значение которого изменяется функцией ini_set (параметр, значение). Настройки, изменяемые с помощью переменных, являются внутренними настройками CMS Drupal. Настройки, изменяемые функцией ini_set, являются настройками PHP, которые хранятся в файле php.ini. Иными словами, вы можете изменять их как с помощью файла settings.php, так и непосредственно в файле php.ini. Кроме того, вы должны понимать, что с помощью функции ini_set можно изменять любые параметры файла php.ini, а не только те, которые по умолчанию изменяются файлом settings.php. Далее мы еще воспользуемся этой возможностью.
Ниже будут приводиться полные строки определенных настроек, чтобы было легче найти их в файле settings.php.
Переменные
$db_url = 'тип_базы_данных://логин@хост/имя_базы_данных';. С помощью данной строки определяются многие параметры подключения к базе данных, которые мы указывали на этапе установки CMS Drupal. Вы можете изменить отдельные части значения переменной $db_url, чтобы поменять соответствующие настройки.
Чтобы лучше понять формат значения данной переменной, разберем небольшой пример: $db_url = 'mysqli://root@localhost/bd6;. Итак, значение переменной $db_url из представленного выше примера состоит из следующих частей:
▪ mysqli – говорит о том, что CMS Drupal должна использовать базу данных типа mysqli (также можно указать использование баз данных типа mysql или pgsql);
▪ root – логин, который будет использоваться CMS Drupal для подключения к базе данных;
▪ localhost – IP-адрес или URL-адрес компьютера, на котором находится база данных и к которому будет подключаться CMS Drupal для работы с базой данных;
▪ bd6 – имя базы данных, используемой CMS Drupal для хранения своих таблиц.
$db_prefix = 'префикс';. Определяет префикс, который CMS Drupal будет добавлять ко всем таблицам, создаваемым ею в базе данных. Чтобы CMS Drupal не добавляла никаких префиксов, данной переменной нужно присвоить пустое значение: $db prefix =;.
Внимание!
«В названии префикса нельзя использовать точку, так как в системных запросах с помощью точки выполняется определение базы данных, к которой будет выполняться обращение.
Помимо общего префикса, вы можете указать в этой переменной сразу несколько различных префиксов для отдельных таблиц. В этом случае данную переменную нужно преобразовать в массив:
$db_prefix = array (
'имя_таблицы' => 'префикс',
'имя_таблицы' => 'префикс',
);
Возможность использования разных префиксов для таблиц позволяет создавать сайты, работающие на одной системе CMS Drupal (так называемый «мультисайтинг») и использующие одни и те же таблицы (точнее, использующие некоторые таблицы совместно, а остальные таблицы раздельно).
$update_free_access = FALSE|TRUE;. Данная переменная доступна только в шестой версии CMS Drupal. Она позволяет запретить доступ к сценарию update.php (используется для обновления CMS Drupal до более новой версии). Если при попытке использования сценария update.php вам сообщается об отсутствии прав доступа, то присвойте переменной $update_free_access значение true. После того как обновление CMS Drupal будет завершено, не забудьте снова присвоить данной переменной значение false.
$base_url = 'URL-адрес';. С помощью данной переменной можно определить адрес, который будет подставляться ко всем адресам URL на вашем сайте (перед каждым адресом ссылки). Например, если данной переменной присвоено значение http://www.example.com, то ссылки вида /test/admin.php будут автоматически преобразовываться в ссылки вида http://www.example.com/test/admin.php. Фактически, данная переменная определяет адрес, который будет присваиваться тегу <base> на каждой странице вашего сайта.
По умолчанию данная переменная в файле settings.php закомментирована, поэтому если вы измените ее значение, то также не забудьте раскомментировать переменную (удалить символ # перед ее именем).
$cookie_domain = 'URL-адрес';. По умолчанию данная переменная закомментирована. Например, $cookie_domain = 'example.com';.
$conf = array('site_name' => 'имя_сайта', 'theme_default' => 'имя_темы', 'anonymous' => 'логин_анонимного_пользователя',);. По умолчанию данный массив закомментирован (в шестой версии CMS Drupal данный массив может состоять из большего количества элементов).
Функции ini_set
ini_set('arg_separator.output', &);. Позволяет указать разделитель, который будет использоваться в адресах URL при передаче нескольких аргументов методом GET. Например, в адресе http://xxx.com.ua?a=3&b=2 разделителем является символ & (он применяется по умолчанию). Символ разделяет аргументы a и b.
ini_set('magic_quotes_runtime', 0);. Определяет, будет ли разрешено использование «магических кавычек» в функциях, взаимодействующих с базами данных (то есть будет ли автоматически применяться функция stripslashes/addslashes для всех данных, получаемых или передаваемых в базу данных).
ini_set('magic_quotes_sybase', 0);. Указывает, будет ли для автоматически вставляемых кавычек («магических кавычек») использоваться Sybase-стиль. Иными словами, если значение параметра равно 1, то вместо символа будет использоваться символ.
ini_set('session.cache_expire', 200000);. Определяет время жизни (в минутах) для кэшированных страниц текущего сеанса работы посетителя с вашим сайтом.
ini_set('session.cache_limiter', 'none');. Задает аспект кэширования HTTP и может принимать следующие значения: nocache, private, public.
ini_set('session.cookie_lifetime', 2000000);. Определяет продолжительность действия cookie-набора идентификатора сеанса. Если значение параметра равно 0, то cookie будет использоваться до тех пор, пока не будет закрыт браузер.
ini_set('session.gc_maxlifetime', 200000);. Задает интервал, по истечении которого сохраненные данные сеанса будут автоматически удаляться.
ini_set('session.save_handler', 'user');. Определяет место хранения данных сеанса (например, база данных, память (значение параметра mm), файл (значение files) или пользовательская функция, самостоятельно обрабатывающая данные сеанса (значение user)).
ini_set('session.use_only_cookies', 1);. Указывает, будет ли веб-сервер для хранения идентификатора сеанса использовать только cookies. Если значение параметра равно 0, то для хранения идентификатора сеанса можно использовать не только cookies, но и сам адрес (добавлять идентификатор сеанса в конец адреса).
ini_set('session.use_trans_sid', 0);. Определяет, будет ли использоваться «переходящий» SID (его использование позволяет устанавливать сессии с клиентом, у которого отключена возможность использования cookies).
ini_set('url_rewriter.tags',);. Определяет список тегов, которые будут перезаписываться для включения идентификатора сеанса при использовании прозрачной поддержки sid (session id). По умолчанию значение параметра равно a=href, area=href,frame=src,input=src,form=fakeentry.
Другие параметры из файла php.ini
Выше мы рассмотрели параметры файла php.ini, которые по умолчанию изменяются с помощью функции ini_set в файле settings.php, а также значения, которые присваиваются этим параметрам (кстати, для пятой и шестой версии CMS Drupal эти значения одинаковы). Однако, помимо рассмотренных параметров, всегда можно изменить и другие параметры файла php.ini. Достаточно лишь записать в файл settings.php строку вида ini_set (параметр', значение);. Сейчас дополнительно рассмотрим наиболее интересные параметры файла php.ini, редактировать которые приходится чаще всего.
▪ memory_limit – определяет максимальный объем оперативной памяти, которая будет доступна CMS Drupal (и, по совместительству, максимальный размер файла, с которым может работать CMS Drupal). По умолчанию предоставляется 8 Мбайт ОЗУ, что достаточно для сайтов малого и среднего размера. Однако при разработке сложного сайта с использованием множества модулей CMS Drupal вы можете столкнуться с проблемой, когда лимит памяти будет исчерпан. В этом случае воспользуйтесь данным параметром, чтобы увеличить количество доступной оперативной памяти. Минимальный рекомендуемый размер памяти для CMS Drupal – 32 Мбайт. Иными словами, в файле settings.php нужно создать строку вида ini_set('memory_limit', 32M');.
Примечание
Проверить, хватает ли оперативной памяти для работы CMS Drupal и модулей, можно с помощью раздела Управление → Конструкция сайта → Модули. Дело в том, что эта страница считается самой «тяжелой», так как при ее открытии загружаются не только включенные вами, но и все остальные модули, которые находятся в списке данного раздела.
▪ max_input_time – указывает максимальное время загрузки сценария (PHP-файл) в секундах. По умолчанию сценарий не может загружаться дольше 60 секунд.
▪ max_execution_time – определяет максимальное время выполнения сценария (в секундах). По умолчанию любой сценарий (PHP-файл) не может выполняться дольше 30 секунд. По истечении указанного времени выполнение сценария будет остановлено.
Правообладателям!
Это произведение, предположительно, находится в статусе 'public domain'. Если это не так и размещение материала нарушает чьи-либо права, то сообщите нам об этом.