ФорумПрограммированиеPHP для идиотов → организация вывода стилей и скриптов

организация вывода стилей и скриптов

  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 2 июля 2009 г. 3:25

    Интересует как вы организовываете подключение JS и стилей.
    Особенно интересует смарти.

    Как это у меня.
    $stemp->scriptInclude("jquery.js");
    //или если в какой то отдельной папке
    $stemp->scriptInclude("jquery.js","script/new/");



    Вывод

    $this->script();



    Стили по аналогии
  • phpdude

    Сообщения: 26632 Репутация: N Группа: в ухо

    Spritz 2 июля 2009 г. 3:27, спустя 1 минуту 16 секунд

    вот так

    <head>
    <base href="{$config.site_base}" />
    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>{"product"|@sm_version} CMS | {$title}</title>
    <link rel="stylesheet" href="css/admin.css" />
    <link rel="stylesheet" href="css/adminmenu.css" />
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/jquery.cookie.js"></script>
    <script type="text/javascript" src="js/forms.js"></script>
    <script type="text/javascript">
    //<![CDATA[
    function __autoload_js(){literal}{{/literal}{$autoload_js|default:""}{literal}}{/literal}
    //]]>
    </script>
    </head>


    ахуенно, ага? :))
    Сапожник без сапог
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 2 июля 2009 г. 3:30, спустя 3 минуты 38 секунд

    ебанись
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>{foreach key=key item=t from=$_titles}{$t.0|escape}{if !isset($t.2)} / {/if}{/foreach}</title>
    <meta name="keywords" content="{$_config.seo.Keywords|escape}" />
    <meta name="description" content="{$_config.seo.Description|escape}" />
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
    <link rel="stylesheet" href="http://{$smarty.const.SITE_DOMAIN}{$_tpl}css/style.css" type="text/css" />
    {if isset($css2) and is_array($css2)}
    {foreach key=key item=c from=$css2}<link rel="stylesheet" href="http://{$smarty.const.SITE_DOMAIN}{$_tpl}css/{$c}.css" type="text/css" />{/foreach}
    {/if}
    <script type="text/javascript" src="http://{$smarty.const.SITE_DOMAIN}/js/jquery.js?v1.3"></script>
    <script type="text/javascript" src="http://{$smarty.const.SITE_DOMAIN}/js/ui/ui.core.js"></script>
    <script type="text/javascript" src="http://{$smarty.const.SITE_DOMAIN}/js/ui/ui.slider.js"></script>
    <script type="text/javascript" src="http://{$smarty.const.SITE_DOMAIN}/js/ui/ui.draggable.js"></script>
    <script type="text/javascript" src="http://{$smarty.const.SITE_DOMAIN}/js/ui/ui.droppable.js"></script>
    <script type="text/javascript" src="http://{$smarty.const.SITE_DOMAIN}/js/sakh.js?v1"></script>
    {if isset($js2) and is_array($js2)}
    {foreach key=key item=j from=$js2}<script type="text/javascript" src="http://{$smarty.const.SITE_DOMAIN}/js/{$j}.js"></script>{/foreach}
    {/if}
    </head>


    а js2 это в подключении этой шапки типа
    {include file='_blocks/header.tpl' css2=array('jquery.uploadify') js2=array('jquery.md5','jquery.uploadify.src')}
    все умрут, а я изумруд
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 2 июля 2009 г. 3:39, спустя 8 минут 55 секунд

    {if isset($js2) and is_array($js2)}
    {foreach key=key item=j from=$js2}<script type="text/javascript" src="http://{$smarty.const.SITE_DOMAIN}/js/{$j}.js"></script>{/foreach}
    {/if}


    А в PHP это как выглядит?

    Так?
    $js2[]="jquery.js";
    $smarty->assign('js2',$js2);

    Спустя 105 сек.
    function __autoload_js(){literal}{{/literal}{$autoload_js|default:""}{literal}}{/literal}

    Чет я не понял как это работает? =)
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 2 июля 2009 г. 3:44, спустя 4 минуты 46 секунд

    Professor, а в пхп этого нету
    я из шаблона при подключении подшаблона шапки — указываю, какие js тут еще необходимы
    я ж показал:
    {include file='_blocks/header.tpl' css2=array('jquery.uploadify') js2=array('jquery.md5','jquery.uploadify.src')}
    все умрут, а я изумруд
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 2 июля 2009 г. 4:04, спустя 19 минут 57 секунд

    Это же фигово.
    лазить по шаблонам и удалять и вставлять скрипты.
    Почему в коде это не делается?
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 2 июля 2009 г. 4:06, спустя 2 минуты 28 секунд

    Professor, ты ебнулся?
    js это клиентская часть и я считаю, что их подключать надо в шаблонах, по ситуации, а не в лепим хуйгавнопизду в коде
    все умрут, а я изумруд
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 2 июля 2009 г. 4:19, спустя 12 минут 25 секунд

    Я согласен что это клиентская часть.
    Но за работу с клиентской частью у нас отвечает шаблонизатор. Так почему бы ему и не подключать скрипты и стили?

    С другой стороны чтоб сменить шаблон и убрать или вставить JS придется лезть в код.


    ХЗ мне так совсем не удобно! =(

    Есть еще какие нибудь варианты?
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 2 июля 2009 г. 4:20, спустя 1 минуту 7 секунд


    Я согласен что это клиентская часть.
    Но за работу с клиентской частью у нас отвечает шаблонизатор. Так почему бы ему и не подключать скрипты и стили?

    С другой стороны чтоб сменить шаблон и убрать или вставить JS придется лезть в код.


    ХЗ мне так совсем не удобно! =(

    Есть еще какие нибудь варианты?
    блять, я тебе и говорю про то, что шаблон подключает js
    все умрут, а я изумруд
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 2 июля 2009 г. 4:22, спустя 1 минуту 49 секунд

    Professor, желательно выводить всю эту шнягу всего лишь несколькими соединениями.
    типа спрайты.
    Мавр тебе может рассказать, он даже книгу себе по этой шняге купил))

    а вообще (ИМХО) надо выводить только критически необходимые стили и жсы, а все остальное подгружать по необходимости, типа лейзи-лоад
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 2 июля 2009 г. 4:26, спустя 4 минуты 3 секунды

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

    И там и там это делает шаблонизатор, только у тебя информация скрипты в файлах *.tpl, а у меня в переменных на ряду с другими переменными передающимися в шаблон.
    Спустя 41 сек.
    Professor, желательно выводить всю эту шнягу всего лишь несколькими соединениями.
    типа спрайты.

    В смысле? Ты про какие соединения?
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 2 июля 2009 г. 4:28, спустя 2 минуты 44 секунды

    Professor, всмысле ты когда просишь у сервера какую нибудь инфу, то ты устанавливаешь соединения…
    и чтоб для каждого (к примеру) жс файла не создавать новый коннекшн, все ЖСники можно обьеденить в один, то же самое с имагами и цссами…
  • phpdude

    Сообщения: 26632 Репутация: N Группа: в ухо

    Spritz 2 июля 2009 г. 4:30, спустя 1 минуту 45 секунд


    Professor, всмысле ты когда просишь у сервера какую нибудь инфу, то ты устанавливаешь соединения…
    и чтоб для каждого (к примеру) жс файла не создавать новый коннекшн, все ЖСники можно обьеденить в один, то же самое с имагами и цссами…
    уху, потом загзиппить, подключить модуль гзип статик для нгинкса и радоваться жизни что вместо 200кб жса на клиента уходит за один запрос всего 30кб … и картинки кешируются навсегда, ахуенно одним словом, а ксс спрайты тоже ахуенно
    Сапожник без сапог
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 23 марта 2010 г. 12:30, спустя 264 дня 7 часов 59 минут


    ебанись
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>{foreach key=key item=t from=$_titles}{$t.0|escape}{if !isset($t.2)} / {/if}{/foreach}</title>
    <meta name="keywords" content="{$_config.seo.Keywords|escape}" />
    <meta name="description" content="{$_config.seo.Description|escape}" />
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
    <link rel="stylesheet" href="http://{$smarty.const.SITE_DOMAIN}{$_tpl}css/style.css" type="text/css" />
    {if isset($css2) and is_array($css2)}
    {foreach key=key item=c from=$css2}<link rel="stylesheet" href="http://{$smarty.const.SITE_DOMAIN}{$_tpl}css/{$c}.css" type="text/css" />{/foreach}
    {/if}
    <script type="text/javascript" src="http://{$smarty.const.SITE_DOMAIN}/js/jquery.js?v1.3"></script>
    ….
    {if isset($js2) and is_array($js2)}
    {foreach key=key item=j from=$js2}<script type="text/javascript" src="http://{$smarty.const.SITE_DOMAIN}/js/{$j}.js"></script>{/foreach}
    {/if}
    </head>


    а js2 это в подключении этой шапки типа
    {include file='_blocks/header.tpl' css2=array('jquery.uploadify') js2=array('jquery.md5','jquery.uploadify.src')}



    В общем не получается у меня так. В приинклужившемся файле $css2 и $js2 не являются массивами. Если вывести на экран то выводит :

    array(\'jquery.uploadify\')
    array(\'jquery.md5\',\'jquery.uploadify.src\')


    Я уже и magic_quotes отключил, всеравно
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 23 марта 2010 г. 12:35, спустя 5 минут 48 секунд

    а если делаю так
    {include file="_blocks/header.tpl" css2=array("jquery.uploadify") js2=array("jquery.md5","jquery.uploadify.src")}

    то выводит вроде бы нормально
    array("jquery.uploadify")
    array("jquery.md5","jquery.uploadify.src")

    но это опять же строки

Пожалуйста, авторизуйтесь, чтобы написать комментарий!