These are chat archives for dru-io/Drupal

12th
Jan 2016
Alexandr.Poddubsky
@AlexandrPoddubsky
Jan 12 2016 08:54 UTC
всем добрый день
$form['#attached']['js'][] = array(
'type' => 'file',
'data' => $path . '/ffff.js',
'weight' => 10,
'every_page' => TRUE,
); почему js подрубается только на странице формы? чяднт
Andrew Berezovsky
@duozersk
Jan 12 2016 08:57 UTC
потому что этот #attached обрабатывается только когда форма рендерится
Alexandr.Poddubsky
@AlexandrPoddubsky
Jan 12 2016 09:12 UTC
спасибо. но форма рендерится в модалке. то есть по идее мне надо на клик аттачить свой js тогда? или как?
Andy Postnikov
@andypost
Jan 12 2016 09:14 UTC
Зависит от того, кто модалку выводит, ctools вот умеет мержить,
Смотри в сторону ajaxPageState
Alan Bondarchuk
@fortis
Jan 12 2016 09:20 UTC
есть хак) некоторые модули используют
Alexandr.Poddubsky
@AlexandrPoddubsky
Jan 12 2016 09:21 UTC
используется colorbox
Alan Bondarchuk
@fortis
Jan 12 2016 09:22 UTC

возвращают с разметкой в аяксе дополнительно еще нечто вроде

<head><script src="…."></script></head><body></body>

Alexandr.Poddubsky
@AlexandrPoddubsky
Jan 12 2016 09:23 UTC
ну то есть подключаю свой какой то js и в нем уже аттач делаю, так?
Alan Bondarchuk
@fortis
Jan 12 2016 09:23 UTC
нет просто в форме #suffix и там этот кусок хтмл
Alexandr.Poddubsky
@AlexandrPoddubsky
Jan 12 2016 09:24 UTC
спасибо. сейчас гляну что вы и энди подсказал.
Alan Bondarchuk
@fortis
Jan 12 2016 09:25 UTC
хотя у меня модалки чисто свои с #ajax и у меня подгружает то что аттачу
Alexandr.Poddubsky
@AlexandrPoddubsky
Jan 12 2016 09:27 UTC
мне нужно чтобы на всех страницах был свой js а не только на странице формы
точнее вызывался на всех страницах
Anton L. Safin
@als-studio
Jan 12 2016 09:28 UTC
А что мешает drupal_add_js в init модуля добавить?
Alexandr.Poddubsky
@AlexandrPoddubsky
Jan 12 2016 09:29 UTC
да вот некоторые обмазали фекалиями add_js и init а мне стало интересно, как сделать правильно с их слов. учится всегда приятно
Andrew Berezovsky
@duozersk
Jan 12 2016 09:33 UTC
^^ не надо перевирать мои слова
Alexandr.Poddubsky
@AlexandrPoddubsky
Jan 12 2016 09:39 UTC
^^@пуканотушитель у вас сработал? и не собираюсь перевирать, код ревью я вас не просил делать. ну сделали, спасибо. и не более, а если вам надо оплатить то пожалуйста, оплотим. плюс я спрашивал в чатике, по делу и не переходил на личности и не оскорблял. я думаю и закончим на этом, я не обидчивый. возраст не позволяет обижаться на молодежь
Andrew Berezovsky
@duozersk
Jan 12 2016 09:45 UTC
да что вы всё время в бутылку лезете :) говорите про код, не нужно художественных изысков… применительно ко фразе выше - никто ничего фекалиями не мазал
Alan Bondarchuk
@fortis
Jan 12 2016 09:53 UTC
не думаю что инит выполняемый в аяксе подключит скрипт
если же нужно на всех страницах подключать то это другой хук page alter / page build
Max Khabibullin
@KhabibullinMax
Jan 12 2016 10:03 UTC
Что-то у меня затык с forms api 7-ки
$form['field_responsible_tech']['#default_value'] = $user->uid;
верно же дефолтное значение указываю в hook_form_alter ?
Ivan
@Chi-teck
Jan 12 2016 10:06 UTC
@KhabibullinMax вроде верно, хотя зависит от типа элемента (field_responsible_tech)
Max Khabibullin
@KhabibullinMax
Jan 12 2016 10:08 UTC
select там
Ivan
@Chi-teck
Jan 12 2016 10:09 UTC
$user это текущий пользователь?
возможно global $user нет
Max Khabibullin
@KhabibullinMax
Jan 12 2016 10:10 UTC
да, перед этим global $user присутствует
=)
проверил на другом поле с селектом $form['field_status_comment']['#default_value'] = 3; - тоже не работает
Ivan
@Chi-teck
Jan 12 2016 10:11 UTC
а вообще форма алтерится?
Max Khabibullin
@KhabibullinMax
Jan 12 2016 10:11 UTC
получается, что проблема может быть только с указанием $form_id ? )
Ivan
@Chi-teck
Jan 12 2016 10:11 UTC
& перед $form стоит?
Max Khabibullin
@KhabibullinMax
Jan 12 2016 10:11 UTC
да, конечно
Max Khabibullin
@KhabibullinMax
Jan 12 2016 10:17 UTC
не пойму в чем еще может быть проблема, from_id проверил
Andrew Berezovsky
@duozersk
Jan 12 2016 10:19 UTC
у селекта дефолтное значение задается не в виде массива?
Ivan
@Chi-teck
Jan 12 2016 10:19 UTC
попробуй что нибудь другое в форме поменять, например тайтл
 $form['field_status_comment']['#title'] = 'New title;
Andrew Berezovsky
@duozersk
Jan 12 2016 10:19 UTC
типа array(3 => 3)
Ivan
@Chi-teck
Jan 12 2016 10:19 UTC
@duozersk нет вроде
Max Khabibullin
@KhabibullinMax
Jan 12 2016 10:23 UTC
оп-па
похоже форма не альтерится тупо
странно, обычная форма комментирования
Ivan
@Chi-teck
Jan 12 2016 10:30 UTC
возможно алтер хук вообще не вызывается
Alan Bondarchuk
@fortis
Jan 12 2016 10:31 UTC
нет, не верно
у полей другая структура там еще LANGUAGE_NONE и 0
Ivan
@Chi-teck
Jan 12 2016 10:36 UTC
если это поле то тогда hook_field_widget_WIDGET_TYPE_form_alter() наверно предпочтительней
Alan Bondarchuk
@fortis
Jan 12 2016 11:05 UTC
наверно у него не виджет
хотя хз, поле то и в форме может быть, после форматтера
Ivan
@Punk-UnDeaD
Jan 12 2016 11:49 UTC
научу запускать отладчик, дорого
научу смотреть вкладку сетевых подключений в вебинспекторе, очень дорого
Andrew Berezovsky
@duozersk
Jan 12 2016 11:50 UTC
@Punk-UnDeaD что такое антипанели?
Ivan
@Punk-UnDeaD
Jan 12 2016 12:05 UTC
это как панели, с контекстами, пейнами, роутингом, цепочками вариантов
но антипанели
у меня ещё есть антироутинг для 7 друпала и антиформы
Andrew Berezovsky
@duozersk
Jan 12 2016 12:21 UTC
так а зачем нужны-то, когда есть панели?
Ivan
@Punk-UnDeaD
Jan 12 2016 12:22 UTC
ну если присмотреться, там рендерятся твиг шаблоны
что даёт серьёзный прирост производительности, например
панели нужны для тыканья в админке
Gor Martsen
@Gormartsen
Jan 12 2016 13:36 UTC
@Punk-UnDeaD
То есть основной прирост за счёт твига?
Или еще что?
Всем привет
Ivan
@Punk-UnDeaD
Jan 12 2016 13:37 UTC
не грузится всё то. что грузится для панелей
Gor Martsen
@Gormartsen
Jan 12 2016 13:38 UTC
А у антироутинга?
Ivan
@Punk-UnDeaD
Jan 12 2016 13:38 UTC
там два момента
он статический и чуть быстрее нативного
нативный в базу лезет, а мой на симфони компонентах и кешируется в код
Gor Martsen
@Gormartsen
Jan 12 2016 13:39 UTC
Чуть быстрее это сколько? Или зависит?
Ivan
@Punk-UnDeaD
Jan 12 2016 13:39 UTC
и мой не запускает весь бутстрап
Gor Martsen
@Gormartsen
Jan 12 2016 13:39 UTC
А понял идею
Ivan
@Punk-UnDeaD
Jan 12 2016 13:39 UTC
чуть быстрее - на полмилисекунды
но там основной проект, на котором всё основано - submodules
это возможность не создавая новых модулей писать обособленный код. который будет автоподгружаться
в семёрке нет ни обособленности, ни автоподгрузки
в восьмёрке и то и другое есть, но не так хорошо, как хотелось бы
Gor Martsen
@Gormartsen
Jan 12 2016 13:44 UTC
Хм. Ок
Спс за ответы
Кстати такая любопытная инфа - автопогрузка классов не имеет смысла на сервере с mod_php + opcode кешером
Ivan
@Punk-UnDeaD
Jan 12 2016 13:48 UTC
<?php

namespace d\improvement\debug_info;

use Drupal\Component\Utility\Timer;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;

/**
 * @event kernel.request
 * @priority 9999
 */
function onRequest() {
  Timer::start(__NAMESPACE__);
}

/**
 * @event kernel.response
 * @param FilterResponseEvent $event
 */
function onResponse(FilterResponseEvent $event) {
  $response = $event->getResponse();
  if ('text/html; charset=UTF-8' === $response->headers->get('content-type')) {
    $response->setContent($response->getContent() . '<!-- Page execution time was ' . Timer::read(__NAMESPACE__) . ' ms-->');
  }
  $response->headers->set('page-execution-time', Timer::read(__NAMESPACE__));
}
вот код сабмодуля для восьмёрки
это отдельный файл, который автоматически находится и подключается
больше ничего нет, всю обвязку генерит модуль
opcode кешер бывает пустым после перезапуска
автоподгрузка нужна
Gor Martsen
@Gormartsen
Jan 12 2016 13:51 UTC
Уточню - автопогрузка - находит код и грузит или грузит по требованию?
Что именно решается?
Для чего юзается?
Ivan
@Punk-UnDeaD
Jan 12 2016 13:53 UTC
автоподгрузка подключает файл с классом по имени класса, если класс не загружен
соответственно можно не подгружать классы полностью заранее
а просто использовать
Gor Martsen
@Gormartsen
Jan 12 2016 13:54 UTC
Ну вот. Я и говорю что не имеет смысла экстра код проверки. Лучше просто включать.
Ivan
@Punk-UnDeaD
Jan 12 2016 13:54 UTC
и как только класс будет использован впервые, автоподгрузчик его подгрузит
Gor Martsen
@Gormartsen
Jan 12 2016 13:54 UTC
Ну то таке.
Ivan
@Punk-UnDeaD
Jan 12 2016 13:54 UTC
так никто не проверяет, то пых всё сам делает
там ещё затраты по памяти есть, когда классы реально подгружены
но я лично это не замерял
Gor Martsen
@Gormartsen
Jan 12 2016 13:59 UTC
Та вот в том и прикол что они так или иначе и так уже в памяти:)
Если опкод кеширование включено
Ivan
@Punk-UnDeaD
Jan 12 2016 14:00 UTC
код да, в общей памяти
статические поля классов нет, и такое прочее
Gor Martsen
@Gormartsen
Jan 12 2016 14:01 UTC
Пример дай
И интересно что еще кроме статических полей?
И они точно не на этапе инициализации объекта а не подгоузки класс память получают?
Ivan
@Punk-UnDeaD
Jan 12 2016 14:02 UTC
я в недра не лез, я чисто логически
если есть статические поля классов, они занимают память
значит они занимают разную память
и эта память не от опкеша
Gor Martsen
@Gormartsen
Jan 12 2016 14:03 UTC
Ну для меня логически что память под статические поля выделяется в границе объекта класса а не на моменте компиляции и подгрузки файла класса
Ivan
@Punk-UnDeaD
Jan 12 2016 14:03 UTC
значит для управления доступом к этой памяти должны быть в памяти инстанса указатели
статические переменные доступны без создания объекта
я не готов говорить, сколько именно там тратится и какой выигрыш от опкеша, но точно тратится
Gor Martsen
@Gormartsen
Jan 12 2016 14:05 UTC
Надо будет почитать порыться в исходник ах и глянуть где именно они.
В любом случае имхо что с авто лоадеров что без - класс грузишь на момент когда надо
Ivan
@Punk-UnDeaD
Jan 12 2016 14:06 UTC
даже если файл в опкеше, класс недоступен до инклуда
это я точно знаю
Gor Martsen
@Gormartsen
Jan 12 2016 14:07 UTC
Верно. Но с опкешем сам инклуд - это возврат адреса в памяти а не чтение файла с диска
Ivan
@Punk-UnDeaD
Jan 12 2016 14:08 UTC
ну да, там лишь на парсинге файла экономия
опять же, файл устареть может
иначе бы мы не могли вести разработку, если б все классы в памяти лежали, а не пересчитывались обновлённые с диска
Gor Martsen
@Gormartsen
Jan 12 2016 14:09 UTC
Ну понятно сто при expire и первом чтении - оно с диска берет
И в зависимости от кешера - обновляет при изменении файла
Но что с автолоадером что без него ( чисто require_once) - одинаково будет дергаться диск при первом и с памяти при втором
Каким автолоадером пользуешься?
Ivan
@Punk-UnDeaD
Jan 12 2016 14:11 UTC
компосером
Gor Martsen
@Gormartsen
Jan 12 2016 14:11 UTC
Код смотрел?
Ivan
@Punk-UnDeaD
Jan 12 2016 14:11 UTC
в семёрке я сам по карте классов подгружал, а в восьмёрке карту компосеру скидывал
особо не всматривался. но на мой взгляд два автоподгрузчика хуже, чем один
Gor Martsen
@Gormartsen
Jan 12 2016 14:13 UTC
Ну суть моего сообщения в том, что автолоадер излишнее (за исключением упрощения кода поиска и подгрузки класс а файла вместо ручного require_once) при наличии опкеша
Ну и извратив с пере определением класса за счёт подмены в логике поиска файла класса
Ivan
@Punk-UnDeaD
Jan 12 2016 14:15 UTC
ну если у нас собрана полная карта классов, то ничего особо не ищется
а просто включается. как есть
а накладные расходы на подключение автолоадером 10% классов против безусловного подключения всех 100% надо ещё сравнить
Gor Martsen
@Gormartsen
Jan 12 2016 14:15 UTC
Ладно проехали
Ivan
@Punk-UnDeaD
Jan 12 2016 14:16 UTC
опять же, просто из списка классов нельзя выяснить, в каком порядке их подключать
Vitaliy VVS
@vistar
Jan 12 2016 20:44 UTC
http://drupalstyle.ru/
Это такой тонкий троллинг? Шаблоны Drupal на сайте на WP?
Alexander Dubovskoy
@adubovskoy
Jan 12 2016 20:57 UTC
да просто зарабатывают на рефералке с темлейтмонстра
там уж неважно на чем)
Vitaliy VVS
@vistar
Jan 12 2016 20:58 UTC
да это не ТМ: http://drupalstyle.ru/color-glass/, а чисто d.org