0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 2373 Просмотров
*

MFNIK

  • Новичок
  • 12
  • 0 / 0
Всем привет столкнулся с задачей!
В целях разобраться с данной CMS.

Меня интересует каким образом и откуда Joomla генерирует ссылки подключения скриптов?

Вот к примеру кусок кода файла index.php стандартного шаблона protostar

Код
<?php
/**
 * @package     Joomla.Site
 * @subpackage  Templates.protostar
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

$app             = JFactory::getApplication();
$doc             = JFactory::getDocument();
$user            = JFactory::getUser();
$this->language  = $doc->language;
$this->direction = $doc->direction;

// Getting params from template
$params = $app->getTemplate(true)->params;

// Detecting Active Variables
$option   = $app->input->getCmd('option', '');
$view     = $app->input->getCmd('view', '');
$layout   = $app->input->getCmd('layout', '');
$task     = $app->input->getCmd('task', '');
$itemid   = $app->input->getCmd('Itemid', '');
$sitename = $app->get('sitename');

if($task == "edit" || $layout == "form" )
{
$fullWidth = 1;
}
else
{
$fullWidth = 0;
}

// Add JavaScript Frameworks
JHtml::_('bootstrap.framework');
$doc->addScript('templates/' . $this->template . '/js/template.js'); ------- красным

// Add Stylesheets
$doc->addStyleSheet('templates/' . $this->template . '/css/template.css');-------------красным

// Load optional RTL Bootstrap CSS
JHtml::_('bootstrap.loadCss', false, $this->direction);

// Adjusting content width
if ($this->countModules('position-7') && $this->countModules('position-8'))
{
$span = "span6";
}
elseif ($this->countModules('position-7') && !$this->countModules('position-8'))
{
$span = "span9";
}
elseif (!$this->countModules('position-7') && $this->countModules('position-8'))
{
$span = "span9";
}
else
{
$span = "span12";
}

// Logo file or site title param
if ($this->params->get('logoFile'))
{
$logo = '<img src="' . JUri::root(). $this->params->get('logoFile'). '" alt="' . $sitename . '" />';
}
elseif ($this->params->get('sitetitle'))
{
$logo = '<span class="site-title" title="' . $sitename . '">' . htmlspecialchars($this->params->get('sitetitle')). '</span>';
}
else
{
$logo = '<span class="site-title" title="' . $sitename . '">' . $sitename . '</span>';
}
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<jdoc:include type="head" />-----------синим!
Как я понимаю красным отмечены строчки которые генерируют ссылки к файлам CSS и js самого шаблона protostar, а синим я отметил код который отвечает за вывод всего этого в тег head.

Так вот, откуда еще берутся остальные скрипты? И почему их именно 5? Например если посмотреть "/public_html/media/jui/js" тут скриптов больше 20 всяких разных а генерирует он только всего 5.

Вот отрезок кода который отображается в консоли браузера
Код
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
  <base href="http://nikandlc.bget.ru/">
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="author" content="Super User">
  <meta name="generator" content="Joomla! - Open Source Content Management">
  <title>Home</title>
  <link href="http://nikandlc.bget.ru/" rel="canonical">
  <link href="/templates/protostar/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon">
  <link rel="stylesheet" href="/templates/protostar/css/template.css" type="text/css"> - это подключал (отмечал красным)
  <script src="/media/jui/js/jquery.min.js" type="text/javascript"></script>
  <script src="/media/jui/js/jquery-noconflict.js" type="text/javascript"></script>
  <script src="/media/jui/js/jquery-migrate.min.js" type="text/javascript"></script>
  <script src="/media/system/js/caption.js" type="text/javascript"></script>
  <script src="/media/jui/js/bootstrap.min.js" type="text/javascript"></script>
  <script src="/templates/protostar/js/template.js" type="text/javascript"></script> - это подключал (отмечал красным)
  <script type="text/javascript">
jQuery(window).on('load',  function() {
new JCaption('img.caption');
});
window.setInterval(function(){var r;try{r=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}if(r){r.open("GET","./",true);r.send(null)}},840000);
jQuery(document).ready(function(){
jQuery('.hasTooltip').tooltip({"html": true,"container": "body"});
});
  </script>

 
<link href="//fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet" type="text/css">
<style type="text/css">
h1,h2,h3,h4,h5,h6,.site-title{
font-family: 'Open Sans', sans-serif;
}
</style>
<!--[if lt IE 9]>
<script src="/media/jui/js/html5.js"></script>
<![endif]-->
</head>

Я просто всю Joomla перерыл не могу найти что отвечает, или какой файл, или где находятся данные скрипты, или может какая переменная в коде какого то файла отвечает за вывод определенных скриптов. Слезно прошу помочь!

ps в php полный ноль, пока что не могу его осилить или наверное не дано, не суть. Знаю есть файл head.php есть такой фрагмент
Код
// Generate script file links
foreach ($document->_scripts as $strSrc => $strAttr)
        {
            $buffer .= $tab . '<script src="' . $strSrc . '"';
        if (!is_null($strAttr['mime']))
        {
            $buffer .= ' type="' . $strAttr['mime'] . '"';
            }
        if ($strAttr['defer'])
        {
            $buffer .= ' defer';
            }
        if ($strAttr['async'])
        {
            $buffer .= ' async';
            }
            $buffer .= '></script>' . $lnEnd;
        }
везде где не гуглил, пишут что смотреть тут, но я в упор не вижу какая переменная указывает что должно выводиться именно данные 5 скриптов, при том что данный файл остается не изменным, а когда меняешь шаблон на beez3 то скриптов увеличивается в 2 раза? Ребят если кто то по считает мой вопрос смешным или простым или глупым, или не достойным ответа, очень прошу все таки помочь новичку, сами так же начинали, а у кого мне узнать как не на форуме поддержки Joomla!

Жду ответ, спасибо!
*

aspidy

  • Завсегдатай
  • 1009
  • 55 / 1
  • Миграция joomla 1.0-1.5-2.5
Re: Не могу разобраться с joomla3
« Ответ #1 : 20.02.2015, 06:09:56 »
JHtml::_('bootstrap.framework');
Мелкий ремонт. skype poisk-plus
*

midav

  • Давно я тут
  • 926
  • 114 / 1
Re: Не могу разобраться с joomla3
« Ответ #2 : 20.02.2015, 09:30:52 »
Какова цель, что хотите сделать ? Просто ради любознательности, или есть определённая задача ?
Если есть определённая задача, так Вы её опишите . Подскажут каким путём надо идти . Может вообще не в ту сторону смотрите .
Ответы на вопросы по CSS . Откройте для себя Firebug
*

MFNIK

  • Новичок
  • 12
  • 0 / 0
Re: Не могу разобраться с joomla3
« Ответ #3 : 20.02.2015, 12:16:53 »
1)задача, я не могу сделать так что бы например:
Код
 <script src="/media/jui/js/jquery.min.js" type="text/javascript"></script>
  <script src="/media/jui/js/jquery-noconflict.js" type="text/javascript"></script>
  <script src="/media/jui/js/jquery-migrate.min.js" type="text/javascript"></script>
  <script src="/media/system/js/caption.js" type="text/javascript"></script>
  <script src="/media/jui/js/bootstrap.min.js" type="text/javascript"></script>
какой то скрипт убрать, а какой то сюда добавить. Где они расположены? я могу их либо все убрать либо все оставить. Меня это не устраивает.
2) Очередность загрузки. При подключении сторонних скриптов, происходит конфликт, из за Неправильного порядка подргрузки скриптов. Как их поменять местами.
3) Из серии 1,2 пункта подключить значение async или defer, я знаю как подключить либо async для всех либо defer для всех, а как это сделать по раздельности?
И вообще понять как устроена вся эта каша в joomle со скриптами. Хотя бы скажите где рыть?

Моя логика. Что и как я искал. Я представляю что где то есть папка где лежат все скрипты, ну наверное это "/public_html/media/jui/js", где то есть файл php который указывает что и в каком месте в какой последовательности, на какой странице подключать скрипты которые лежат в выше сказанной папке, не все сразу а по мере надобности. Я прав? если да подскажите где этот файл сам как нибудь догоню.
*

zomby6888

  • Завсегдатай
  • 1473
  • 170 / 3
Re: Не могу разобраться с joomla3
« Ответ #4 : 20.02.2015, 14:12:45 »
Есть класс JDocument , он синглтон. Получить его экземпляр можно так: JFactory::getDocument(). У него есть свойство _scripts, которое представляет из себя массив ключами которого являются пути к скриптам. Кстатии он public как ни странно. Тоесть его можно получать и модифицировать прямо в шаблоне без каких то специальных методов.

Также у объекта класса JDocument есть методы addScript(), addScriptDeclaration() для добавления скриптов в этот массив. Есть системные события, например onBeforeCompileHead которое исполняется перед вставкой скриптов из этого массива в head документа. Можно написать плагин для управления скриптами по этому событию.

Только что прочитал внимательнее первый пост.. если в php полный ноль вам это конечно врятли поможет.
« Последнее редактирование: 20.02.2015, 14:18:43 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

SeBun

  • Живу я здесь
  • 3594
  • 231 / 3
  • @SeBun48
Re: Не могу разобраться с joomla3
« Ответ #5 : 20.02.2015, 16:04:53 »
Другими словами подключение скриптов может производится где угодно (в модулях, в компонентах, в шаблоне и т.д.) и сами скрипты могут быть где угодно, не только в папках ядра. Вы написали, что в PHP полный ноль, однако привели листинги, значит какие то знания есть. Поэкспериментируйте с классом JDocument, как написал зомби, почитайте о его методах. В любом случае, почему у вас такой вывод, вам придется разбираться самостоятельно.
Оказываю услуги по Joomla | Миграция на Joomla 3.x | Сопровождение | IT-аутсорсинг
*

MFNIK

  • Новичок
  • 12
  • 0 / 0
Re: Не могу разобраться с joomla3
« Ответ #6 : 20.02.2015, 16:18:41 »
Есть класс JDocument , он синглтон. Получить его экземпляр можно так: JFactory::getDocument(). У него есть свойство _scripts, которое представляет из себя массив ключами которого являются пути к скриптам. Кстатии он public как ни странно. Тоесть его можно получать и модифицировать прямо в шаблоне без каких то специальных методов.

Также у объекта класса JDocument есть методы addScript(), addScriptDeclaration() для добавления скриптов в этот массив. Есть системные события, например onBeforeCompileHead которое исполняется перед вставкой скриптов из этого массива в head документа. Можно написать плагин для управления скриптами по этому событию.

Только что прочитал внимательнее первый пост.. если в php полный ноль вам это конечно врятли поможет.

Ну как полный ноль, литературу читаю перечитываю, постепенно доходит. К примеру нахожу куски кода, иногда понимаю за что они отвечают, применяю их в других местах. Знаю php как "ctrl C" "ctrl "V", и метод тыка туда же.
*

MFNIK

  • Новичок
  • 12
  • 0 / 0
Re: Не могу разобраться с joomla3
« Ответ #7 : 20.02.2015, 16:21:07 »
Другими словами подключение скриптов может производится где угодно (в модулях, в компонентах, в шаблоне и т.д.) и сами скрипты могут быть где угодно, не только в папках ядра. Вы написали, что в PHP полный ноль, однако привели листинги, значит какие то знания есть. Поэкспериментируйте с классом JDocument, как написал зомби, почитайте о его методах. В любом случае, почему у вас такой вывод, вам придется разбираться самостоятельно.
что зомби написал буду сегодня разбирать. А есть решение например что бы к каждому из скриптов присвоить значение async или defer, но только в выборочном порядке? Или все таки мне лучше до этого самому догонять?)))
*

MFNIK

  • Новичок
  • 12
  • 0 / 0
Re: Не могу разобраться с joomla3
« Ответ #8 : 20.02.2015, 16:34:33 »
Есть класс JDocument , он синглтон. Получить его экземпляр можно так: JFactory::getDocument(). У него есть свойство _scripts, которое представляет из себя массив ключами которого являются пути к скриптам. Кстатии он public как ни странно. Тоесть его можно получать и модифицировать прямо в шаблоне без каких то специальных методов.

Также у объекта класса JDocument есть методы addScript(), addScriptDeclaration() для добавления скриптов в этот массив. Есть системные события, например onBeforeCompileHead которое исполняется перед вставкой скриптов из этого массива в head документа. Можно написать плагин для управления скриптами по этому событию.

Только что прочитал внимательнее первый пост.. если в php полный ноль вам это конечно врятли поможет.

Спасибо большое за научный ответ, обязательно сегодня разберу. Знать бы что такое синглтон))) Хотя уже на гуглил, это типо ID в HTML, может быть только один и отвечает за выполнение какой либо команды. В данном случае это вывод скриптов на сайте. Но это лирика)

Самое главное вы мне рассказали за данный отрезок кода, как происходит динамический вывод скриптов на сайте.
Код
$doc->addScript('templates/' . $this->template . '/js/template.js');
который с помощью этого синглтон как раз и выводит скрипт находящиеся в пути template/protostar(так как это именно этот шаблон)/js, а мне нужно понять как управлять скриптами которые выводятся словосочетанием
Код
<jdoc:include type="head" />
, тут все дело по другому, они выводятся на сайт по своему и сразу все те которые нужны для работы определенной страницы, или компонента на той же странице. Я например в файле document.php где идет код отвечающий за скрипты false  на true (значение async) и они все становятся со значением async, скорости это прибавляет, но перестают работать кнопки в админке, сохранить или закрыть((( при подлючении (значение async), тоже самое. Я УВЕРЕН, что если по эксперементировать со скриптами, кому то добавить это значение или свойство, можно добиться увеличения скорости, а так же оставить все в рабочем состоянии! И так далее с компонентами!
*

aspidy

  • Завсегдатай
  • 1009
  • 55 / 1
  • Миграция joomla 1.0-1.5-2.5
Re: Не могу разобраться с joomla3
« Ответ #9 : 20.02.2015, 20:57:40 »
Цитировать
Я УВЕРЕН, что если по экспериментировать со скриптами, кому то добавить это значение или свойство, можно добиться увеличения скорости, а так же оставить все в рабочем состоянии! И так далее с компонентами!
Ну и для чего это делать? Модули, компоненты, шаблон подгружают свои скрипты, вы запутаетесь, где что подключено, а что нет
Мелкий ремонт. skype poisk-plus
*

MFNIK

  • Новичок
  • 12
  • 0 / 0
Re: Не могу разобраться с joomla3
« Ответ #10 : 21.02.2015, 14:40:14 »
Какова цель, что хотите сделать ? Просто ради любознательности, или есть определённая задача ?
Если есть определённая задача, так Вы её опишите . Подскажут каким путём надо идти . Может вообще не в ту сторону смотрите .

Вот к примеру делаю проект http://nikandlc.bget.ru/ , меню заказать РВД нужно вставить форму отправки сообщения, хочу поставить вот эту http://www.php-s.ru/sendmail/form-to-mail/ , все делаю правильно как показываю в инструкции. В директорию template создаю папку feedback, в нее загружаю фаилы. Подключаю скрипты в фаиле index.php шаблона тут:
Код
// Add JavaScript Frameworks
JHtml::_('bootstrap.framework');
$doc->addScript('templates/' . $this->template . '/feedback/js/скрипт.js');
$doc->addScript('templates/' . $this->template . '/js/template.js');
Вставляю этот кусок скрипта что бы его запустить
Код
<script type="text/javascript">
$(document).ready(function() {
$(document).on('click', '.modal_btn', function(){
$('#small-modal').arcticmodal();
});
});
</script>
в консоли сразу возникает конфликт! Почему? Куда я только этот кусок не всовывал все равно ошибка.
Итог все скрипты открываются в консоли в "open link in new tab" то есть скрипт браузер видит. Но ни хрена не работает. Ну что не так то?

ps все уже из саита удалил!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Разобраться, объясните как делать, в CSS не силен)

Автор Kooll5

Ответов: 5
Просмотров: 142
Последний ответ 09.04.2018, 20:27:19
от stendapuss
С глупым вопросом! Не могу добавить товар!

Автор poppymur

Ответов: 0
Просмотров: 106
Последний ответ 23.03.2018, 18:49:20
от poppymur
Не могу войти в панель управления Joomla

Автор Mnojitell

Ответов: 6
Просмотров: 395
Последний ответ 20.12.2017, 15:27:11
от Mnojitell
Не могу обновить Joomla

Автор atyutrin

Ответов: 7
Просмотров: 642
Последний ответ 31.10.2017, 18:57:09
от atyutrin
Не могу установить Mobile Joomla

Автор misteri27

Ответов: 1
Просмотров: 255
Последний ответ 19.10.2017, 09:57:08
от misteri27