Cyrax_02
С нами с 04 августа 2013; Место в рейтинге пользователей: #250warnings не отобр.в логах php, но отобр.в л-х modx
Не знаю, связано это с modx или нет.
В настройках php прописал отображение всех сообщений:
При этом в логах modx эти «мягкие» ошибки отображаются. В чём дело? Не пойму.
Может, это modx их перехватывает? Если да, то как сделать так, чтобы эти «мягкие» ошибки выводились также и в логи веб-сервера?
В настройках php прописал отображение всех сообщений:
error_reporting= E_ALL | E_STRICTApache перезагружал. В итоге все ошибки, приводящие к останову выполнения кода, в логах веб-сервера отображаются. А более «мягкие» ошибки, которые НЕ приводят к останову кода (например, в php-функцию передаётся параметр некорректного типа), в логах веб-сервера по-прежнему НЕ отображаются.
При этом в логах modx эти «мягкие» ошибки отображаются. В чём дело? Не пойму.
Может, это modx их перехватывает? Если да, то как сделать так, чтобы эти «мягкие» ошибки выводились также и в логи веб-сервера?
Как заставить xpdo НЕ заключать значение в кавычки
Вопрос простой: как заставить xpdo НЕ заключать значение в кавычки:
Здесь мы нуль заключается в кавычки:
Можно, конечно, отказаться от ключа и всё условие целиком записать в качестве значения:
$query->where(array(array('tvTable3.value:IS' => null),
array('tvTable3.value:=' => ''),
array('tvTable3.value:<' => 0)),
xPDOQuery::SQL_OR);
Здесь мы нуль заключается в кавычки:
`tvTable3`.`value` IS NULL OR `tvTable3`.`value` = '' OR `tvTable3`.`value` <= '0'
Можно, конечно, отказаться от ключа и всё условие целиком записать в качестве значения:
$query->where(array(array('tvTable3.value:IS' => null),
array('tvTable3.value:=' => ''),
array('tvTable3.value <= 0')),
xPDOQuery::SQL_OR);
Но в этом случае мы исключаем значение 0 из xpdo-обработки. Ваше мнение: Flash или HTML5 для реклам. баннеров
Вопрос, конечно, не вписывается в тематику данного сайта, но хотел бы узнать ваше личное мнение, Василий, по данному вопросу:
На сегодняшний день разрабатывать рекламные анимированные баннеры для сайта целесообразнее на Flash или HTML5? В данный момент не могу определиться. Дайте конструктивные выкладки.
На сегодняшний день разрабатывать рекламные анимированные баннеры для сайта целесообразнее на Flash или HTML5? В данный момент не могу определиться. Дайте конструктивные выкладки.
'resource/delete' без удаления дочерних ресурсов
В продолжение этой темы:
Удаление ресурсов в MODX Revolution
Вопрос: как «сказать» процессору 'resource/delete', что удалять дочерние ресурсы не нужно?
Удаление ресурсов в MODX Revolution
Вопрос: как «сказать» процессору 'resource/delete', что удалять дочерние ресурсы не нужно?
Артефакты MinifyX при его вызове через runSnippet
MinifyX можно использовать двумя способами:
Вариант 1. Как обычно:
Вариант 2. Вызываем в собственном сниппете через $modx->runSnippet():
Так вот. Во втором варианте наблюдаются следующие артефакты (весь кэш в браузере полностью отключил, браузер перезагрузил):
Вариант 1. Как обычно:
[[!MinifyX? &cssSources=`/css/st.css` &minifyCss = `1` &forceUpdate = `0`
®isterCss = `placeholder`
&cacheFolder=`css/min/` &cssFilename = `css1`]]
[[+MinifyX.css]]
Вариант 2. Вызываем в собственном сниппете через $modx->runSnippet():
$modx->runSnippet('MinifyX', array('cssSources' => '/css/st.css', 'minifyCss' => 1, 'forceUpdate' => 0,
'registerCss' => 'placeholder',
'cacheFolder' => 'css/min/', 'cssFilename' => 'css2'));
return $modx->placeholders['MinifyX.css'];
Так вот. Во втором варианте наблюдаются следующие артефакты (весь кэш в браузере полностью отключил, браузер перезагрузил):
pdoTools::getChunk -обработка прочих прейсхолдеров
Вопрос такой. pdoTools::getChunk() самостоятельно обрабатывает только те плейсхолдеры, которые указаны вторым параметром? Все остальные плейсхолдеры (за исключением лексикона) обрабатывает стандартный парсер modx?
И для того, чтобы pdoTools::getChunk() самостоятельно обработал все плейсхолдеры modx (не передавая их стандартному парсеру), необходимо:
а) либо вторым параметром передавать что-то вроде array_merge($placeholders, $modx->placeholders);
б) либо перегрузить метод pdoTools::getChunk(), добавив обработку плейсхолдеров modx, не указанных вторым параметром
И для того, чтобы pdoTools::getChunk() самостоятельно обработал все плейсхолдеры modx (не передавая их стандартному парсеру), необходимо:
а) либо вторым параметром передавать что-то вроде array_merge($placeholders, $modx->placeholders);
б) либо перегрузить метод pdoTools::getChunk(), добавив обработку плейсхолдеров modx, не указанных вторым параметром
Как проверять TV-поля одновр. и на '', и на NULL
Для определённости рассмотрим функционал сниппета pdoResources.
Проблема заключается в том, что классическим форматом JSONxPDO в параметре &where в общем случае невозможно указать проверку значения некоторого TV-поля одновременно и на пустое значение, и на NULL. В каких случаях может понадобиться такая проверка — напишу ниже.
Для примера возьмём параметр introtext (в БД modX это поле может принимать значения NULL)
Казалось бы, чего проще:
Проблема заключается в том, что классическим форматом JSONxPDO в параметре &where в общем случае невозможно указать проверку значения некоторого TV-поля одновременно и на пустое значение, и на NULL. В каких случаях может понадобиться такая проверка — напишу ниже.
Для примера возьмём параметр introtext (в БД modX это поле может принимать значения NULL)
Казалось бы, чего проще:
&where=`{"introtext":"", "OR:introtext:IS":null}`
Но проблема здесь в том, что в конечном запросе перед нашим условием в преобладающем большинстве случаев будут стоять ещё и другие условия, которые де факто будут объединены с нашим условием логикой «AND», причём наше условие в скобки взято не будет. В итоге в конечном запросе мы получим следующее условие:WHERE (<i>прочие условия</i> AND `modResource`.`introtext` = '' OR `modResource`.`introtext` IS NULL)
Как видим, логика нарушена.