@andpuxa
Разработка и продвижение сайтов

Условие в PHP на основе CSS класса страницы — как можно реализовать?

Подскажите пожалуйста - как можно реализовать в PHP условие на основе CSS класса (body class) страницы?
Т.е. имеем 2 страницы с выводом содержимого на основе одного php файла. Класс у страниц разный. Хотелось бы, что бы на странице с одним классом выводилось одно содержимое, с другим классом - другое.

Это CMS Joomla, если что. Вывод тегов.
  • Вопрос задан
  • 348 просмотров
Пригласить эксперта
Ответы на вопрос 2
KodyWiremane
@KodyWiremane
Пони, Debian, LEMP, LAN, любитель
Проблема в том, что наиболее естественно class body извлекается уже на клиенте, в JavaScript. На стороне сервера, как правильно заметили, лучше всего использовать наиболее естественные для PHP пути: ориентироваться на значение переменной, URL запроса и т. п. Тем не менее, костыль возможен:

function get_body_classes_from_file(string $filename) {

    $page = file_get_contents($filename);

    if (!preg_match('#<body[^>]*>#', $page, $matches)) return [];
    $body = $matches[0];

    if (!preg_match('#(?<=\sclass=")[^"]*(?=")#', $body, $matches)) return [];
    $class_prop = $matches[0];

    $classes = array_filter(explode(' ', $class_prop));
    return $classes;

}


Включить это в PHP внутри HTML-страницы, далее

$body_classes = get_body_classes_from_file(__FILE__);
if (in_array('markerClass1', $body_classes)) {
    // вывод для первой страницы
} elseif (in_array('markerClass2', $body_classes)) {
    // вывод для второй страницы
} else {
    // дефолт или ошибки разработчика, если нет обоих классов
}
Ответ написан
Комментировать
mahmudchon
@mahmudchon
Ответ уже в вашем описании задачи. По сути, если не вникать, просто используя оператор сравнения if сравнивайте содержимое, например, переменой, которая отвечает за вывод информации о классе и на основе этих данных выводите нужную информацию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы