avatar
+62.91
154.072

Вадим

aVadim
aVadim
Совершенно непонятная ошибка. А файл common/classes/hooks/HookCaptcha.class.php существует и он не пустой?
aVadim
aVadim
Практика показала, что категории все же нужны далеко не всем. Поэтому сейчас этот функционал в виде отдельного плагина реализован: altocms.ru/addons/item/92/
aVadim
aVadim
Плагин сейчас тестируется на демосайте. Как только все заработает, как нужно, так сразу он уйдет в каталог.
aVadim
aVadim
Не, чем меньше отзывов, тем меньше вероятность, что вообще выйдет расширенная версия ;) Чего зря стараться, если никому не интересно?
aVadim
aVadim
Плагин модерацию прошел. А то, что делал его Андрей — это, считайте, знак качества
aVadim
aVadim
Вот-вот, визуальный редактор, это из-за него. Не суть важно, что именно редактируется в нем, важен сам факт, что было редактирование какого-то текста, и если после этого не выполняется отправка формы, в которой шло редактирование, то выскакивает такая вещь. А комментарии ведь хитро отправляются, аяксом, без перезагрузки страницы, вот и считает редактор, что текст правился, но не был отправлен.

Наверное, это можно как-то побороть, но я пока не смотрел толком
aVadim
aVadim
Пардон, про этот «нюанс» я, честно говоря, забыл, т.к. давно уже с ним сталкивался, и давно с Владимиром (aka extravert ) на эту тему общался. Насколько я понимаю, в последних версиях плагина DAO это все решено
aVadim
aVadim
Если включить режим wysiwyg, то точно такое же бывает, если, например, редактируешь топик и вдруг решил уйти без сохранения. Наверняка на сайте редактирование с tinymce включено
aVadim
aVadim
Со стороны движка в версии 1.0.8 не знаю ни одного факта несовместимости с DAO. Но потребовалась адаптация DAO к самим шаблонам (CSS-стили все же очень отличаются). Автор плагина подтвердил, что адаптация практически готова, сейчас идет тестирование, и скоро обновление будет в каталоге.
aVadim
aVadim
А не напишешь подробнее — что за параметр и на что влияет? Авось, кому-то сохранит много часов. Можно даже отдельным топиком
aVadim
aVadim
В версии 1.1. запланировано пока два ключевых пункта:
1) Новый механизм работы с меню (меню можно будет управлять и настройками в конфиг-файле, и программно из плагинов, и просто из админки)
2) Улучшенная работа с изображениями, о чем я писал здесь: altocms.ru/793.html
Ну, и всяческие улучшения, на список которых Андрей дал ссылку
aVadim
aVadim
Да, есть ошибка в плагине Категории. Там вместо rtrim($oCategory->getUrl(), '/') должно быть $oCategory->getLink()
aVadim
aVadim
Сейчас на этом сайте так настроено, и при логауте я остаюсь на той же странице
aVadim
aVadim
Да, достаточно закомментировать строку:
//$config['module']['user']['logout']['redirect'] = '/';
Тогда редиректа не будет, а будет попытка загрузить ту же страницу. Я тут говорю «попытка», потому что если эта страница закрыта для неавторизованного юзера, то он увидит страницу 404
aVadim
aVadim
Да, спасибо, хотел ведь в статье написать, да забыл
aVadim
aVadim
Получить и сразу отобразить число друзей прямо в шаблоне для текущего юзера можно так:
{if E::IsUser()}
    Друзей: {E::User_GetCountUsersFriend(E::User())}
{/if}

Можно и хуком сделать:
<?php
class HookFriendsCount extends Hook {
    /**
     * Регистрируем хуки
     */
    public function RegisterHook() {
        $this->AddHook('template_friends_count', 'TplFriendsCount', __CLASS__);
    }

    /**
     * Обработка хука
     *
     * @return string
     */
    public function TplFriendsCount() {
        return E::IsUser() ? E::User_GetCountUsersFriend(E::User()) : '0';
    }
}
А в шаблоне в нужное место ставим:
{if E::IsUser()}
    Друзей: {hook run=friends_count}
{/if}

Либо, если уж совсем по всем правилам делать, делаем маленький файл шаблона (напр., friends_count.tpl:
{if E::IsUser()}
    Друзей: {$iFriendsCount}
{/if}
А обработчик хука записываем так:
public function TplFriendsCount() {
    $iFriendsCount = E::IsUser() ? E::User_GetCountUsersFriend(E::User()) : '0';
    $this->Viewer_Assign('iFriendsCount ', $iFriendsCount );
    return $this->Viewer_Fetch('friends_count.tpl');
}

Но важно понимать, что запрос числа друзей — это обращение к базе. Поэтому если речь про то, что это надо вывести в одном месте страницы для текущего юзера — то это нормально. А если, например, на странице выводится большой список юзеров и для каждого нужно вывести число друзей, то это уже лучше писать плагин, чтоб оптимизировать число запросов.
aVadim
aVadim
Если речь о том, что нужно править стили, то лучше всего сделать копию одной из тем и работать с ней. Например, собственная тема будет называться new.

Для начала копируем .../start-kit/themes/light/ в .../start-kit/themes/new/.

А дальше есть два варианта:

1) Если умеете обращаться с LESS-файлами, то меняете, как нужно .../start-kit/themes/new/style-light.less и/или .../skin/start-kit/assets/less/classes.less и компилируете, чтоб получился .../start-kit/themes/new/style.css

2) Если с LESS дружбы нет, то создаете свой файл стилей, например, .../start-kit/themes/new/custom.css и там переопределяете все CSS-классы, какие нужно. А потом подключаете этот файл в настройках шаблона в .../start-kit/settings/config/config.php, добавив строку:
'___path.skin.dir___/themes/___view.theme___/css/custom.css',


И, разумеется, не забудьте саму тему у скина сменить, задав new
aVadim
aVadim
Ошибку поправим, конечно. А задача какая вообще? Просто исключить файл? Или заменить его на другой?
aVadim
aVadim
Значит, еще что-то поломано оказалось, надо внимательно код шаблона перебирать. Подобные вещи случаются, когда меняется DOM. А это значит — либо id нужных элементов нет, либо классов, а иногда — даже если изменена цепочка CSS-классов у элементов.
aVadim
aVadim
Думаю, понятно, что делать это надо отдельным плагином.

И я бы cделал примерно так: создается плагин для конкретного сайта (напр., PluginMine, где переопределяется ActionContent, в котором расширяем метод checkTopicFields($oTopic):
class PluginMine_ActionContent extends PluginMine_Inherits_ActionContent
    protected function checkTopicFields($oTopic) {
        // сначала вызываем стандартную проверку
        $bResult = parent::checkTopicFields($oTopic);
        // а теперь проверяем заполнение дополнительных полей
        if (empty($_REQUEST['fields'][2])) {
            $this->Message_AddError('Поле не заполнено', $this->Lang_Get('error'));
            $bResult = false;
        }
        return $bResult;
    }
}