Идентификация каждой страницы с помощью тегов тела и CSS
Если вы создаете большой веб-сайт, скорее всего, у вас есть отличная небольшая таблица стилей CSS, связанная с каждым документом, который управляет всеми страницами. Но что делать, если вы хотите, чтобы одна из страниц была совершенно другой? Вы, конечно, можете войти в свой код и объявить отдельные идентификаторы и классы для определенных элементов, но я использую более простой подход.
В основе этого лежит использование PHP-кода для определения каталога просматриваемой страницы, а также самого имени страницы. Я покажу вам код через секунду, но предположим, что у вас есть сайт социальной сети, и вы храните свою систему обмена сообщениями (исходящие, входящие, новое сообщение и т. Д.) В папке с именем «messaging». В этом случае вы можете захватить имя каталога и страницы и автоматически назначить их как идентификатор и класс тегу body, так что для почтового ящика это будет выглядеть так: <body class=»messaging» id=»inbox»>.
пример кода
Это упростит добавление новых правил в вашу таблицу стилей, поскольку вы можете ссылаться на целые документы в каталоге, используя «body.messaging» и вы можете ссылаться на определенные страницы, используя «body # inbox» . Теперь вы можете использовать один и тот же файл CSS для изменения внешнего вида только одной страницы без необходимости постоянно добавлять новые классы и идентификаторы. Так как насчет кода для захвата каталога и страницы? Давайте взглянем!
Первым делом определимся со страницей. Для этого воспользуемся «$ _SERVER» суперглобальная переменная, в которой хранится много ценной информации о просматриваемой странице, IP, просматривающем страницу, и так далее. Вот код как есть, с объяснением позже.
страница функций () { $ page = substr (strrchr ($ _ SERVER [‘PHP_SELF’], ‘/’), 1, -4); вернуть страницу $; }
Как видите, это функция, потому что я часто использую ее на всем сайте, а не только для этой цели. «$ _SERVER [‘PHP_SELF’]» вернет путь к файлу с именем файла из вашего корневого каталога, поэтому он будет выглядеть примерно так: «/каталог/subdirectory/file.php» или если файл находится в корневом каталоге, он будет просто «/file.php» . Чтобы получить только имя файла, мы хотим отрубить все биты перед косой чертой (и саму косую черту), а также отрубить расширение файла.
Как видите, первое, что я сделал, это отрубил все до последней косой черты, используя «strrchr ()» который возвращает часть строки после последнего вхождения указанной подстроки. Тем не менее, последняя косая черта все еще остается, но это не проблема, мы можем избавиться от нее и от части «.php» за один раз.
Это делается с помощью «substr ()» . Функция принимает три аргумента, строку, с которой мы хотим работать, и два целых числа. Первое целое число указывает функции начать с символа 1 (это означает, что все, что до этого будет отрублено, в данном случае символ 0, который является косой чертой), а затем вернуть все до -4-го символа с конца. Это означает, что с конца упадут четыре символа.
Теперь переменная «$ page» содержит только читаемую часть имени файла, которая будет «входящие» или «индекс», без косой черты или расширения. Вы также можете создать это как переменную без использования функции. Причина, по которой я использую функцию, заключается в том, что у меня обычно есть дополнительный код, который позволяет мне сразу отображать функцию по умолчанию, но также при необходимости сохранять ее как переменную.
Теперь давайте посмотрим на определение каталога. Мы могли бы использовать тот же подход, что и раньше, но отрубить разные части, но в PHP уже есть функция, которая облегчит нашу жизнь, давайте посмотрим на код:
функция thedir () { $ dir = substr (strrchr (getcwd (), ‘/’), 1); вернуть $ dir; }
С помощью «getcwd ()» мы можем получить текущий рабочий каталог. Это будет в виде «/ каталог / подкаталог» , поэтому все, что нам нужно сделать, это вернуть все, что находится после последней косой черты, и отрубить последнюю косую черту. Мы используем ту же технику, что и раньше, поэтому теперь у нас также есть наш каталог. После этого все, что вам нужно сделать, это изменить заголовок, который должен быть в файле PHP, чтобы тег body выглядел следующим образом (вызывая функции как имена класса и идентификатора):
<body id=»<?php echo page() ?> class=»<?php echo $thedir ?>»»>
Есть и другие способы сделать это, некоторые из них могут быть проще или сложнее, это больше похоже на доказательство точки зрения, но его можно полностью использовать, и я использую его модифицированную версию на всех своих сайтах. Это не слишком много дополнительного кода, и он сделает ваш сайт лучше структурированным и его будет легче изменять.
Помните, что «getcwd ()» может дать вам странные результаты, если вы изменили текущий рабочий каталог где-то в коде. В этом случае вы можете использовать модифицированную версию кода «получения страницы» или взглянуть на суперглобальный раздел сервера в руководстве по PHP для получения дополнительной помощи.