Основной курс по Joomla
0 Пользователей и 1 Гость просматривают эту тему.
  • 16 Ответов
  • 1204 Просмотров
*

serrggeee

  • Захожу иногда
  • **
  • 16
  • 0
jdoc:include type="head"
« : 08.10.2015, 15: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.

  • Завсегдатай
  • *****
  • 664
  • 69
  • (с)
Re: jdoc:include type="head"
« Ответ #1 : 08.10.2015, 15:46:31 »
А что именно вам нужно отредактировать?

Сюда попадают всё js, которые подключены через
Код: php
JFactory::getDocument()->addScript('...');
JHtml::_('script', '...');
Не задав правильный вопрос, невозможно получить правильный ответ.
Для "спасибок" существует кнопочка "+".
*

serrggeee

  • Захожу иногда
  • **
  • 16
  • 0
Re: jdoc:include type="head"
« Ответ #2 : 08.10.2015, 16:08:37 »
а как я могу его редактировать?
*

Grigory S.

  • Завсегдатай
  • *****
  • 664
  • 69
  • (с)
Re: jdoc:include type="head"
« Ответ #3 : 08.10.2015, 16:12:53 »
Можно написать плагин, и перед рендером страницы изменять как хотите.
Не задав правильный вопрос, невозможно получить правильный ответ.
Для "спасибок" существует кнопочка "+".
*

serrggeee

  • Захожу иногда
  • **
  • 16
  • 0
Re: jdoc:include type="head"
« Ответ #4 : 08.10.2015, 17:01:26 »
вы наверное не поймете, у меня в head есть код js он уже сформирован, вот я хочу его подправить, но не пойму как он формируется, зачем чтото переделывать
*

Grigory S.

  • Завсегдатай
  • *****
  • 664
  • 69
  • (с)
Re: jdoc:include type="head"
« Ответ #5 : 08.10.2015, 17:04:50 »
Так вы нормально пишите что вы хотите. Смотрите откуда js-ка подключается, и редактируйте.
Не задав правильный вопрос, невозможно получить правильный ответ.
Для "спасибок" существует кнопочка "+".
*

serrggeee

  • Захожу иногда
  • **
  • 16
  • 0
Re: jdoc:include type="head"
« Ответ #6 : 08.10.2015, 18:09:43 »
нет там не подключается а формируется прям в техах head
*

Grigory S.

  • Завсегдатай
  • *****
  • 664
  • 69
  • (с)
Re: jdoc:include type="head"
« Ответ #7 : 08.10.2015, 18:31:12 »
...
А что за код? Joomla, или сторонних расширений?

P.S. Покажите кусок кода, надоело вытягивать с вас информацию, ведь по сути это вам нужно.
Не задав правильный вопрос, невозможно получить правильный ответ.
Для "спасибок" существует кнопочка "+".
*

serrggeee

  • Захожу иногда
  • **
  • 16
  • 0
Re: jdoc:include type="head"
« Ответ #8 : 08.10.2015, 18:49:30 »
Код: javascript
<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.

  • Завсегдатай
  • *****
  • 664
  • 69
  • (с)
Re: jdoc:include type="head"
« Ответ #9 : 08.10.2015, 19:11:04 »
libraries\joomla\html\html\behavior.php
Не задав правильный вопрос, невозможно получить правильный ответ.
Для "спасибок" существует кнопочка "+".
*

serrggeee

  • Захожу иногда
  • **
  • 16
  • 0
Re: jdoc:include type="head"
« Ответ #10 : 08.10.2015, 23: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). ',';
         }
      }
Код: javascript

*

serrggeee

  • Захожу иногда
  • **
  • 16
  • 0
Re: jdoc:include type="head"
« Ответ #11 : 08.10.2015, 23:37:13 »
как я понимаю вот этот метод
Код: javascript
public static function uploader()
{
return;
}
а объявляется он здесь что бы была возможность добить к нему то что я написал в предыдущем сообщении?
*

Grigory S.

  • Завсегдатай
  • *****
  • 664
  • 69
  • (с)
Re: jdoc:include type="head"
« Ответ #12 : 09.10.2015, 00:12:23 »
А что вы вообще хотите сделать?
Не задав правильный вопрос, невозможно получить правильный ответ.
Для "спасибок" существует кнопочка "+".
*

serrggeee

  • Захожу иногда
  • **
  • 16
  • 0
Re: jdoc:include type="head"
« Ответ #13 : 09.10.2015, 00: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
хотя я ее же определил . вот как осуществляется вызов
Код: php
$this->uploader1 = DJUploadHelper::getUploader1('uploader1', $settings1);
*

kasper9820

  • Осваиваюсь на форуме
  • ***
  • 100
  • -4
Re: jdoc:include type="head"
« Ответ #14 : 03.02.2016, 14:41:56 »
Подскажите несколько вопросов. Никак не поборю head

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

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

хочу в результате разложить хеад по полочкам, т.к. при использовании разных к. м. п. глюков немеряно
Бесплатный хостинг для сайтов-визиток на joomla 3.5
*

zomby6888

  • Живу я здесь
  • ******
  • 1484
  • 167
Re: jdoc:include type="head"
« Ответ #15 : 04.02.2016, 19:50:09 »
Если собираетесь писать плагин читайте мануалы по созданию плагина

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

В нем вы можете получить массив скриптов, стилей, содержимое буфера модулей, компонента.
Код: php
...
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, 19:54:17 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

chuga

  • Новичок
  • *
  • 6
  • 0
Re: jdoc:include type="head"
« Ответ #16 : 18.05.2016, 18:48:38 »
Скажите, а как можно переместить  JavaScript и CSS, как рекомендует https://developers.google.com/speed/pagespeed/insights/?hl=ru&url=https%3A%2F%2Fclipso.by%2F&tab=desktop