avatar
+62.91
154.072

Вадим

aVadim
aVadim
Хотелось бы уточнить — так все решилось настройками nginx?
aVadim
aVadim
...KPHP поддерживает не все возможности PHP, в частности, в нем отсутствует ООП...
Т.е. это не годится для нормальных PHP-проектов в принципе
aVadim
aVadim
Просьба: большие тексты убирать под кат. Такая кнопочка есть на панели редактора с ножницами. Либо руками надо указать тег <cut> в нужном месте
aVadim
aVadim
Пара замечаний по функции GetTopicsForMap():

1) Сначала используется переменная $aTopicsId, а потом для ключа кеша — $aTopicsId, т.е. пропущена буква s. Я так понимаю, это просто опечатка. Если ее исправить, то проверка на is_array($aTopicId) будет уже не нужна, т.к. вызов метода маппера GetAllTopics() всегда вернет массив.

2) Вы сначала получаете список ID, а потом сами топики. Но кешируете только вторую часть получения данных. Думаю, лучше было б кешировать полный набор данных, чтоб уменьшить число запросов к базе. Плюс Ваш кеш не учитывает того, что данные топиков могут меняться (Ваш кеш не будет сбрасываться).

В общем, я бы код написал примерно так:

    public function GetTopicsForMap()  {
        // Задаем фильтр для топиков
        $aFilter = array(
            'topic_type' => 'need_help',
        );
        // Создаем ключ кеша
        $sCacheKey = 'topics_filter_' . serialize($aFilter);

        // Если топиков в кеше нет, то получаем их
        if (false === ($aTopics = $this->Cache_Get($sCacheKey))) {
            // Сначала получим список ID топиков по фильтру
            $aTopicsId = $this->oMapperTopic->GetAllTopics($aFilter);

            // Теперь получим сами топики
            $aData = $this->GetTopicsAdditionalData($aTopicsId);

            // Формируем массив топиков со всеми требуемыми данными
            foreach ($aData as $oTopic) {
                $aTopics[$oTopic->getId()] = $oTopic;
            }
            /* Сохраняем массив в кеше. При этом указываем:
             *
             * 1) Дополнительные кеш-ключи (в нашем случае - 'topic_new' и 'topic_update')
             * При добавлении/обновлении любого топика будет выполнена очистка кеша по этим ключам,
             * и наш кеш тоже очистится, чтоб при следующем запросе получить новые данные
             *
             * 2) Время жизни кеша. Его можно указывать в виде числа (количество секунд) либо
             * в виде строки задания периода, например:
             *   P1D - 1 день
             *   P1M - 1 месяц
             *   P2DT8H - 2 дня и 8 часов
             *   PT3600S - 3600 секунд  
             */
            $this->Cache_Set($aTopics, $sCacheKey, array('topic_new', 'topic_update'), 'P1D');
        }
        // Возвращаем массив топиков
        return $aTopics;
    }
aVadim
aVadim
Для вывода фотографий используется вот этот jQuery-плагин:
www.no-margin-for-errors.com/projects/prettyphoto-jquery-lightbox-clone/

Честно скажу — не вникал в детали, какие опции там есть и как что там можно поднастроить, используется все практически по умолчанию. Если кто-то возьмет на себя труд изучить и выработать рекомендации/советы по тонкой настройке — будет классно ;)
aVadim
aVadim
Сейчас эта кнопочка осталась, просто потому, что она там всегда была. Но вообще изначально смысл ее такой: указать, какое фото будет использоваться в качестве превью топика.

Превью топика (мне вообще-то сам это термин не нравится, но другого я не знаю) используется для вывода изображения либо в ленте топиков, либо (что чаще) в шаблонах, где заголовки топиков располагаются «плиткой».

Сейчас нет какого-то четкого правила, что брать в качестве превью, поэтому разные разработчики решают эту задачу на уровне плагинов/шаблонов. Хотя можно как-то упорядочить это на уровне движка.

Например, в качестве «превью» по умолчанию можно брать либо первое же изображение из тела топика, либо (если в теле изображений нет, но есть фотосет) первое фото из фотосета, либо фото, которое отмечено в фотосете.
aVadim
aVadim
Возможно, из-за того, что высота у Вас без единицы измерения указана. Надо так:
<div id="MainMap" style="width:100%;height:400px;"></div>
aVadim
aVadim
Разобрался с заливкой в фотосет — действительно была проблема. Причем не просто в javascript, там комплексная проблема была, связанная с флешем и куками. В общем, пофиксил:
demo.altocms.ru/start-kit/6.html
demo.altocms.ru/start-kit/7.html
aVadim
aVadim
Да, такого функционала нет. И да, он, разумеется, нужен и будет в будущих версиях.

Если нужно вот прямо сейчас, то, как показала практика, лучше обращаться напрямую к потенциальным исполнителям, которых можно найти здесь: altocms.ru/freelancers/
aVadim
aVadim
И почему оно не работает как надо?
Потому что: а) этот модуль никогда не работал, как надо; б) в Альто он вообще стал бесполезным рудиментом.

В будущем будут в движке дополнительные средства для профилирования особо узких мест, но пока для этого предлагается использовать внешние средства, например, xdebug.

Но если Вы толком не знаете, что такое «профилирование php-скриптов» и зачем оно нужно, то лучше отключить все, что с этим связано, и не брать в голову.
aVadim
aVadim
Точно. Спасибо, поправил
aVadim
aVadim
Проигрывание слайд-шоу пофиксил
aVadim
aVadim
Можно попробовать обойтись правкой шаблона. В прежней версии код для вывода изображений фотосета в шаблоне выглядел примерно так:
<li>
    <a href="{$oPhoto->getWebPath(1000)}" ...>
        <img src="{$oPhoto->getWebPath('50crop')}" />
    </a>
</li>
Т.е. в качестве превью выводился «кроп» размером 50x50 (т.к. в метод getWebPath передан параметр '50crop'), а для просмотра изображения использовался квадрат стороной 1000 пикселов (вызов getWebPath(1000)).

Этот же кусок кода в новой версии (в упрощенном виде):
<li>
    <a href="{$oPhoto->getWebPath()}" ...>
        <img src="{$oPhoto->getWebPath('x100')}" />
    </a>
</li>
Здесь вместо '50crop' используется 'x100' (т.е. вместо квадрата — изображение с высотой 100 пикселей с автошириной), и убираем параметр 1000, чтобы тоже избавиться от квадрата при просмотре.
aVadim
aVadim
Немного кривой, но зато самый простой вариант: найдите файл sharer.tpl и удалите из него все. Т.е. файл должен остаться, но пусть он будет пустым
aVadim
aVadim
Да, слайд-шоу что-то глючит, надо разобраться. А в остальном — это уже реальность, текущая дев-версия, все это в «коробке» будет :)
aVadim
aVadim
Как здесь: demo.altocms.ru/start-kit/2.html?
aVadim
aVadim
Кажется, Вы не поняли — раньше изображения фотосета имели очень ограниченный набор параметров для изменения размеров. Сейчас поддерживается полный набор параметров, описанный здесь: altocms.ru/blog/dev/420.html И плюс еще вариант — задание высоты с автоопределением ширины.

Если у Вас в шаблоне стоит href="{$oPhoto->getUrl(1000)}", то да, будут создаваться квадратные изображения (это равнозначно параметру «1000x1000»).

Если менять размер вообще не нужно, то укажите метод безе параметров: href="{$oPhoto->getUrl()}".

Если нужно вписать в какие-то определенные размеры (но без фона), то укажите их: href="{$oPhoto->getUrl('800x600')}".

Нужно задать только высоту? Тогда так: href="{$oPhoto->getUrl('x600')}" (а ширина определится автоматом).
aVadim
aVadim
В текущей версии на гитхабе фотографии из фотосета можно выводить вот так:
<img src="{$oPhoto->getUrl('x100')}" {$oPhoto->getImgSizeAttr('x100')} alt="{$oPhoto->getDescription()}" class="" />
Т.е. параметр 'x100' говорит о том, что нужно фото из фотосета подогнать по высоте в 100px, а ширина будет пропорциональной. Например (ширина x высота):
было 200x200 — стало 100x100
было 200x400 — стало 50x100
было 400x200 — стало 200x100

В итоге получается вот так:
aVadim
aVadim
Вариантов много:
1) В самом php-коде error_reporting(0); отключает вывод ошибок
2) Можно в .htaccess их отключить
3) Можно в php.ini это сделать
Уверен, фраза «как отключить вывод ошибок php» в поисковике выдаст подробные инструкции.

Но хотелось бы понять, что за ошибки у Вас лезут и в каком месте. Это какие-то баги движка или Ваши собственные эксперименты?
aVadim
aVadim
И для чего он нужен вообще?
Да вообще-то, как показала жизнь, он особо и не нужен, это рудимент от предков, который ликвидирован в новой версии