Динамическое подключение .css файла для модуля

Тема в разделе "Модернизация расширений", создана пользователем Jooman, 15.10.2007.

  1. Jooman
    Offline

    Jooman Недавно здесь

    Регистрация:
    15.10.2007
    Сообщения:
    12
    Симпатии:
    0
    Пол:
    Мужской
    Есть ли механизм для динамического подключения стилевого файла модуля в <head>, т.е. только тогда, когда модуль отображается, или стили модуля надо намертво прописывать в шаблоне?
     
  2.  
  3. Fanamura
    Offline

    Fanamura Доброта

    Регистрация:
    12.03.2007
    Сообщения:
    5 108
    Симпатии:
    159
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    Все есть в факе. Читаем про скрытие модулей, а для каждого модуля можно задать свое оформление. Все обсуждалось на форуме.
     
  4. Jooman
    Offline

    Jooman Недавно здесь

    Регистрация:
    15.10.2007
    Сообщения:
    12
    Симпатии:
    0
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    Я не про скрытие модуля спросил, а про подключение стилевого файла в заголовок, а не в боди как некоторые писатели модулей делают. Скрытие модулей для залогиненных не интересует.
    Если не сложно, ссылочку пожалуйста. Порулил поиском, но не нашёл.
     
  5. Fanamura
    Offline

    Fanamura Доброта

    Регистрация:
    12.03.2007
    Сообщения:
    5 108
    Симпатии:
    159
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    http://joomla-docs.ru/Фишки_шаблонов_Joomla
    Скрываем правую колонку
    ====
    Этот модуль обрамляем новым <div id=''></div>, прописываем что хотим в css, радуемся жизни
     
  6. Jooman
    Offline

    Jooman Недавно здесь

    Регистрация:
    15.10.2007
    Сообщения:
    12
    Симпатии:
    0
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    Спасибо за ответ.
    Да, можно конечно, проверять есть ли вывод в позицию и отключать в шаблоне. А есть ли средство делать это на уровне кода модуля? Т.е. вставлять код в заголовок страницы?
    У компонентов вроде есть что-то для этого.
     
  7. AmmiAk
    Offline

    AmmiAk Укротитель браузеров

    Регистрация:
    25.07.2007
    Сообщения:
    633
    Симпатии:
    34
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    Не уверен, что такая штука все же существует, хотя знаете, чем черт ни шутит - компонентов и модулей для Joomla! CMS в настоящее время столько, что за всем происходящим не уследишь. Может, и есть, правда лично мне подобного встречать еще не доводилось...

    Быть может, Вы заодно расскажете здесь, в чем основное преимущество Вашего подхода, имею в виду описание <style></style> в <head></head> шаблона сайта? Просто сейчас такое практически уже никто не использует - все стили выносятся в отдельный файл каскадных таблиц стилей (.css), такова основная идеология использования технологии CSS и, что не исключено, программистов системы управления контентом Joomla! CMS и ее расширений.
     
  8. Jooman
    Offline

    Jooman Недавно здесь

    Регистрация:
    15.10.2007
    Сообщения:
    12
    Симпатии:
    0
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    Да рассказывать тут нечего, меню и магазины добавляют свои отдельные стили к примеру немаленького размера, ну и проч. каталоги, галереи и др. тоже. И в заголовок, не в тело.[!]
    Пихать их все в один
    пожалуй не стоит.
    В многих шаблонах готовых даже этот один файл разбит на несколько.
    У каждого компонента свой.
    И модули есть такие тоже, где своих стилей хватает.
    Если всё пихать в шаблон, попробуй его потом поменять.
    Один лишний гемор и недобство.

    Ладно,B) гляну в компонентах, в модулях че-то криво совсем=O то что попалось.
     
    Последнее редактирование: 17.10.2007
  9. AmmiAk
    Offline

    AmmiAk Укротитель браузеров

    Регистрация:
    25.07.2007
    Сообщения:
    633
    Симпатии:
    34
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    Как раз для этого в готовых шаблонах сайтов один файл каскадных таблиц стилей и разделяют на несколько частей. Делать это можно, прописывая стилевой файл непосредственно в шаблоне сайта:
    Код (CODE):
    1. <link href="templates/<?php echo $cur_template; ?>/css/fonts.css" rel="stylesheet" type="text/css" />

    Но не стоит забывать также о том, что это можно делать и через импорт, используя возможности CSS, т.е. импортируя в используемый стилевой файл сторонние стили: касательно только шрифтов, ссылок, какого-то конкретного или же всех используемых компонентов). Для этого в начале того же 'template_css.css' прописываем:
    Код (CODE):
    1. @import url("fonts.css");
    2. @import url("links.css");
    3. @import url("com_JPortfolio.css");
    4. ...
    5. @import url("components.css");
     
  10. Jooman
    Offline

    Jooman Недавно здесь

    Регистрация:
    15.10.2007
    Сообщения:
    12
    Симпатии:
    0
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    Именно такое включение, только не в голову стилевого файла (такой трюк некоторые модули делают, и с внешимим файлами и с инлайн-стилями), а в заголовок страницы и нужно прописывать стилевые файлы, но только в зависимости от наличия модуля на странице, а не позиции его вывода, например.
    Динамически прописывать в стилевой файл ИМХО нет резона, разные посетители будут просить разные страницы.

    И именно из кода модуля, в силу модульного построения системы, заказывать включение стилей..
    Если стили просто постоянно подцепить где-либо - в заголовке или другом стилевом файле, они будут всегда подгружаться,:O занимая полосу пропускания канала, а потом ещё и разбираться браузером, отнимая процессорное время.
    А если на сайте море модулей и компонент, вся эта марахайка всегда будет грузиться и разбираться и т.п. как указано выше.
     
  11. AmmiAk
    Offline

    AmmiAk Укротитель браузеров

    Регистрация:
    25.07.2007
    Сообщения:
    633
    Симпатии:
    34
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    Уфф, ну тогда я сдаюсь... %P Ждем ответа программеров, раздел форума Вы выбрали верно.
     
  12. Fanamura
    Offline

    Fanamura Доброта

    Регистрация:
    12.03.2007
    Сообщения:
    5 108
    Симпатии:
    159
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    капец...и зачем это только нужно... не отвечайте, я все равно ен увижу смысла...:)
     
  13. Jooman
    Offline

    Jooman Недавно здесь

    Регистрация:
    15.10.2007
    Сообщения:
    12
    Симпатии:
    0
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    Нашёл. Попалось случайно, и я не забыл щедро поделиться.
    Используется функция

    Код (CODE):
    1. 1.      function injectCustomHeadTags($html) {
    2.    2.      $buf = ob_get_contents();
    3.    3.      ob_clean();
    4.    4.      $buf = preg_replace("/<head(.*?)>(.*?)<\/head>/is", "<head$1>$2".$html."</head>", $buf);
    5.    5.      echo $buf;
    6.    6.      }


    Работает на серверах с буферизацией как видно из листинга и говорят на большинстве хостингов с джумлой трюк проходит
    Примерно так я и предполагал решить.:)B)
    Писатели модулей, надеюсь, не забудут поблагодарить.
     
    Последнее редактирование модератором: 28.02.2010
  14. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 356
    Симпатии:
    370
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    Jooman, это в шаблон что ли вставляется?
     
  15. sectus
    Offline

    sectus специалист

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    наверное так:
    Код (PHP):
    1. $mainframe->addCustomHeadTag("<link rel='stylesheet' href='".$mosConfig_live_site."/components/".$option."/mseboard.css' type='text/css' />");


    скопировал просто из компонента, попробуйте, может сработает...
     
  16. Jooman
    Offline

    Jooman Недавно здесь

    Регистрация:
    15.10.2007
    Сообщения:
    12
    Симпатии:
    0
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    В код модуля / мамбота, насколько я понимаю (by design). Говоришь, что хочешь подключить.[!]
    Функцию можно и отдельно в какое-нить адресное пространство вставить, да хоть и в шаблон. Проще же думаю держать локальной.
    Фишка в том, чтобы НЕ вносить в шаблон лишнее. Код вставляется по запросу модуля.
    B):)
     
    Последнее редактирование модератором: 05.04.2014
  17. sectus
    Offline

    sectus специалист

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    Мой вариант не пробовал?
     
  18. Jooman
    Offline

    Jooman Недавно здесь

    Регистрация:
    15.10.2007
    Сообщения:
    12
    Симпатии:
    0
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    Е сли бы ты прошел по ссылкам что я дал, прочёл бы почему это работает в компоненте, но не в модуле.
     
  19. sectus
    Offline

    sectus специалист

    Регистрация:
    19.04.2006
    Сообщения:
    1 210
    Симпатии:
    46
    Пол:
    Мужской
    Ответ: Динамическое подключение .css файла для модуля

    Дык надо было сразу написать... если начать ходить по всем ссылкам что дают люди, то свихнуться можно...
     

Поделиться этой страницей

Загрузка...