Как добиться чистого HTML-кода?

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

Аватар пользователя E.Wolf E.Wolf 29 июля 2014 в 1:12

Доброго времени суток уважаемые!

Учусь делать собственные темы для Drupal 7. Столкнулся со следующим вопросом: как добиться полного контроля над HTML-кодом? На прилагаемом скриншоте, мы видим множество файлов, подключаемых по умолчанию. Для пользователей, имеющих доступ к панели управления сайтом, список подключаемых скриптов меня в принципе не очень интересует, но для НЕ авторизованных пользователей, данный список хотелось бы сократить до минимума, в крайнем случае, оставить только подключение дефолтной JQuery (из комплекта Drupal) и подключить CSS/JS самой темы.

В какую копать, как правильно поотключать всё не относящиеся к тебе JS/CSS и пр. файлы?

В целом, хотелось бы добиться возможности создавать полностью свою тему, которая бы содержала только нужные мне классы/скрипты/css/заголовки/теги и всё прочее, что Drupal 7 по умолчанию включает в тему.

Возможно есть какая-то готовая, максимально пустая тема, в которой всё это "добро" отключено по умолчанию, или же подобного эффекта можно добиться подключением/отключением/настройкой каких либо модулей?

P.S. Я понимаю, что RDF-информация и всё прочее, что Drupal включает в содержимое страницы - крайне полезная информация, но хотелось бы начинать работу с того, что бы включать нужное, вместо отключения не нужного.

ВложениеРазмер
Иконка изображения 20140728191646.png85.6 КБ

Комментарии

Аватар пользователя E.Wolf E.Wolf 29 июля 2014 в 1:30

"DD 85" wrote:
Выйти из учётной записи пробовали?

Да, это список со "второго браузера", где пользователь НЕ авторизован.

Аватар пользователя E.Wolf E.Wolf 29 июля 2014 в 1:27

Возможно, это имеет какое-то значение...

  • Данный "набор" может незначительно изменяться в зависимости от выбранной темы (скорее всего, изменяется список файлов подключаемых самой темой)
  • Перепробовал несколько "базовых" ("чистых") тем, например "Zen" и ей подобные, ситуация особо не изменилась
  • Пробовал разные профили Drupal, в т.ч. "Стандартный", "Минмальный", на ситуацию это особо не повлияло
  • Тестировал на Drupal 7.30
Аватар пользователя DD 85 DD 85 29 июля 2014 в 1:40

Попробуйте выйти во всех браузерах и очистить кэш браузера. Выводятся только те стили и скрипты, которые необходимы конкретному пользователю для работы с конкретной страницей.
Как вариант включите "Оптимизация пропускной способности" на странице /admin/config/development/performance

Аватар пользователя whiesam whiesam 29 июля 2014 в 1:47

Чо за хардкорный перфекционизм? Чем Вам помешали js и css от модулей. Отключите и кое-что на сайте работать не будет. Тем более можно сжать все эти файлы кешем, их станет меньше.

Аватар пользователя drupby drupby 29 июля 2014 в 2:02

css системные позволяют отключать темы arctica(tundra), omega, можно и в hook_css_alter убрать "ненужные"
а вот js отключать не нужно

Аватар пользователя E.Wolf E.Wolf 29 июля 2014 в 11:37

Писал ответ и на самом интересном месте "сохранить", провайдер решил отключить мне интернет...

"drupby" wrote:
css системные позволяют отключать темы arctica(tundra), omega, можно и в hook_css_alter убрать "ненужные"
а вот js отключать не нужно

Спасибо, решение с отключением "CSS-мусора" - найдено!

"dashiwa" wrote:
https://www.drupal.org/project/mothership Посмотрите

Спасибо, обязательно посмотрю!

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

theme_css_alter(&$css) { } в файле template.php Вашей темы.

whiesam, спасибо за помощь!

Остался единственный вопрос, остающийся для меня не до конца понятным:

<!--//--><![CDATA[//><!--
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"mytheme","theme_token":"dQ757fgPO8H1nF6r5WbtE97Rst3Xpvub3M0qHX_iIv0","js":{"misc\/jquery.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1,"sites\/all\/themes\/mytheme\/js\/jquery.bxslider.min.js":1,"sites\/all\/themes\/mytheme\/js\/user.js":1},"css":{"sites\/all\/themes\/mytheme\/css\/bootstrap.min.css":1,"sites\/all\/themes\/mytheme\/css\/bxslider\/jquery.bxslider.css":1,"sites\/all\/themes\/mytheme\/css\/template.css":1}}});
//--><!]]>

За что отвечает этот код?

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 29 июля 2014 в 11:58

"DD 85" wrote:
Попробуйте выйти во всех браузерах и очистить кэш браузера. Выводятся только те стили и скрипты, которые необходимы конкретному пользователю для работы с конкретной страницей.

Это вы где такое вычитали?
Подавляющее число разрабов контриба тупо в hook_init() грузят стили и всё

Аватар пользователя E.Wolf E.Wolf 29 июля 2014 в 17:14

"Stroitel" wrote:
RDF выключается на странице модулей. В системных модулях /admin/modules

Благодарю за ответ, но приведенный мной код - это не RDF, это JS-код генерируемый одним из системных модулей Drupal'а (судя по всему).

Аватар пользователя drupby drupby 29 июля 2014 в 17:36

"E.Wolf" wrote:
это JS-код генерируемый одним из системных модулей Drupal'а (судя по всему).

судя по всему его убирать ну никак нельзя
есть модуль https://www.drupal.org/project/advagg специально для тебя - он позволит тебе сделать один css и один js файл и потом перенести это все "ненужное" вниз

Аватар пользователя Stroitel Stroitel 29 июля 2014 в 20:29

А не проще в админке друпала /admin/config/development/performance Объединение и сжатие файлов CSS и Объединение файлов JavaScript, а их вывод с "вверху" на низ страницы перенести одну строку в шаблоне html.tpl.php ?
<?php print $styles; ?>
<?php print $scripts; ?>

IMHO ставить модули по "каждому чиху" - совсем не drupal-way

Аватар пользователя drupby drupby 29 июля 2014 в 20:37

"Stroitel" wrote:
IMHO ставить модули по "каждому чиху" - совсем не drupal-way

тогда ответь мне на вопрос: сколько в твоем случае в исходном коде будет подключено js файлов и сколько css?
там кстати на странице модуля есть описание того, что он делает, можно было бы и прочитать

Аватар пользователя Stroitel Stroitel 29 июля 2014 в 21:00

Теоретически один js и один css, но практически их несколько. Но уже на порядок меньшее количество, чем без этого. +цсс сжимается.

Дело вкуса. Но 250КБ модуля - навевают мысли что не такой он уж и "легкий" будет. Понятно, что должно с ним работать быстрее, но вариант "полезть руками в шаблон" - тоже альтернатива. Причем, думается мне - что запросов к БД в этом случае будет меньше, чем при использовании дополнительного модуля. Практически все ЦМС любят в БД лазить "слишком часто и слишком много" Smile

Аватар пользователя DD 85 DD 85 29 июля 2014 в 21:17

"Stroitel" wrote:
А не проще в админке друпала

Тем более что кто-то уже советовал это выше.

Вообще мне кажется, что автор темы, по крайней мере, должен объяснить, почему он выбрал drupal, если его не устраивает чистота кода этой CMS.
Может в таком случае стоит писать свою систему управления содержимым?

Аватар пользователя E.Wolf E.Wolf 30 июля 2014 в 6:25

"drupby" wrote:
судя по всему его убирать ну никак нельзя

Не совсем понял, в каком ключе его "нельзя убирать"? Если речь идёт о том, что его нельзя отключить - я нашел способ его отключения...

Но, я не могу понять, зачем этот кусок кода нужен и как в итоге может повлиять на работу сайта его отключение?

Вопрос количества JS/CSS файлов, меня собственно уже не беспокоит, при большом желании можно склеить все файлы в один "вручную" и подключить эти два файла. Остался только вопрос касательно последнего куска кода.

-----

"DD 85" wrote:
Вообще мне кажется, что автор темы, по крайней мере, должен объяснить, почему он выбрал drupal, если его не устраивает чистота кода этой CMS.

Автора темы вполне устраивает чистота кода этой системы, но полное отсутствие вменяемой возможности добиться оптимизации кода шаблона, по мнению автора - было бы, как минимум странным, особенно для CMS, которой уже 14 лет от роду. Но, как выяснилось впоследствии такая возможность есть и вполне себе легко реализуется (о чем я писал выше).

"DD 85" wrote:
Может в таком случае стоит писать свою систему управления содержимым?

Возможно, в некоторых случаях этот шаг будет оправданным действием. Идеальных систем управления содержимым не бывает. Но, лично я для себя нашел гораздо более короткий путь решения данного вопроса, о чем собственно и написал в одном из предыдущих сообщений. Нужно будет провести опрос, сколько людей уже написано свою CMS после (не) удачной попытки кастомизации набора подключаемых CSS-файлов шаблона Drupal... думаю, многим будет интересно.

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

Уважаемые коллеги! Убедительно прошу вас, обратить внимание на мой финальный мой вопрос данной темы. Вопрос заключается в следующем:

<!--//--><![CDATA[//><!--
jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","ajaxPageState":{"theme":"mytheme","theme_token":"dQ757fgPO8H1nF6r5WbtE97Rst3Xpvub3M0qHX_iIv0","js":{"misc\/jquery.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1,"sites\/all\/themes\/mytheme\/js\/jquery.bxslider.min.js":1,"sites\/all\/themes\/mytheme\/js\/user.js":1},"css":{"sites\/all\/themes\/mytheme\/css\/bootstrap.min.css":1,"sites\/all\/themes\/mytheme\/css\/bxslider\/jquery.bxslider.css":1,"sites\/all\/themes\/mytheme\/css\/template.css":1}}});
//--><!]]>

Этот код является одним из "стандартных" кусков кода, генерируемых Drupal 7. Если отключить данный кусок кода, на что может повлиять его отключение и какого изначальное назначение данного кода? Спасибо.

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 30 июля 2014 в 6:55

"E.Wolf" wrote:
Возможно, в некоторых случаях этот шаг будет оправданным действием. Идеальных систем управления содержимым не бывает. Но, лично я для себя нашел гораздо более короткий путь решения данного вопроса, о чем собственно и написал в одном из предыдущих сообщений. Нужно будет провести опрос, сколько людей уже написано свою CMS после (не) удачной попытки кастомизации набора подключаемых CSS-файлов шаблона Drupal... думаю, многим будет интересно.

Думаю, пока что половина землекопа написали свою CMS из-за неудачной попытки кастомизации CSS