Форум русской поддержки Joomla!® CMS
08.12.2016, 04:16:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

jdoc:include type="head"

 (Прочитано 693 раз)
0 Пользователей и 1 Гость смотрят эту тему.
serrggeee
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 16


« : 08.10.2015, 14:05:57 »

Здравствуйте у меня в шаблоне есть такой тег <jdoc:include type="head" />, этот тег генерирует javascript на странице в части head. Мне нужно отредактировать этот код, не знаю как сделать, где этот класс определяется я нашел в вайле head.php
Код:
class JDocumentRendererHead extends JDocumentRenderer
вот когд где создается js
Код:
// Generate script declarations
foreach ($document->_script as $type => $content)
{
$buffer .= $tab . '<script type="' . $type . '">' . $lnEnd;

// This is for full XHTML support.
if ($document->_mime != 'text/html')
{
$buffer .= $tab . $tab . '<![CDATA[' . $lnEnd;
}

$buffer .= $content . $lnEnd;

// See above note
if ($document->_mime != 'text/html')
{
$buffer .= $tab . $tab . ']]>' . $lnEnd;
}
$buffer .= $tab . '</script>' . $lnEnd;
}

как я понимаю все данные лежет в базе судя по вот этому foreach ($document->_script as $type => $content), объясните как эго поменять.
Записан
Grigory S.
Завсегдатай
*****

Репутация: +68/-0
Offline Offline

Пол: Мужской
Сообщений: 685


(с)


« Ответ #1 : 08.10.2015, 14:46:31 »

А что именно вам нужно отредактировать?

Сюда попадают всё js, которые подключены через
Код
JFactory::getDocument()->addScript('...');
JHtml::_('script', '...');
Записан
serrggeee
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 16


« Ответ #2 : 08.10.2015, 15:08:37 »

а как я могу его редактировать?
Записан
Grigory S.
Завсегдатай
*****

Репутация: +68/-0
Offline Offline

Пол: Мужской
Сообщений: 685


(с)


« Ответ #3 : 08.10.2015, 15:12:53 »

Можно написать плагин, и перед рендером страницы изменять как хотите.
Записан
serrggeee
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 16


« Ответ #4 : 08.10.2015, 16:01:26 »

вы наверное не поймете, у меня в head есть код js он уже сформирован, вот я хочу его подправить, но не пойму как он формируется, зачем чтото переделывать
Записан
Grigory S.
Завсегдатай
*****

Репутация: +68/-0
Offline Offline

Пол: Мужской
Сообщений: 685


(с)


« Ответ #5 : 08.10.2015, 16:04:50 »

Так вы нормально пишите что вы хотите. Смотрите откуда js-ка подключается, и редактируйте.
Записан
serrggeee
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 16


« Ответ #6 : 08.10.2015, 17:09:43 »

нет там не подключается а формируется прям в техах head
Записан
Grigory S.
Завсегдатай
*****

Репутация: +68/-0
Offline Offline

Пол: Мужской
Сообщений: 685


(с)


« Ответ #7 : 08.10.2015, 17:31:12 »

...
А что за код? Joomla, или сторонних расширений?

P.S. Покажите кусок кода, надоело вытягивать с вас информацию, ведь по сути это вам нужно.
Записан
serrggeee
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 16


« Ответ #8 : 08.10.2015, 17:49:30 »

Код
<script type="text/javascript">
 
window.addEvent('domready', function() {
 
SqueezeBox.initialize({});
SqueezeBox.assign($$('a.modal'), {
parse: 'rel'
});
});
function keepAlive() { var myAjax = new Request({method: "get", url: "index.php"}).send();} window.addEvent("domready", function(){ keepAlive.periodical(840000); });
Calendar._DN = new Array ("Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"); Calendar._SDN = new Array ("Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"); Calendar._FD = 0; Calendar._MN = new Array ("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"); Calendar._SMN = new Array ("Янв", "Фев", "Март", "Апр", "Май", "Июнь", "Июль", "Авг", "Сен", "Окт", "Нояб", "Дек"); Calendar._TT = {};Calendar._TT["INFO"] = "О календаре"; Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" +
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
"\n\n" +
"Выбор даты:\n" +
"- Чтобы выбрать год, используйте кнопками < и > \n" +
"- Чтобы выбрать месяц воспользуйтесь кнопками < и > \n" +
"- Удерживайте кнопку мыши на любой из кнопок, расположенных выше, для быстрого выбора.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Time selection:\n" +
"- Click on any of the time parts to increase it\n" +
"- or Shift-click to decrease it\n" +
"- or click and drag for faster selection.";
 
Calendar._TT["PREV_YEAR"] = "Нажмите, что бы перейти на предыдущий год. Нажмите и удерживайте для показа списка лет."; Calendar._TT["PREV_MONTH"] = "Нажмите, что бы перейти на предыдущий месяц. Нажмите и удерживайте для показа списка месяцев."; Calendar._TT["GO_TODAY"] = "Текущая дата"; Calendar._TT["NEXT_MONTH"] = "Нажмите, что бы перейти на следующий месяц. Нажмите и удерживайте для показа списка месяцев."; Calendar._TT["NEXT_YEAR"] = "Нажмите, что бы перейти на следующий год. Нажмите и удерживайте для показа списка лет."; Calendar._TT["SEL_DATE"] = "Выбор даты."; Calendar._TT["DRAG_TO_MOVE"] = "Потяните, чтобы переместить"; Calendar._TT["PART_TODAY"] = "Сегодня"; Calendar._TT["DAY_FIRST"] = "Показывать первые %s"; Calendar._TT["WEEKEND"] = "0,6"; Calendar._TT["CLOSE"] = "Закрыть"; Calendar._TT["TODAY"] = "Сегодня"; Calendar._TT["TIME_PART"] = "Shift + клик или перетаскивание мышкой позволит изменить значение."; Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d"; Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e"; Calendar._TT["WK"] = "нед."; Calendar._TT["TIME"] = "Время:";
window.addEvent('domready', function() {
$$('.Tips1').each(function(el) {
var title = el.get('title');
if (title) {
var parts = title.split('::', 2);
el.store('tip:title', parts[0]);
el.store('tip:text', parts[1]);
}
});
var JTooltips = new Tips($$('.Tips1'), { maxTitleChars: 50, className: 'djcf_label', fixed: false});
});
 
jQuery(function(){
 
plupload.addI18n({
'Select files' : 'Загру
Записан
Grigory S.
Завсегдатай
*****

Репутация: +68/-0
Offline Offline

Пол: Мужской
Сообщений: 685


(с)


« Ответ #9 : 08.10.2015, 18:11:04 »

libraries\joomla\html\html\behavior.php
Записан
serrggeee
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 16


« Ответ #10 : 08.10.2015, 22:10:15 »

да разобраться будет трудновато но как я понимаю эта функия добавляется в конец каждой для ее вызова
protected static function _getJSObject($array = array())
   {
      // Initialise variables.
      $object = '{';

      // Iterate over array to build objects
      foreach ((array) $array as $k => $v)
      {
         if (is_null($v))
         {
            continue;
         }

         if (is_bool($v))
         {
            if ($k === 'fullScreen')
            {
               $object .= 'size: { ';
               $object .= 'x: ';
               $object .= 'window.getSize().x-80';
               $object .= ',';
               $object .= 'y: ';
               $object .= 'window.getSize().y-80';
               $object .= ' }';
               $object .= ',';
            }
            else
            {
               $object .= ' ' . $k . ': ';
               $object .= ($v)? 'true' : 'false';
               $object .= ',';
            }
         }
         elseif (!is_array($v) && !is_object($v))
         {
            $object .= ' ' . $k . ': ';
            $object .= (is_numeric($v) || strpos($v, '\\') === 0)? (is_numeric($v))? $v : substr($v, 1) : "'" . $v . "'";
            $object .= ',';
         }
         else
         {
            $object .= ' ' . $k . ': ' . JHtmlBehavior::_getJSObject($v). ',';
         }
      }
Код
 
 
Записан
serrggeee
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 16


« Ответ #11 : 08.10.2015, 22:37:13 »

как я понимаю вот этот метод
Код
public static function uploader()
{
return;
}
 
а объявляется он здесь что бы была возможность добить к нему то что я написал в предыдущем сообщении?
Записан
Grigory S.
Завсегдатай
*****

Репутация: +68/-0
Offline Offline

Пол: Мужской
Сообщений: 685


(с)


« Ответ #12 : 08.10.2015, 23:12:23 »

А что вы вообще хотите сделать?
Записан
serrggeee
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 16


« Ответ #13 : 08.10.2015, 23:56:28 »

Хочу отредактировать форму и сделать ограничение на загрузку в одну фотографию. Вот нашел функцию которая выводит
эту форму getUploader создал такую же с другим название getUploader1 но в итоге получаю
Код:
Fatal error: Call to undefined method DJUploadHelper::getUploader1() in /home/p313923/public_html/agr/components/com_djclassifieds/views/additem/tmpl/default_logo.php on line 56
хотя я ее же определил . вот как осуществляется вызов
Код
$this->uploader1 = DJUploadHelper::getUploader1('uploader1', $settings1);
Записан
kasper9820
Осваиваюсь на форуме
***

Репутация: +2/-5
Offline Offline

Пол: Мужской
Сообщений: 163



« Ответ #14 : 03.02.2016, 13:41:56 »

Подскажите несколько вопросов. Никак не поборю head

Как в шаблоне ...index.php вывести пути к файлам, которые попадают в head (или как понять от куда они туда попадают)?
Как исключить и хеада скрипты и стили, которые подключаютя из самих модулей, плагинов и т.д. JFactory::getDocument()->addScript('...'); - не всему голова.

Как реализовать это
Код:
на событие onbeforecompilehead в котором прописать условие:
$app=JFactory::getApplication();
if ( $app->isAdmin() ) {  ...  }

хочу в результате разложить хеад по полочкам, т.к. при использовании разных к. м. п. глюков немеряно
Записан
zomby6888
Живу я здесь
******

Репутация: +168/-3
Offline Offline

Пол: Мужской
Сообщений: 1538


« Ответ #15 : 04.02.2016, 18:50:09 »

Если собираетесь писать плагин читайте мануалы по созданию плагина

https://cmscafe.ru/docs/joomla/developer/plugin-joomla-2-5-joomla-3

В нем вы можете получить массив скриптов, стилей, содержимое буфера модулей, компонента.
Код
...
function onBeforeCompileHead ()
{
$app = JFactory::getApplication();
if($app->isAdmin()) {
//бекенд
} else {
//фронтенд
}
 
$doc = JFactory::getDocument();
var_dump($doc->_scripts);         //массив внешних скриптов, ключами которого являются пути к файлам
var_dump($doc->_script);          //массив inline скриптов
var_dump($doc->_styleSheets); //массив внешних стилей, ключами которого являются пути к файлам
var_dump($doc->_style);        //массив inline стилей
 
$buffer = $doc->getBuffer();
$component = $buffer['component'];   //содержимое компонента
$modules = $buffer['modules'];           //содержимое модулей
}
...
 

С содержимым самого шаблона чуть сложнее, так как класс JDocumentHTML хранит содержимое шаблона в защищенном свойстве _template. Тут варианты либо использовать отражения, либо отрендерить файл шаблона самостоятельно, по его пути. Чтобы получить все скрипты которые захардкодили в шаблон, модуль, или компонент придется распарсить их содержимое с помощью регулярных выражений или каким нибудь XML парсером, например моим любимым DOMDocument.
« Последнее редактирование: 04.02.2016, 18:54:17 от zomby6888 » Записан
chuga
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 5


« Ответ #16 : 18.05.2016, 17:48:38 »

Скажите, а как можно переместить  JavaScript и CSS, как рекомендует https://developers.google.com/speed/pagespeed/insights/?hl=ru&url=https%3A%2F%2Fclipso.by%2F&tab=desktop
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet