Перенос css в файл page.tpl.php

Главные вкладки

Аватар пользователя B.X B.X 15 сентября 2006 в 17:08

Имеет ли смысл переносить данные из файла темы css прямо в page.tpl.php, поскольку иногда сталкиваюсь с тем, что сначала загружается страница, а потом css-файл и видно белый фон сине-фиолетовые ссылки (и тд. вы тоже наверное стаким сталкивались на некоторых сайтах)...
или есть решения более грамотные в техническом плане?

Комментарии

Аватар пользователя Shedko Shedko 15 сентября 2006 в 17:26

Пусть выскажут свое мнение опытные мастера

Но, ведь если CSS файл размером 12 Кб, то если он отдельным файлом, то он грузится только один раз, а потом уж берется из кэша, а если стили прописаны в самой странице, то размер каждой страницы увеличится на эти 12 Кб.

Ну, а теперь надеюсь услышать мнения экспертов.

Аватар пользователя clubwave.ru clubwave.ru 15 сентября 2006 в 17:31

У меня CSS больше 20 кб.. если вставить в страницу это также плохо скажется на индексации поисковиком..

Советы... купить хороший хостинг и интернет... а вообще есть способ инклудить этот css но как мне кажется получится тоже самое что и просто вставить этот текст в хеадер.. Мне лично пофигу Smile

Аватар пользователя B.X B.X 15 сентября 2006 в 17:58

ну я смотрел методы вставки css в файл: import, rel... но они именно вставляют с опозданием... как сделать так, чтобы они компановались вместе? через include? css прописать как php, а в page.tpl включить <?php print include_css(); ?>...

Аватар пользователя Shedko Shedko 15 сентября 2006 в 18:10

В частности подсмотрел как подключается один из моих css-файлов в шаблон страницы.


import url(<?php print $base_path . $directory .'/style2.css'; ?>);



А описанная проблемма, с загрузкой CSS файла только после загрузки страницы, встречалась только в Opere, в остальных браузерах все по порядку грузится.


А так как пытаюсь сделать сайт "всеядным", то скорее всего надо просто разобраться как заставить Opera грузить этот CSS файл одним из первых, и так есть эксперты по Опере ?

Аватар пользователя B.X B.X 15 сентября 2006 в 18:20

так я Оперой и пользуюсь... да, про import url я знаю... но как его включать, например через php include, чтобы уж работало стопроцентно и везде?
надо наверное в сам css-файл вставить код функции, а в page.tpl эту функцию вызвать... тогда будет стопроцентный include, а не импорт...

Аватар пользователя Shedko Shedko 15 сентября 2006 в 20:44

Да весьма полезная информация, никогда не задумывался о таком эффекте, но это все равно не решит эту проблему, так как и так все стандартные CSS в друпале подключаются так как и рекомендуется в этой статье, т.е. вот выдержка из моего стиля:

<style type="text/css" media="all">[user=import]import[/user] "/modules/quote/quote.css";</style>
<style type="text/css" media="all">[user=import]import[/user] "/themes/luna/style.css";</style>  <script type="text/javascript"> </script>
</head>



Проверил на других браузерах (т.е. специально ограничил скорость загрузки, чтоб видеть как и что грузится), у них тоже загрузка идет очень похоже, но только Опера сначала грузит саму страницу, а затем все остальное, а остальные браузеры, как мне кажется, пытаются загружать в несколько потоков все сразу.

Т.е. как результат, я понимаю единственный выход - маленькие странички, чтобы пользователь просто не замечал эту страницу к которой еще не применен CSS. т.е. чтоб не успевал заметить.

Аватар пользователя B.X B.X 16 сентября 2006 в 0:04

мне помог второй вариант: <script type="text/javascript"> </script>
первый вариант: link rel - не помог...
спасибо за ссылку... теперь в page.tpl ничего менять не надо...

Аватар пользователя rgb rgb 16 сентября 2006 в 0:44

Браузеры грузят страницы приблизительно одинаково. HTML в любом случае грузится первым (ссылка-то сначала есть только на него!), а затем анализируется, ищутся ссылки, прописанные внутри страницы и идет подгрузка остальных файлов (CSS, скрипты, графика...)

В Опере можно видеть страницу без стилей, оттого, что она [Опера] старается отрисовывать сразу по мере того, как грузит HTML (как-никак, "самый быстрый браузер в мире!" ;-)), а стили применяет потом - как загрузит их. Остальные же сначала предпочитают загрузить, посчитать всё, потом выводить.

Лис, вот, кажется грузит сначала HEAD у HTML-ля, выкусывает из него линки на стили, а потом, действительно, грузит паралельно (или что-то в том духе...) и, соответственно, пытается рисовать всё сразу так, как задумывалось.

По-поводу "отделять или не отделять" правильно было замечено выше: одним из основных плюсов отделения является уменьшение трафика и увеличение скорости отрисовки следующей страницы (CSS-то грузить уже не надо).

Аватар пользователя B.X B.X 16 сентября 2006 в 4:53

если стоит php_flag zlib.output_compression On
то файлы css и так сжимаются и уже не важно где они находятся, в отдельном файле или нет...
а как было указано по ссылке, такое случается не только у Оперы...

Аватар пользователя B.X B.X 21 сентября 2006 в 21:06

хм... после нескольких дней тестирования понял, что проблема остаётся, при падении скорости (если что-то закачиваю параллельно, например) сразу становится видно при загрузке сайта то же самое: белый фон, синие ссылки и тд...
как же это убрать? неужели всё-таки придётся в page.tpl добавлять весь css? или может не весь, а часть? хм... надо погуглить...

Аватар пользователя dyp@drupal.org dyp@drupal.org 28 сентября 2006 в 22:51

это проблема браузера а не друпала. в друпале вообще к этому (к проблемам браузеров) относяться индеферентно как я понял. помоему там все на FF сидят и делают вид что ишака в принципе в природе не сужествует. по крайней мере у меня такое впечатление сложилось

Аватар пользователя Natalie Natalie 28 сентября 2006 в 23:37

Это похоже на правду. Даже на официальном сайте имеются несколько довольно известных глюков в IE, которые за пару лет никто не исправил
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.

Аватар пользователя B.X B.X 28 сентября 2006 в 23:37

так в том-то и дело, что у меня Опера... и только в ней такие проблемы с отображением Друпала (не только на моём сайте)...

Аватар пользователя clubwave.ru clubwave.ru 29 сентября 2006 в 13:13

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

Аватар пользователя B.X B.X 29 сентября 2006 в 14:02

а в чём? в том как файл подключается? или что?
или в технологии? хех, так может в шаблонах всё хранить? и проще и наверняка?

Аватар пользователя B.X B.X 2 октября 2006 в 1:56

заметил, что Drupal.org всегда открывается нормально... решил посмотреть как у него там всё записано, оказывается всё просто:

<link rel="stylesheet" href="/themes/bluebeach/print.css" media="print" />
  <script type="text/javascript"> </script>

[b]Добавлено:[/b]
попробовал у себя также... не получилось...
хм, странно, почему там работает, а у меня нет?

Аватар пользователя Shedko Shedko 2 октября 2006 в 5:32

А у тебя случайно этот CSS не огромный, может дело в этом ?

Просто попробуй те стили, которые необходимо загрузить в первую очередь вынести в отдельный маленький CSS и первым грузить его. Т.е. стили фона и т.д.

Аватар пользователя B.X B.X 3 октября 2006 в 3:23

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

Аватар пользователя Shedko Shedko 3 октября 2006 в 4:41



Ну положим и не огромный, а даже весьма скромный, особенно учитывая что странички с microsoft[.]com тянут порой с собой до 50 Кб CSS + столько же js-скриптов.


Но ведь сам говоришь, что заметно в основном только когда весь канал забит и на загрузку странички остается совсем мало, т.е. остается предположим 1-2 Кб/с и это при 7кб = около 4 секунд + еще сама страница с графикой = а кто его знает еще сколько

Тогда просто вставим одной из первой строчек в "node.tpl.php" загрузку CSS файла, в котором определены только цвет фонов и шрифта основных элементов, т.е. например:

body { margin: 10px 0px 10px 0px; color: #000000; background: #FFFFFF; font: 11px 'Lucida Grande', Verdana, LucidaGrande, Lucida, Helvetica, Arial, sans-serif; }
a:link { color: #006600; text-decoration: none; }
a:visited { color: #228F3D; text-decoration: none; }
a:hover, a:active { color: #006600; text-decoration: underline; }
td { font: 11px 'Lucida Grande', LucidaGrande, Lucida, Helvetica, Arial, sans-serif; }

И пусть этот кусок грузится первым отдельным CSS, а остальные уже потом. Сейчас глянул в свою тему и насчитал там 5 основных css (сайта, форума, коментариев, цитат, служебных страниц) + несколько которые используются оочень редко на некоторых страницах, замерил общий объем = 25 Кб неслабо, но ведь это все грузится только на тех страницах, где они нужны.

На страницах форума через "node-forum.tpl.php" подгружаю forum.css, для коментариев через comment.tpl.php - comments.css, quote.css - подключает сам модуль цитат, когда в ноде можно создавать их и т.д.


А в самом node.tpl.php подлючен cамый мелкий из них style2.css - где только 2 Кб.

Аватар пользователя rgb rgb 3 октября 2006 в 17:49

Может не стоит всё же именно в node.tpl.php таблицы стилей подключать? Как-то не совсем правильным мне это представляется...

Аватар пользователя B.X B.X 3 октября 2006 в 20:49

[b]"Тогда просто вставим одной из первой строчек в “node.tpl.php” загрузку CSS файла"[/b]
...
почему в node.tpl, а не в page.tpl?
...
[b]"Может не стоит всё же именно в node.tpl.php таблицы стилей подключать?"[/b]
...
я тоже думаю, что лучше в page.tpl
...
только, как сделать так, чтобы ссылки потом различались? а то ведь стили распложенные прямо в файле имеют приоритет над подключаемыми...

Аватар пользователя Shedko Shedko 3 октября 2006 в 21:30


ссори, насчет node.tpl.php - действительно опечатался, так как печатал по памяти ( а ночью она у меня плохая Smile )

только, как сделать так, чтобы ссылки потом различались? а то ведь стили распложенные прямо в файле имеют приоритет над подключаемыми…



Да но ведь стиль фона и основных шрифтов в дизайне сайта общий ?