На время проведения реконструкции сайт переведён в режим "ТОЛЬКО ЧТЕНИЕ" (Read only). Приносим свои извинения!
MaxHub
Полезности по Maxsite CMS

Как добавить свои стили и JS в MaxSite CMS?

Вопросы-ответы / 27 февраля 2015

Столкнулся с проблемой. Необходимо добавить в head шаблона свои стили и скрипты.

Добавлял записи в main.php шаблона:

И cтили и скрипты срабатывают, но только тогда, когда Шаблон вывода по-умолчанию из админке стоит в ОБЫЧНЫЙ

Но когда меняю в админке вывод на no-sidebar скрипты и стили работать перестают.

Я так понял нужно в папку шаблона custom закинуть заготовку head со своими записями из custom c shared, но тогда вообще ошибка вылазит php.

Как всё таки в MaxSite CMS можно однозначно подключить свои скрипты и стили? Логику подключения "допетрить" не могу.

Комментариев: 6
  1. Дмитрий, дефолтный шаблон сейчас так устроен, что лезть править main.php ради секции HEAD нет никакой нужды. Рекомендую найти функцию mso_default_head_section (см. файл \application\maxsite\shared\functions\template.php), которая вызывается в main.php для вывода HEAD и изучить логику её работы. Тогда многое станет понятно.

    В частности, для подключения своих стилей и скиптов реализовано несколько способов. Цитирую фрагмент функции:

    if ($fn = mso_fe('custom/head.php')) require($fn);
      if ($fn = mso_page_foreach('head')) require($fn);
      if (function_exists('ushka')) echo ushka('head');
      
      // autoload js-файлов
      if ($autoload_js = mso_get_path_files(getinfo('template_dir') . 'js/autoload/', getinfo('template_url') . 'js/autoload/', true, array('js')))
      {
       foreach($autoload_js as $fn_js)
       {
        echo NT .'[removed][removed]';
       }
      }
      
      if (mso_fe('js/my.js')) 
       echo NT . '[removed][removed]';
      
      
         if ($my_ 'templates', '')) 
       echo NR . '<!-- custom css-my_style -->' . NR . '<style>' . NR . $my_style . '</style>';
      
      mso_hook('head-end');

    Из кода видно, что можно разместить код подключения в файле custom/head.php или в type_foreach файле head. Есть ещё вариант с использование ушки head.

    Есть способ автоматического подключения скриптов - разместить его в папку js/autoload/. Некоторые малые фрагменты js-кода можно разместить (скопировать) в файл js/my.js.

    Часть стилей можно прописать через опции настройки шаблона.

    Вы не привели код ошибки при использовании custom/head.php. Но подозреваю, что ошибка скорее всего в синтаксисе. Просто внимательно проверьте то место, которое указано в сообщении об ошибке. Должно всё нормально работать. Пожалуй это самый простой и популярный способ подключения всего чего угодно (например, можно подключить семантическую разметку для социалок) в секцию HEAD.

  2. Спасибо Илья - с этим моментом понятно, логику нужно включать rolleyes

    Никак не мог войти через логинзу - Яндекс, пришлось через гугл аккаунт. Пробовал три раза-при авторизации выходит ошибка на странице:

    A PHP Error was encountered
    Severity: Warning
    Message: curl_setopt(): CURLOPT_FOLLOWLOCATION cannot be activated when an open_basedir is set
    Filename: loginza_auth/index.php
    Line Number: 230
    Fatal error: Cannot use object of type stdClass as array in /var/www/manager/data/www/maxhub.ru/application/maxsite/plugins/loginza_auth/index.php on line 264
  3. Я года полтора назад пробовал использовать custom/head.php, но содержимое файла полностью заменило содержание head и больше не экспериментировал. Исправилась ситуация сейчас?

  4. AndreySPb, а на каком шаблоне пробовали? Если поищите функцию mso_default_head_section как я и писал выше, то сможете сами убедиться, что custom/head.php не должен затирать всю секцию head. Ну и вопрос ещё о том, что именно вы размещали в файл custom/head.php...

  5. Задумался.. Это было точно в старых версиях шаблонов. И походу пихал я в папку type_foreach grin

  6. Пробовал подключать через custom/head.php и через ушку - всё работает отлично! Спасибо за разъяснение.