пятница, 23 ноября 2012 г.

ModX Revolution: Не загружается дерево документов

Если у нас имеется документ с множеством дочерних ресурсов (ну, скажем, тысяча страниц), во время загрузки дерева в админке он может притормаживать или, как в моём случае, вообще не показывать своих "детей". Что с этим сделать?

Мне помогло следующее решение: в меню "Система" выбираем пункт "Контексты" и создаём новый контекст. После создания он отобразится у нас в дереве документов с иконкой домика (первый контекст - web, тот, в котором по умолчанию лежат все материалы сайта). Берём "тяжёлый" ресурс и вместе со всеми дочерними страницами переносим в новый контекст.

Смотрим  - должно работать.

среда, 21 ноября 2012 г.

PHP Pchart: получаем координаты точек графика в пикселах

Речь идёт о последней версии 2.1.3, но метод настолько прост, что не должно возникнуть проблем и в более старых версиях.

Итак, допустим, нам нужно нарисовать геометрическую фигуру поверх графика (к примеру, с помощью drawRectangle) или подписать отдельную точку графика (drawText). Для этого нам нужны пиксельные координаты точек (PixelOffset). Получаем их примитивнейшим способом.

Открываем класс pDraw (classes/pDraw.php). Находим метод класса, который отрисовывает наш график (у меня это drawPlotChart). В начале добавляем строчку:

$PixelOffsetCoordinates = array();

Далее спускаемся чуть ниже, находим строку:

 if ( $Serie["isDrawable"] == TRUE && $SerieName != $Data["Abscissa"] )
        {

Внутри фигурной скобки добавляем:

$PixelOffsetCoordinates[$SerieName]=array();

Далее, после строчки


foreach($PosArray as $Key => $Y)
            {

Вставляем:

$PixelOffsetCoordinates[$SerieName][$Key]=array($X,$Y);

И ещё раз вставляем эту же строку чуть ниже, после


foreach($PosArray as $Key => $X)
            {

Остаётся только вернуть полученные значения. Перед последней фигурной скобкой, закрывающей метод, вставляем:

return $PixelOffsetCoordinates;

Всё. Теперь наш метод $myPicture->drawPlotChart() возвращает массив с координатами точек для каждой серии.