avatar
+19.03
38.572

Андрей

При постинге может возникать несколько ошибок и каждая будет писать свой текст. Какой текст ошибки выводится?
— 'Пытаетесь разместить статью в неизвестный блог?',
— 'Вы не состоите в этом блоге!',
— 'Вы еще недостаточно окрепли, чтобы постить в этот блог',
— 'Вы не можете писать в этот блог',
У вас ошибка. В хуке не нужно возвращать $oTopic. В хук передаются параметры по ссылке, то есть: если в экшене вы пишете:
<code>$this->Hook_Run('topic_edit_show',array('oTopic'=>$oTopic));
echo($oTopic->getTitle());</code>
и, если хук меняет значение переданной переменной так:
<code>public function DoIt($aData) {
    $aData['oTopic']->setTitle('title from hook');
}</code>

то в результате echo выведет заголовок топика, установленный хуком = 'title from hook', а не тот, который был.
— Какой адрес страницы?
— Какой полный путь к шаблону?
напишите в шаблоне
**{$oTopic|print_r}**

если выведется **1**, то переменная действительно недоступна, если выведет объект, значит переменная доступна, а вы что-то не так делаете.
В экшене:
$sLogin = $this->oUserCurrent->getLogin();


В шаблоне экшена:
{$oUserCurrent->getLogin()}
Фрагмент кода выложите с той его частью, где проблема.
Если только вам, то да, а если всем, у кого страничка открыта и без ее перезагрузки, то нет. Такое реализуется комет-серверами (не только, но как вариант). Мне очень нравится realplexor — вот ссылка: habrahabr.ru/post/79189/
Спасибо.
Вот и я про то же.
Плюс ко всему в одном скрипте используются хуки вместе с маркерами и триггерами (в ls так исторически сложилось). Здесь, на мой взгляд, нужна однозначная позиция, иначе никакой единой концепции построения темы не получится (.
Шаблон add.tpl вызывается в двух случаях — при создании топика и при его редактировании.
— При редактировании топика переменная-объект oTopic существует и ее можно использовать как угодно.
— При создании топика этой переменной нет, поскольку нет еще самого топика — он не сохранен. Получить этот объект вы не сможете ни каким образом по причине его отсутствия.

Я что-то не так понял?
Я бы очень хотел обратить внимание на встроенные в коробку скрипты. Там везде встречаются предопределенные классы и идентификаторы — и это очень большая головная боль, уж поверьте. Практически в каждом файле шаблона приходится писать что то типа «ls.pool.addAnswer(....» а там JS-скриптом и html-код формируется и css классов-идентификаторов столько, что больше времени тратится на изучение кода JS, чем на верстку.

Я к чему все это, если уж переходить на бутстрап, то полностью и документрованно. В Alto 20+ js-скриптов ядра, перевести все в нотацию bootstrap (плагинов jQuery), задокументировать, привести к требованиям JSLint — не сложная, а скорее рутинная операция.

Я думаю, на это тоже стоит обратить внимание.
1. В Экшене вызываем хук, а в него передаем массивом набор параметров.
$this->Hook_Run('my_unhappy_hook', array('oTopic' => $oTopic, 'bShow' => true));

или в шаблоне *.tpl
{hook run='my_unhappy_hook' oTopic=$oTopic bShow=true}


2. В хуке плагина регистрируем обработчик хука в методе их регистрации. Заметьте, для хука шаблона используется префикс template
/**
* Регистрация хуков
*/
public function RegisterHook() {
    $this->AddHook('my_unhappy_hook', 'DoIt');
    // или для шаблона
    $this->AddHook('template_my_unhappy_hook', 'DoIt');
}


3. Реализуем метод обработки хука и в нем получаем переданные параметры
public function DoIt($aData) {
    $oTopic = $aData['oTopic'];
    $bShow= $aData['bShow'];
    // Дальше реализуем логику метода с использованием этих параметров  
}
Есть какой-нибудь несложный способ но без экспериментального кода?
Да есть, нужно просто перенести функционал капчи в пустой плагин. Для этого:
1. сделайте пустой плагин и перенесите в него:
— common/plugins/funcpack/classes/actions/ActionCaptcha.class.php
— папку common/plugins/funcpack/classes/kcaptcha

2. В основном файле плагина добавьте делегата
/** @var array $aDelegates Объявление делегирований */
    protected $aDelegates = [
        'template' => [],
        'action' => [
            'ActionCaptcha',
        ],
    ];


3. В родном экшене Alto (common/classes/actions/ActionCaptcha.class.php) закомментируйте строку
//F::IncludeLib('kcaptcha/kcaptcha.php');


4. Активируйте созданный плагин. Вроде все должно заработать сразу, но лучше эпспирементируйте на тестовом сервере.
Упс. Я это давно делал, и не сразу понял, что про моё (. Извиняюсь.

По поводу ошибки: посмотрите в консоли браузера, что отдает сервер, при включенном отображении ошибок во время входа на сайт — там должна быть ошибка. Картинка от хрома вот такая
У меня топик-инструкция была — livestreet.ru/blog/13791.html — там вывод стены админа на главную в виде ленты новостей. Реализация вашей задачи будет похожей.
Кстати а в какой момент и откуда запускается процедура пересчета рейтинга блогов?

Упс… пропустил.
Обновил топик, ответ там.
Я, наверное, зря так категорично заявил, но на самом деле смысл этого коэффициента — это верхний порог дельты.

На Вашем примере: рейтинг 5000 — фактически недостижим и я не думаю, что кто-то и за 10 лет работы сайта его перейдет, посмотрите на рейтинги пользователей любого сайта LS или Alto. Я думаю, по этой причине его принудительно и не ограничили. Поэтому, опять же, мое мнение, эти коэффициенты и нужно понимать как верхняя граница дельты и максимально возможный рейтинг пользователя (с учетом делителя диапазона, конечно)
Вы все правильно поняли, и в экселе все учтено — алгоритм расчета там такой-же как и в Alto.

Тут вот в чем дело — объясню на примере: Пусть некоторый человек работает в организации и у него в трудовом договоре написано, что он получает 500рублей оклада и 5 премий по 100рублей, ну, в зависимости от того, как он поработал. Пусть в этом месяце он заработал 800 рублей — это значит он выполнил норму на 80%. Почему, а потому, что:
1000рублей — 100%
800рублей — Х%

Отсюда: Х=800*100/1000=80(%), где 1000 — максимум того, что человек может заработать.

Теперь ситуация: этот человек спас от банкротства компанию и ему зачислили дополнительную премию — 100рублей, но и всю свою работу он выполнил полностью и получилось, что он выполнил норму на 110%

Применительно к текущему вопросу: Да Вы всё правильно поняли и рейтинг 5000 — максимальный при котором будет достигнут верхний порог диапазона дельты, но никто не запрещает пользователю получить и 10000 рейтинга, в этом случае будет просто 200% дельты.

У этого коэффициента есть и математический смысл — он масштабирует график по оси Y
Очень красиво у Вас получилось.
А поместятся ли большие числа просмотров и голосов в нижнюю панельку топика?
где должен (и вообще должен ли быть) plugins.dat
Вот здесь app/plugins/plugins.dat