Топики пользователя «vanchelo»

[REVO] Метод вывода журнал ошибок

Нашел для себя удобный способ вывода ошибок без необходимости смотреть в Отчеты → Журнал ошибок, ошибки выводятся в месте их появления
Для этого нужно зайти в Система → Настройки системы → Журнал ошибок → Метод вывода журнал ошибок или поиском по Настройкам системы «log_target»
Там есть 3 разным способы вывода ошибок
1. FILE — вывод ошибок в Журнал ошибок
2. HTML — вывод ошибок в месте их появления как HTML элемента
3. ECHO — вывод ошибок в месте их появления просто строкой (его и использую для отлавливания косяков)

Еще есть Уровень записи сообщений в журнал ошибок
Там 4 варианта
0. FATAL
1. ERROR
2. WARN
3. INFO
4. DEBUG

[REVO] FirePHP и modFire

Кто-нибудь пользовался modFire для FirePHP modx.com/extras/package/modfire и стоит ли вообще им пользоваться?

[EVO] Мелкие сниппеты на замену phx

Заменил вот такую конструкцию
<div class="addit-data">
[*addit:is=``:then=``:else=`
<fieldset>
<legend>Дополнительные опции</legend>
[*addit:shk_widget=`checkbox:addit:desc_page:br:price`*]
</fieldset>
`*]
</div>

На такую (добавил комментарии)
<?php
// Проверяем входные данные, если TV параметр не указан, ничего не делаем
if(empty($tv)) {return '';}
// Получаем TV
$tvValue = $modx->getTemplateVar($tv);
// Если значение TV параметра пустое, ничего не делаем
if(empty($tvValue['value'])) {return '';}
// Каждый параметр располагаем с новой строки
$br = isset($br) ? '<br />' : '';
// Идентификатор документа
$docid = '[*id*]';
// Будет ли выбран первый элемент
$first_selected = isset($first_selected) ? true : false;
// Функция на событие onclick
$function = 'jQuery.additOpt(this)';
// Определяем переменную в которой будет располагаться результат работы сниппета, т.е. доп. параметры
$shk_output = '';
// Контейнер для дополнительных параметров (обертка)
$otag = '<div class="addit-data"><fieldset><legend>Дополнительные опции</legend>';
$ctag = '</fieldset></div>';

// Задаем значение TV параметра
$value = !empty($tvValue) ? explode("||",$tvValue['value']) : array();

// Выставляем счетчик на 0
$cnt = 0;
// Добавили к переменной открывающий тег обертки
$shk_output .= $otag;

// Разбираем массив параметров
foreach($value as $val){
    list($item,$itemvalue) = explode("==",$val);
    
    // Если цена доп. параметра меньше 0
    if ($itemvalue<0) {$price = ' <span style="font:700 11px tahoma;color:red">('.$itemvalue.' грн.)</span>';}
    // Если цена доп. параметра равна 0
    elseif ($itemvalue==0) {$price = '';}
    // Если цена доп. параметра больше 0
    else {$price = ' <span style="font:700 11px tahoma;color:red">(+'.$itemvalue.' грн.)</span>';}
    // Выставляем отмеченные параметры
    $selected = $cnt==0 && $first_selected ? ' checked="checked"' : '';
    // Формируем доп. параметр
    $shk_output .= "\n".'<label><input class="addparam" type="checkbox" name="'.$tv.'__'.$docid.'__'.$cnt.'" value="'.$cnt.'__'.$itemvalue.'" id="'.$tvname.$docid.$cnt.'"'.$selected.' onclick="'.$function.'" /> '.$item.$price.'</label>'.$br;
    // Увеличиваем счетчик на 1
    $cnt++;

}
// Добавляем к переменной закрывающий тег обертки
$shk_output .= $ctag;
// Возвращаем готовый результат
return $shk_output;
?>

Вызов
[[addit_params?&tv=`addit`&br=``]]

Сделал побыстрому (взял кусок кода из shk_widget модифиатора для phx) ничего особо не продумывал, доделаю позже. в &tv ставим имя TV параметра и получаем на выходе чекбоксы с названиями и ценой, т.е. для дополнительных параметров товара. Кто юзал Шопкипер знает. Тут еще не все функции работают из shk_widget, т.е. не полноценная замена. Но допилить не тяжело.

Кстати пробовал методы getTemplateVarOutput и getTemplateVar, так вот последний на 1 запрос делает меньше, т.е. если нам нужен не обработанный вывод значения TV, то наверное лучше пользоваться последним
Вот собственно описание этих двух методов
http://wiki.modxcms.com/index.php/API:getTemplateVarOutput
http://wiki.modxcms.com/index.php/API:getTemplateVar

Поиск по тегам

Хорошо хоть поиск по тегам работает )
community.modx-cms.ru/tag/revo

[PHP IDE] Кто какой IDE использует

Кто каким инструментом пользуется для написания скриптов?

[REVO][xPDO] Получить объект

Какой метод получения объекта на ваш взгляд правильнее

1-й: выбираем только те колонки которые необходимы
$q = $this->modx->newQuery('modResource');
$q->select(array('id','pagetitle'));
$q->where(array('id' => $id));
$resource = $this->modx->getObject('modResource',$q);
$pagetitle = $resource->get('pagetitle');

2-й: тянет все колонки
$resource = $this->modx->getObject('modResource', $id);
$pagetitle = $resource->get('pagetitle');

Оффтоп по php

Подскажите пожалуйста, какую запись разумнее использовать
if(!$x) $x = 'x';
if(!$y) $y = 'y';
if(!$z) $z = 'z';
или эту
$y = $y ? $y : 'y';
$z = $z ? $z : 'z';
$x = $x ? $x : 'x;


Или это вообще не имеет значения так как результат одинаков?

Странная ошибка

Fatal error: Call to a member function get() on a non-object in
/www/core/components/breadcrumbs/model/breadcrumbs/breadcrumbs.class.php on line 170

периодически вываливается такая ошибка на сайте, когда часто обновляю страницу в браузере

[REVO] Оформление админки

Кто смотрел исходный код админки Revo?
Простое диалоговое окно Выйти содержит две кнопки «Да» и «Нет», вот их исходный код. Вот эта вся куча кода нужна чтобы показать две кнопки???? о_О
Я подозреваю что так везде! Как оно может быстро работать? А как это все под себя поправить, боюсь даже браться


( Читать дальше )