Новости Joomla

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

bandanu

  • Захожу иногда
  • 162
  • 3 / 0
Не знал куда писать вопрос поэтому пишу тут.
В общем в файле вывода материала подключаю js и CSS для работы табов и акордеона, они соответственно выводятся "глубоко" в body.Как их подключать, чтоб они грузились в header, и есть ли вообще в этом смысл?Влияет ли это на скорость?
« Последнее редактирование: 12.12.2012, 14:37:20 от bandanu »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Можно ли js и CSS подгружать в header?
« Ответ #1 : 02.12.2012, 23:31:21 »
Код: php
<?php
$doc = JFactory::getDocument();
$doc->addScript('ваш файл.js'); //подключаем файл js
//$js = "alert('Привет');"; //Ниже приведен вариант многострочного ввода
$js = <<<MYJS
alert('Привет');
MYJS; //Ваш код JS
$doc->addScriptDeclaration($js); //вставляем код js
$doc->addStyleSheet('ваш файл.css'); //подключаем файл CSS
//$css ="p {font-size:  16px;}";
$css = <<<MYCSS
p {font-size:  16px;}
a {color: red;}
MYCSS; //Ваш код стилей элементов CSS
$doc->addStyleDeclaration($css); //вставляем стили CSS
?>
В header вставляйте. Объясню для чего. Таким образом с помощью плагина вы сможете разобраться с всеми вашими скриптами. Объединить и сжать их или перенести в пост загрузку. Ели вызов скрипта будет в теле документа плагины вряд ли будут их обрабатывать. Хочу отметить, что таким образом, нет разницы где вы вставляете код подключения скриптов в файле где обрабатывается php внизу или вначале страницы. Код все равно попадет в head 
*

bandanu

  • Захожу иногда
  • 162
  • 3 / 0
Re: Можно ли js и CSS подгружать в header?
« Ответ #2 : 04.12.2012, 18:16:18 »
Код
$doc = JFactory::getDocument();
$doc->addScript('/templates/stroy/js/accordion.js');
$js = "";
$doc->addScriptDeclaration($js);
$doc->addStyleSheet('/templates/stroy/css/accordion.css');
$css = "";
$doc->addStyleDeclaration($css);
файлы accordion.css и accordion.js подключились в header это хорошо.
как дописать этот код
Код
$(function() {
$( "#accordion" ).accordion();
});
в $js = "код";
и для чего  $css = "код"; если мы подключили файл CSS где все прописано
можно ли просто удалить
$css = "";
$doc->addStyleDeclaration($css);
эти две строки за ненадобностью или это будет неправильно?
и еще о каком плагине вы говорите  с помощью которого вы сможете разобраться с всеми вашими скриптами.
« Последнее редактирование: 04.12.2012, 18:20:16 от bandanu »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Можно ли js и CSS подгружать в header?
« Ответ #3 : 04.12.2012, 18:44:22 »
Код: php-brief
<?php
$doc = JFactory::getDocument();
$js = <<<MYJS
$(function() {
$( "#accordion" ).accordion();
});
MYJS;
$doc->addScriptDeclaration($js); //вставляем код js
?>
удаляйте если не надо смело ведь здесь я привел по 2 варианта. Вставка внешнего кода и вставка в тело документа
Ускоряем загрузку сайта (руководства и инструменты)
*

bandanu

  • Захожу иногда
  • 162
  • 3 / 0
Re: Можно ли js и CSS подгружать в header?
« Ответ #4 : 04.12.2012, 19:53:44 »
Код
<?php
$doc = JFactory::getDocument();
$doc->addScript('/templates/stroy/js/accordion.js');
$js = <<<MYJS
$(function() {
$( "#accordion" ).accordion();
});
MYJS;
$doc->addScriptDeclaration($js);
$doc->addStyleSheet('/templates/stroy/css/accordion.css');
?>
в таком виде высвечивает синтаксическую ошибку
так и не иначе?

$js = <<<MYJS
$(function() {
      $( "#accordion" ).accordion();
   });
MYJS;
*

Mirotvoretz

  • Захожу иногда
  • 65
  • 0 / 0
Re: Можно ли js и CSS подгружать в header?
« Ответ #5 : 05.12.2012, 22:48:05 »
Попробуйте заключить ваш код вот в такую конструкцию:

Цитировать
jQuery(function($){
    // Теперь Ваш код, будет доступен jQuery через "$"
});
*

bandanu

  • Захожу иногда
  • 162
  • 3 / 0
Re: Можно ли js и CSS подгружать в header?
« Ответ #6 : 06.12.2012, 12:48:31 »
Код
<link rel="stylesheet" type="text/css" href="<?php echo $this->baseurl ?>/templates/stroy/css/accordion.css"/>
<script type="text/javascript" src="<?php echo $this->baseurl ?>/templates/stroy/js/accordion.js"></script>
<script>
$(function() {
$( "#accordion" ).accordion();
});
</script>
почему в таком виде все ok, а с выше перечисленным ни как?
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Можно ли js и CSS подгружать в header?
« Ответ #7 : 06.12.2012, 13:38:53 »
Код: php-brief
?php
$doc = JFactory::getDocument();
$doc->addScript('/templates/stroy/js/accordion.js');
$js = <<<MYJS
jQuery(function() {
jQuery( "#accordion" ).accordion();
});
MYJS;
$doc->addScriptDeclaration($js);
$doc->addStyleSheet('/templates/stroy/css/accordion.css');
?>
Попробуй так
*

bandanu

  • Захожу иногда
  • 162
  • 3 / 0
Re: Можно ли js и CSS подгружать в header?
« Ответ #8 : 06.12.2012, 19:14:46 »
Вот мой файл category.php
Код
<?php
defined('_JEXEC') or die('Restricted access');
?>
<link rel="stylesheet" type="text/css" href="<?php echo $this->baseurl ?>/templates/stroy/css/accordion.css"/>
<script type="text/javascript" src="<?php echo $this->baseurl ?>/templates/stroy/js/accordion.js"></script>
<div id="Container" class="itemListView<?php if($this->params->get('pageclass_sfx')) echo ' '.$this->params->get('pageclass_sfx'); ?>">

<?php if($this->params->get('show_page_title')): ?>

<div class="componentheading<?php echo $this->params->get('pageclass_sfx')?>"><?php echo $this->escape($this->params->get('page_title')); ?></div>
<?php endif; ?>

<script>
$(function() {
$( "#accordion" ).accordion();
});
</script>
<?php if((isset($this->leading) || isset($this->primary) || isset($this->secondary) || isset($this->links)) && (count($this->leading) || count($this->primary) || count($this->secondary) || count($this->links))): ?>

<?php if(isset($this->leading) && count($this->leading)): ?>

<div id="accordion">
<?php foreach($this->leading as $key=>$item): ?>

<?php
if( (($key+1)%($this->params->get('num_leading_columns'))==0) || count($this->leading)<$this->params->get('num_leading_columns') )
$lastContainer= ' itemContainerLast';
else
$lastContainer='';
?>
<?php
$this->item=$item;
echo $this->loadTemplate('item');
?>

<?php endforeach; ?>

</div>
<?php endif; ?>

<?php if(isset($this->primary) && count($this->primary)): ?>
<div id="itemListPrimary">
<?php foreach($this->primary as $key=>$item): ?>

<?php
if( (($key+1)%($this->params->get('num_primary_columns'))==0) || count($this->primary)<$this->params->get('num_primary_columns') )
$lastContainer= ' itemContainerLast';
else
$lastContainer='';
?>

<div class="itemContainer<?php echo $lastContainer; ?>"<?php echo (count($this->primary)==1)? '' : ' style="width:'.number_format(100/$this->params->get('num_primary_columns'), 1).'%;"'; ?>>
<?php
$this->item=$item;
echo $this->loadTemplate('item');
?>
</div>
<?php if(($key+1)%($this->params->get('num_primary_columns'))==0): ?>
<div class="clr"></div>
<?php endif; ?>
<?php endforeach; ?>
<div class="clr"></div>
</div>
<?php endif; ?>

<?php if(isset($this->secondary) && count($this->secondary)): ?>
<div id="itemListSecondary">
<?php foreach($this->secondary as $key=>$item): ?>

<?php
if( (($key+1)%($this->params->get('num_secondary_columns'))==0) || count($this->secondary)<$this->params->get('num_secondary_columns') )
$lastContainer= ' itemContainerLast';
else
$lastContainer='';
?>

<div class="itemContainer<?php echo $lastContainer; ?>"<?php echo (count($this->secondary)==1)? '' : ' style="width:'.number_format(100/$this->params->get('num_secondary_columns'), 1).'%;"'; ?>>
<?php
$this->item=$item;
echo $this->loadTemplate('item');
?>
</div>
<?php if(($key+1)%($this->params->get('num_secondary_columns'))==0): ?>
<div class="clr"></div>
<?php endif; ?>
<?php endforeach; ?>
<div class="clr"></div>
</div>
<?php endif; ?>

<?php if(isset($this->links) && count($this->links)): ?>
<div id="itemListLinks">
<h4><?php echo JText::_('K2_MORE'); ?></h4>
<?php foreach($this->links as $key=>$item): ?>

<?php
if( (($key+1)%($this->params->get('num_links_columns'))==0) || count($this->links)<$this->params->get('num_links_columns') )
$lastContainer= ' itemContainerLast';
else
$lastContainer='';
?>

<div class="itemContainer<?php echo $lastContainer; ?>"<?php echo (count($this->links)==1)? '' : ' style="width:'.number_format(100/$this->params->get('num_links_columns'), 1).'%;"'; ?>>
<?php
$this->item=$item;
echo $this->loadTemplate('item_links');
?>
</div>
<?php if(($key+1)%($this->params->get('num_links_columns'))==0): ?>
<div class="clr"></div>
<?php endif; ?>
<?php endforeach; ?>
<div class="clr"></div>
</div>
<?php endif; ?>
<?php endif; ?>
</div>
как не пробовал все равно ошибку выдает.
*

bandanu

  • Захожу иногда
  • 162
  • 3 / 0
Re: Можно ли js и CSS подгружать в header?
« Ответ #9 : 08.12.2012, 19:26:31 »
вставляю этот код и нет синтаксических ошибок
Код
if (JRequest::getCmd('task') == 'search' && $params->get('googleSearch'))
        {
            $language = JFactory::getLanguage();
            $lang = $language->getTag();
            $document->addScript('http://www.google.com/jsapi');
            $js = '
//<![CDATA[
Google.load("search", "1", {"language" : "'.$lang.'"});

function OnLoad(){
var searchControl = new Google.search.SearchControl();
var siteSearch = new Google.search.WebSearch();
siteSearch.setUserDefinedLabel("'.$mainframe->getCfg('sitename').'");
siteSearch.setUserDefinedClassSuffix("k2");
options = new Google.search.SearcherOptions();
options.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);
siteSearch.setSiteRestriction("'.JURI::root().'");
searchControl.addSearcher(siteSearch, options);
searchControl.setResultSetSize(google.search.Search.LARGE_RESULTSET);
searchControl.setLinkTarget(google.search.Search.LINK_TARGET_SELF);
searchControl.draw(document.getElementById("'.$params->get('googleSearchContainer', 'k2Container').'"));
searchControl.execute("'.JRequest::getString('searchword').'");
}

Google.setOnLoadCallback(OnLoad);
//]]>
  ';
            $document->addScriptDeclaration($js);
        }
таким образом подключен поиск в к2, как он должен выглядеть в моем варианте?
Код
<?php
if (JRequest::getCmd('task') == 'search' && $params->get('googleSearch'))
        {   $document->addScript(JURI::root(true).'/templates/stroy/js/accordion.js');
            $document->addStyleSheet(JURI::root(true).'/templates/stroy/css/accordion.css');
           
            $js = '
//<![CDATA[
$(function() {
$( "#accordion" ).accordion();
});
//]]>
  ';
            $document->addScriptDeclaration($js);
        }
  ?>
не знаю как должна выглядеть эта
Цитировать
if (JRequest::getCmd('task') == 'search' && $params->get('googleSearch'))
строчка
*

bandanu

  • Захожу иногда
  • 162
  • 3 / 0
Re: Можно ли js и CSS подгружать в header?
« Ответ #10 : 12.12.2012, 14:36:44 »
Ура!Заработало!Вот в таком виде нет ошибок:
Код
 <?php
$doc = JFactory::getDocument();
$doc->addScript('/templates/stroy/js/accordion.js');
$js = '
//<![CDATA[
jQuery(function() {
jQuery( "#accordion" ).accordion();
});
//]]>
 ';
$doc->addScriptDeclaration($js);
$doc->addStyleSheet('/templates/stroy/css/accordion.css');
?>
Спасибо за помощь  *DRINK*.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[РЕШЕНО] Как в Joomla 2.5 автоматом удалять пользователей, не активировавшихся?

Автор pH43

Ответов: 2
Просмотров: 2867
Последний ответ 01.06.2020, 17:16:26
от pH43
[Баг - не решено] Копировать пункт в другое меню с тем же алиасом?

Автор ELLE

Ответов: 104
Просмотров: 18096
Последний ответ 14.05.2019, 15:06:50
от voland
JoomShoping решено

Автор igor_kozovyi4

Ответов: 0
Просмотров: 1062
Последний ответ 08.12.2018, 23:06:25
от igor_kozovyi4
Каким плагином можно сделать мультиколоночное мега-меню как на примере?

Автор Adrian1111

Ответов: 7
Просмотров: 1164
Последний ответ 02.08.2017, 10:01:44
от lexxbry
Можно ли удалить эту строку из файла php?

Автор Adrian1111

Ответов: 2
Просмотров: 1072
Последний ответ 24.07.2017, 10:49:09
от Adrian1111