Суть такая, пишу cms, не могу понять как подключить отложено стили для компонента, то есть, имею шаблон и css, он подключается в теле, не могу подключить стили для него. Примерно хочу реализовать как у bitrix.
Антон Р., если знаете, как работает bitrix, то там подключаются компоненты, у компонента есть свой шаблон и стили, но т.к. стили шаблонные, я не могу запихнуть их жестко в head. То есть нужно до отдачи клиенту добавить стили в head шаблона
Все делается на PHP, использовать JS не нужно, да и смысла нет, так как браузер начнет загрузку стилей еще до выполнения JS кода.
Если хотите как в битрикс - То создаете класс отвечающий за сбор стилей и вывод их в нужном месте в шаблон (В битрикс это класс Asset). Конечно весь вывод должен буферизироваться и вставляться в шаблон в самом конце перед отдачей пользователю.
Я правильно понял, что у вас страница собирается из компонентов, каждый компонент имеет свой файл стилей?
Может, можно сделать примерно так: при генерации страницы читаем все компоненты, из них вытаскиваем css, объединяем в один, затем начинаем строить страницу из компонентов и на этом этапе вставляем ссылку на css в head.
Хотя я бы лучше на sass сделал стили к компонентам (один компонент - один файл sass), и затем просто скомпилил в один. Так оно и проще, и быстрее работать будет (имхо).
PHP - серверный язык. Если вам нужно, чтобы стили подключались уже после генерации html-страницы - используйте javascript. Но если честно, я не представляю, зачем это нужно. Если подробнее объясните, что вы хотите, то отвечу точнее.
Если работали с bitrix, то там есть подключение компонентов, а также их стилей естественно, я не понимаю как реализовать. То есть от нужного шаблона подключить стили, до отдачи страницы клиенту
Ответ плохой и не правильный, при таком сценарии толку не будет. Так как когда браузер получит html код, он определит все линки на css и js и начнет их загружать параллельно. Соответственно перестановка линка на css после начала выполнения js минимум ни чего не даст, в худшем случае заставит браузер еще раз обработать этот css из кеша.
Евгений, а я и не говорю, что мой ответ - это хорошее решение. Я сам никгда бы так не сделал. Но если у вас есть другой вариант, как отложенно подключить стили - напишите. А конкретной сути вопроса я всё равно так и не понял.