These are chat archives for dru-io/Drupal

21st
Oct 2016
Raman Starshykh
@dashiwa
Oct 21 2016 10:07
Темизировал ли кто BEF? До уровня элементов формы..Стек молчит по поводу..
alexd73
@alexd73
Oct 21 2016 14:38
Подскажите, почему такой код в конекстном фильтре выдает 500 (End of script output before headers: php)
$nids = db_query('SELECT n.nid FROM {node} as n WHERE n.type = :type and n.title REGEXP :regexp', array(':type' => 'product', ':regexp' => '[a-zA-Z]'))->fetchCol();
return implode('+', $nids);
без return implode('+', $nids); все нормально..
в PHP-блоке выполняется с return на ура
boolboost
@boolboost
Oct 21 2016 14:39
Это d7
alexd73
@alexd73
Oct 21 2016 14:39
да
boolboost
@boolboost
Oct 21 2016 14:40
Если это шаблон ьам должно быть echo
А блин
alexd73
@alexd73
Oct 21 2016 14:40
Это контекстный фильтр
boolboost
@boolboost
Oct 21 2016 14:40
Есть вероятность что nids не массив))
Иногда
И по этому эрорит
В остальном проблемы не вижу
Посмотрите лог
alexd73
@alexd73
Oct 21 2016 14:44

С таким кодом, в другом фильтре, все нормально.

$nids = db_query('SELECT n.nid from {node} as n INNER JOIN (SELECT title from {node} GROUP BY title HAVING COUNT(*) > 1) as n2 ON n.title=n2.title')->fetchCol();

return implode('+', $nids);

в PHP-блоке выполняется http://i.imgur.com/1tuVqSD.png

есть подозрения, что из-за array(':type' => 'product', ':regexp' => '[a-zA-Z]
boolboost
@boolboost
Oct 21 2016 14:45
Может и так
Но нужно смотреть логи
alexd73
@alexd73
Oct 21 2016 14:45
логи чего?
boolboost
@boolboost
Oct 21 2016 14:45
Там должно было проскочить
Лог ошибок
500 же
alexd73
@alexd73
Oct 21 2016 14:46
апач пишетEnd of script output before headers: php
boolboost
@boolboost
Oct 21 2016 14:47
Странно
Ведь вы ничего не писали
Эта ошибка происходит если header уже готов
А нее
Наоборот))
Если сначало был текст echo например выведен
А потом уже шапка в описание контента страницы
Причины две или что то всё таки отписалось
И должно было быть в логах
Или вы сначало что то отрендрили а потом drupal goto вызвали
Попробуйте поменять запрос
alexd73
@alexd73
Oct 21 2016 14:50
Это контекстный фильтр.. весь пхп в две строки.. запрос меняю
boolboost
@boolboost
Oct 21 2016 14:50
Проверьте ваш запрос на работоспособность
alexd73
@alexd73
Oct 21 2016 14:50

Проверьте ваш запрос на работоспособность

Выше скриншот..

boolboost
@boolboost
Oct 21 2016 14:51
Ну значит происходит ошибка и пишится echo
alexd73
@alexd73
Oct 21 2016 14:52
$nids = db_query('SELECT n.nid FROM {node} as n WHERE n.type = \'product\' and n.title REGEXP \'[a-zA-Z]\'')->fetchCol();
так тоже ошибка
boolboost
@boolboost
Oct 21 2016 14:53
В devel/php прлверяли?
Без return
Просто убедится что не работает точно
И $nids посмотреть что содержит
alexd73
@alexd73
Oct 21 2016 14:55
вверху скриношот из devel php, возвращает строку с +
dpm($nids) - array
boolboost
@boolboost
Oct 21 2016 14:56
Магия=\
Щас у себя гляну
alexd73
@alexd73
Oct 21 2016 15:05
Я на разных сайтах проверил..
boolboost
@boolboost
Oct 21 2016 15:07
Enter PHP code that returns TRUE or FALSE
alexd73
@alexd73
Oct 21 2016 15:08
Похоже какой-то спецсивол залез..
boolboost
@boolboost
Oct 21 2016 15:08
Хе
Серьёздно
А тут проверяю
alexd73
@alexd73
Oct 21 2016 15:08
руками переписал ретурн
boolboost
@boolboost
Oct 21 2016 15:10
А есть лекарство от этого?
Я как то пару лет назад такое ловил
Но слачается редко крайне
Работает?
alexd73
@alexd73
Oct 21 2016 15:10
блин, на тестовом работало, а на боевом - хрен ))
boolboost
@boolboost
Oct 21 2016 15:11
Жёстко
alexd73
@alexd73
Oct 21 2016 15:35
Добавил LIMIT - ошибка пропала.
без лимита выборка 15077строк
boolboost
@boolboost
Oct 21 2016 15:37
)
Ну да логично
Но и с лимитом если не повезёт
По печаль
alexd73
@alexd73
Oct 21 2016 15:39

Но и с лимитом если не повезёт

Что имеешь ввиду?

boolboost
@boolboost
Oct 21 2016 15:39
Не найдёт по регулярки нужное количество записей
Пробижется по всем
Одна надежда на кеши в общем
alexd73
@alexd73
Oct 21 2016 15:40
так ведь сначала регулярка, а потом лимит, нет?
alexd73
@alexd73
Oct 21 2016 16:00
Я правильно понимаю, что это ограничение длинны строки вьюшного запроса SQL срабатывает?
тогда поможет max_allowed_packet
ход мыслей правильный?
boolboost
@boolboost
Oct 21 2016 16:06
Да не заморачийвайтесь я не об этом
Вроде это максимальный размер пакета который может прийти от mysql
Но лучше загуглить, я легко могу соврать
alexd73
@alexd73
Oct 21 2016 16:10
Опытным путем удалось установить, что limit 5600 срабатывает без ошибки..
alexd73
@alexd73
Oct 21 2016 19:19
Ребят, а не в курсе, в какой очередности вьюха обрабатывает фильтры?
обычный
открытый
конеткстный
boolboost
@boolboost
Oct 21 2016 19:21
Ну в порядки их располодения
Что обычныф что контекстный
Ой
Обычныйи раскрытый*
А вот что сначало контекстый или обыченый не знаю
alexd73
@alexd73
Oct 21 2016 19:24
это я к прошлому вопросу про лимит..
если они в открытом фильтре отфильтруют вьюху по полю, то она сначала применит фильтр по полю, а потом контекстный? ТОгда все норм.. А если наоборот, то косяк. ))
boolboost
@boolboost
Oct 21 2016 19:30
В views есть настройка показывать sql запрос
Что то мне подсказывает что оно в where добавляется
Во первых порядок увидишь если оно так, во вторых конятно станет с лимитом он или без)
Я просто не помню
Но лимит дествует на записи а не на сущности или поля
Если вывод ввиде поле то да можно накосячить
В общем sql смотри..
alexd73
@alexd73
Oct 21 2016 19:53
Я туплю.. пофиг на запрос.. я ж лимит ставлю на выдачу nid в контекстном фильтре, а не в общем запросе. независимо, какой он будет по счету, он все равно выдает 5600 строк, и остальные ноды просто идут лесом..
так что - лыко мочало, начинай с начала ))) придется писать свой фильтр
boolboost
@boolboost
Oct 21 2016 19:59
Ну да у тебя там отдельный