Drupal → Функции для работы с файловыми путями. Drupal структура папок


Структура папок для нескольких сайтов Drupal Drupal Ask

Чтобы продлить ответ @ Pierre.Vriens, вы можете добавить правило перезаписи, чтобы сделать URL-адреса более приятными

допущения

  1. у вас созданы общедоступные файлы
  2. у вас есть нормализация URL (либо символические ссылки в каталоге файлов, либо 301) RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /sites/%{HTTP_HOST}/files/$1 [L]

в вашем хосте

http://www.example.com/filename.pdf

и переписать его на

http://www.example.com/sites/www.example.com/files/filename.pdf

что я имею в виду по нормализации URL? ну, если вы можете получить example.com – тогда вы получите 404 – так как папка в каталоге сайтов – http://www.example.com

простым решением является использование символических ссылок в каталоге сайтов или использование 301 переадресации

использовать символические ссылки, предположим, что у вас есть

sites/www.example.com

вы могли бы создать символическую ссылку на него следующим образом

ln -s www.example.com example.com

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

sites/example.com

в папку http://www.example.com. это означает, что и http://www.example.com, и example.com будут найдены, когда выполняется правило перезаписи

Не создавайте такую ​​папку в корневой папке Drupal. Но вместо этого создайте подпапку xxx в обоих этих поддиректорах:

Таким образом, 2 папки sites/mydomain/xxx и sites/anotherdomain/xxx наверняка не будут разделены между этими двумя сайтами в рамках многосайтовой конструкции.

drupal.wordpressask.com

Расположение файлов - CMS Drupal 7 РУКОВОДСТВО ПО РАЗРАБОТКЕ СИСТЕМЫ УПРАВЛЕНИЯ ВЕБ-САЙТОМ

Знание структуры каталогов, создаваемой при стандартной установке Drupal, позволит усвоить несколько важных правил. В частности, вы будете знать, где должны размещаться загруженные модули и темы и как использовать различные профили инсталляции Drupal. Стандартная структура каталогов Drupal показана на рис. 1.4.

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

Другие файлы, которые здесь не перечислены — это файлы документации.

 

books-cms.clan.su

Расположение файлов в Drupal 7

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

Если у вас есть, что дополнить - пишите в коментах, будем только рады!

drupalfly.ru

Drupal: создание темы Drupal 7

Общие принципы

Прежде чем начинать создание темы Drupal 7 необходимо четко понимать внутренние механизмы и устройство системы темизации Drupal. Начнем разбираться с понимания файловой структуры устройства темы.

Тема Drupal 7 представляет собой структурированный набор файлов, на основании которых формируется пользовательское представление страницы. Так же существует возможность создавать под-темы (sub-themes) на базе существующих тем оформления без внесения существенных изменений в последние.

Общая структура файлов темы Drupal 7

Тема должна содержать как минимум один .info файл. Однако, в большинстве случаев, при создании самостоятельных тем или под-тем нужно использовать и другие файлы. Приведенная ниже диаграмма иллюстрирует перечень файлов, которые используются при создании темы Drupal 7.

создание темы Drupal 7 - обзор структуры файлов

Разберем назначение файлов.

.info (обязательный)

Начинать создание темы Drupal 7 следует с описания параметров в файле .info. В этом файле задаются основные параметры темы:

Внутренний идентификатор темы совпадает с именем этого файла. Например, если файл имеет имя “drop.info”, то Drupal будет идентифицировать тему оформления как “drop”. При именовании тем и файлов .info допускается использовать латинские буквы, цифры и знаки подчеркивания.

Файлы шаблонов используются для определения разметки отдельных HTML элементов страниц и PHP переменных, которые используются для вывода информации. В отдельных ситуациях файлы могут возвращать результаты и других типов, например xml rss.

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

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

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

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

template.php

Все функции, отвечающие за встроенную логику, обработку данных и управление отображением темы содержаться в файле template.php. Этот файл не является обязательным, однако размещение функций предварительной обработки данных в файл template.php позволяет создавать более элегантные и компактные, а главное производительные файлы шаблонов “.tpl.php”.

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

Файл template.php должен начинаться с открывающего PHP тэга “<?php”. Закрывающий тэг не нужен, и рекомендуется его не ставить.

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

Для создания под-темы достаточно в ее .info файле указать идентификатор родительской темы оформления. Под-тема может использовать в качестве родительской темы другую под-тему. В Drupal не установлено жестких лимитов на наследование тем.

Другие ресурсы

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

Любые пользовательские темы следует устанавливать в каталог “sites/all/themes” с целью отделить их от файлов ядра. Если вы планируете запустить несколько сайтов на одном ядре Drupal, можно сделать, чтоб тема была доступна только для определенного сайта. Подробнее можно прочитать в руководстве по многосайтовой установке.

Похожие записи

www.msav.ru

Drupal: Функции для работы с файловыми путями

drupal_basename($uri, $suffix = NULL) — возвращает имя файла. Это аналог PHP функции basename() за исключением того, что поддерживает stream wrappers и имена файлов с не US-ASCII символами.

drupal_basename('sites/default/files/test.jpg'); // test.jpg drupal_basename('public://test.jpg'); // test.jpg drupal_basename('/drupal/sites/default/files/test.jpg'); // test.jpg

 

drupal_dirname($uri) — возвращает директорию файла. Это аналог PHP функции dirname() за исключением того, что поддерживает stream wrappers.

drupal_dirname('sites/default/files/test.jpg'); // sites/default/files drupal_dirname('public://test.jpg'); // public:// drupal_dirname('/drupal/sites/default/files/test.jpg'); // /drupal/sites/default/files

 

drupal_realpath($uri) — возвращает абсолютный путь к файлу. Может работать с stream wrappers. Возвращает FALSE если файла не существует. Не рекомендуется к использованию.

drupal_realpath('sites/default/files/test.jpg'); // /drupal/sites/default/files/test.jpg drupal_realpath('public://test.jpg'); // /drupal/sites/default/files/test.jpg drupal_realpath('/drupal/sites/default/files/test.jpg'); // /drupal/sites/default/files/test.jpg

 

file_build_uri($path) — добавляет к пути файла дефолтный протокол (public://).

file_build_uri('test.jpg'); // public://test.jpg

 

file_create_filename($basename, $directory) — возвращает полный путь для будущего файла с именем $basename в директории $directory. Если файл с таким именем существует, то к имени файла добавляется порядковый номер. Поддерживает stream wrappers.

// если файл test.jpg не существует в указанной директории file_create_filename('test.jpg', 'sites/default/files'); // sites/default/files/test.jpg file_create_filename('test.jpg', 'public://'); // public://test.jpg file_create_filename('test.jpg', '/drupal/sites/default/files/'); // /drupal/sites/default/files/test.jpg   // если файл test.jpg существует в указанной директории file_create_filename('test.jpg', 'sites/default/files'); // sites/default/files/test_0.jpg file_create_filename('test.jpg', 'public://'); // public://test_0.jpg file_create_filename('test.jpg', '/drupal/sites/default/files/'); // /drupal/sites/default/files/test_0.jpg

 

file_create_url($uri) — возвращает URL файла. Поддерживает stream wrappers. Не поддерживает абсолютные пути к файлу.

file_create_url('sites/default/files/test.jpg'); // http://example.com/sites/default/files/test.jpg file_create_url('public://test.jpg'); // http://example.com/sites/default/files/test.jpg file_create_url('/drupal/sites/default/files/test.jpg'); // /drupal/sites/default/files/test.jpg

 

file_destination($destination, $replace) — возвращает путь к существующему файлу в зависимости от значения $replace. Если файла $destination не существует, то функция возвратит то, что передано первым аргументом.

file_destination('sites/default/files/test.jpg', FILE_EXISTS_REPLACE)); // sites/default/files/test.jpg file_destination('sites/default/files/test.jpg', FILE_EXISTS_RENAME)); // sites/default/files/test_0.jpg file_destination('sites/default/files/test.jpg', FILE_EXISTS_ERROR)); // FALSE file_destination('public://test.jpg', FILE_EXISTS_REPLACE)); // public://test.jpg file_destination('public://test.jpg', FILE_EXISTS_RENAME)); // public://test_0.jpg file_destination('public://test.jpg', FILE_EXISTS_ERROR)); // FALSE file_destination('/drupal/sites/default/files/test.jpg', FILE_EXISTS_REPLACE)); // /drupal/sites/default/files/test.jpg file_destination('/drupal/sites/default/files/test.jpg', FILE_EXISTS_RENAME)); // /drupal/sites/default/files/test_0.jpg file_destination('/drupal/sites/default/files/test.jpg', FILE_EXISTS_ERROR)); // FALSE

 

file_directory_temp() — возвращает путь к временной директории, указанной на странице admin/config/media/file-system. Не рекомендуется использовать.

file_directory_temp(); // /tmp

 

file_munge_filename($filename, $extensions, $alerts = TRUE) — если файл имеет двойное расширение, например file.php.jpg, то функция добавит нижнее подчёркивание к первому расширению, во избежание взлома при криво настроенном апаче.

file_munge_filename('sites/default/files/exploit.php.pps', ''); // sites/default/files/exploit.php_.pps file_munge_filename('public://exploit.php.pps', ''); // public://exploit.php_.pps file_munge_filename('/drupal/sites/default/files/exploit.php.pps', ''); // drupal/sites/default/files/exploit.php_.pps

 

file_unmunge_filename($filename) — отменяет эффект от функции file_munge_filename().

file_unmunge_filename('sites/default/files/exploit.php_.pps'); // sites/default/files/exploit.php.pps file_unmunge_filename('public://exploit.php_.pps'); // public://exploit.php.pps file_unmunge_filename('/drupal/sites/default/files/exploit.php_.pps'); // drupal/sites/default/files/exploit.php.pps

 

file_stream_wrapper_uri_normalize($uri) — нормализует URI файла: удаляет завершающий слэш из имени директории и исправляет тройной слэш в протоколе.

file_stream_wrapper_uri_normalize('sites/all/files/'); // sites/all/files file_stream_wrapper_uri_normalize('public:///test.jpg'); // public://test.jpg

 

file_uri_scheme($uri) — возвращает протокол из URI.

file_uri_scheme('public://test.jpg'); // public file_uri_scheme('temporary://'); // temporary

 

file_uri_target($uri) — возвращает часть пути без протокола.

file_uri_target('public://test.jpg'); // test.jpg file_uri_target('temporary://test.jpg'); // test.jpg file_uri_target('sites/default/files/test.jpg'); // FALSE

 

file_valid_uri($uri) — возвращает TRUE если в $uri валидный Drupal URI.

file_valid_uri('public://test.jpg'); // TRUE file_valid_uri('foo://test.jpg'); // FALSE file_valid_uri('sites/default/files/test.jpg'); // FALSE Написанное актуально для Drupal 7 Похожие записи

xandeadx.ru

Права на файлы и папки Drupal 7

Очень не плохой скрипт был дан в комментарии... https://www.drupal.org/node/244924#comment-6600078Изменил и доработал его под себя:

#!/bin/bash# Script made by Alex Belyj, [email protected] read -n 1 -p "Ну я начну разруливать права а Вы пока чайку попейте, хорошо? (y/[a]): " AMSURE [ "$AMSURE" = "y" ] || exitecho "" 1>&2echo "Начинаю изменение прав..."echo "Устанавливаю владельца www-data для всех папок и файлов"chown -R www-data:www-data './'echo "Выставляю права 755 для всех папок" find './' -type d -exec chmod 755 {} \;echo "Выставляю права 644 для всех файлов" find './' -type f -exec chmod 644 {} \;echo "Выставляю права 440 для .htaccess"chmod 440 './.htaccess'echo "Выставляю права 775 для sites"chmod 775 './sites'echo "Выставляю права 775 для sites/default"chmod 755 './sites/default'echo "Выставляю права 775 для sites/default/files"chmod 775 './sites/default/files'echo "Корректирую права g+w для поддеррикторий sites/default/files"chmod g+w -R './sites/default/files'echo "Выставляю права 440 для sites/default/files/.htaccess"chmod 440 './sites/default/files/.htaccess'echo "Выставляю права 440 для sites/default/settings.php"chmod 440 './sites/default/settings.php'echo "Выставляю права 440 для sites/default/default.settings.php"chmod 440 './sites/default/default.settings.php'echo "Выставляю права 775 для sites/all/themes"chmod 755 -R './sites/all/themes'echo "Выставляю права 775 для sites/all/modules"chmod 755 -R './sites/all/modules'echo "Выставляю права 775 для sites/all/libraries"chmod 755 -R './sites/all/libraries'echo "Изменение прав закончил! Убедись, что всё верно..."

1. Скопируйте код скрипта и сохраните под названием "permissions.sh" в папке для локальных скриптов Bash. Соблюдайте кодировку UTF-8 (для нормального отображения кириллических символов в комментариях echo командной строки) и UNIX формат окончания строк (иначе получите /R в конце каждой строки):

nano /usr/local/bin/permissions.sh

2. Сделайте скрипт исполняемым:

chmod a+x /usr/local/bin/permissions.sh

3. Перейдите в корень вашего сайта:

4. Выполните скрипт и согласитесь с началом выполнения:

PS: Если у вас "чистый" Drupal, то некоторые папки, например libraries или files, ещё могут быть не созданы. Так же если вы используете папку tmp вашей ОС, то в вашем Drupal её не будет. В этом случае выведется ошибка, что файла или папки не существует - это нормально. Рекомендую пользоваться скриптом на финальных этапах разработки или при переносе на хостинг, когда вся структура файлов и папок уже создана.PSS: Работа скрипта многократно проверена на Drupal 7 сайтах в ОС Debian 7 Wheezy.

UPD 2015.03.04: В скрипт вначале добавлена проверка на выполнение, при случайном запуске будет возможность отмены. Изменен алгоритм запуска скрипта. К сообщению прикреплён файл "permissions.zip" с вложенным скриптом.

drupal.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта