Пытаюсь сообразить хотя бы чисто теоретически, где может быть проблема. Раз браузер пытается вывести изображение, то заголовок header(«Content-Type: image/jpeg») в браузер передается. После этого идет вывод самого изображения чисто пхп-шной функцией imagejpeg(). Там ломаться вообще нечему…
Это когда изображение капчи напрямую пробуете открыть? А в логе какие-то ошибки есть?
Чтобы не мешать с другими ошибками (если они были), файл /_tmp/logs/error.log лучше удалить, еще раз попробовать посмотреть капчу, а потом посмотреть, нет ли ощибок в лог-файле
Первым делом надо смотреть, а работает ли капча вообще. Т.е. клик правой кнопкой мыши по тому месту, где должна быть капча и «Открыть в новой вкладке», «Открыть изображение» или что-то в этом роде (в зависимости от браузера).
Если изображение в новом окне/вкладке отображается нормально, то почти наверняка проблема в том, что в конфиге адрес сайта явно задан с www, а юзер заходит без www или наоборот. Т.е. в конфиге, напр., стоит:
Модерация прошла. Но рекомендация по вызову методов модулей:
$this->User_GetUserByLogin($sUserProfileLogin); // Старый способ
E::ModuleUser()->GetUserByLogin($sUserProfileLogin); // Новый способ
$this->Viewer_Assign('referals', $referals); // Старый способ
E::ModuleViewer()->Assign('referals', $referals); // Новый способ
$this->PluginReferals_Referals_getReferals($oUserProfile->getId()); // Старый способ
E::Module('PluginReferals\Referals')->getReferals($oUserProfile->getId()); // Новый способ
Я бы советовал для плагинов, которые под 1.1+ пишутся, сразу придерживаться нового способа вызовов. Так и наглядней, и с точки зрения совместимости с будущими версиями лучше.
Если в шаблоне нужно использовать сущность текущего юзера, то лучше не передавать его в шаблон таким образом, а обращаться к нему прямо в шаблоне. Например, сейчас в шаблоне так:
Если страница выводится не полностью (сайдбар ломается, нет футера), то, скорее всего, произошла ошибка во время рендеринга какого-то файла шаблона, а, значит, лог ошибок надо смотреть.
Этой возможности никто не отменяет. Но если нужно изменить фильтр для конкретного случая — напр., для метода GetTopicsDiscussed(), то buildFilter() мудрено будет угадать, для чего строится фильтр.
Ну здесь у вас надо сначала логику более четко продумать. В той схеме, что вы описываете, логика плагинов друг другу противоречит: по логике плагина 1 самым верхним должен быть топик с последним комментом, а по логике плагина 2 — тот, который админ отметил.
Если же логика такая: при включенном плагине 2 мы ВСЕГДА сначала получаем топики «прилепленные» и только потом уже по любой другой логике, то можно воспользоваться этим: altocms.ru/1127.html
Например, так:
class PluginMine_ModuleTopic extends PluginMine_Inherits_ModuleTopic {
public function Init() {
parent::Init();
$this->GetTopicsFilter(); // получаем фильтр по умолчанию
$aFilter['order'] = array('...'); // здесь задаем первичную сортировку
$this->SetTopicsFilter($aFilter); // задаем свой фильтр
}
}
Только надо учесть, что код тут немного упрощен — ведь другие плагины тоже могут менять сортировку по умолчанию, поэтому, если грамотно делать, надо проверять — а нет ли уже у фильтра индекса 'order', и если есть, то свою сортировку добавлять либо в начало, либо в конец массива (это уж от задумки разработчика зависит)
Как уже писал выше, сейчас работаю как раз над тем, как решать подобные задачи. Планировал в следующей версии это реализовать, но будет уже в релизе 1.1. Чуть позже напишу топик об этом.
www.google.com/recaptcha/admin — здесь можно получить ключи для нее.
common/plugins/recaptcha/config/config.php — здесь задаются настройки
Чтобы не мешать с другими ошибками (если они были), файл /_tmp/logs/error.log лучше удалить, еще раз попробовать посмотреть капчу, а потом посмотреть, нет ли ощибок в лог-файле
Если изображение в новом окне/вкладке отображается нормально, то почти наверняка проблема в том, что в конфиге адрес сайта явно задан с www, а юзер заходит без www или наоборот. Т.е. в конфиге, напр., стоит:
А юзер заходит просто site.com (без www). И браузер блокирует запрос к другому домену.
developers.google.com/maps/documentation/javascript/examples/places-searchbox?hl=ru
Разбираться надо, вникать…
1) Смотрите в админке ID поля, которое хотите выводить особым образом.
2) В шаблоне пишите такой код:
Здесь в выражении $oTopic->getField(id) Вы подставляете тот ID, который нужно.
Там вместо {json var=Config::Get('plugin.maps.map_center')} надо {json var=$aMapDefaultCenter}
Скрипты Я.Карт не понимают, когда координаты одной строкой передаются, им нужно обязательно массивом. А Гуглы переваривают без проблем
Я бы советовал для плагинов, которые под 1.1+ пишутся, сразу придерживаться нового способа вызовов. Так и наглядней, и с точки зрения совместимости с будущими версиями лучше.
И еще момент — в шаблон передается текущий юзер:
Если в шаблоне нужно использовать сущность текущего юзера, то лучше не передавать его в шаблон таким образом, а обращаться к нему прямо в шаблоне. Например, сейчас в шаблоне так:
А рекомендуется так:
Если же логика такая: при включенном плагине 2 мы ВСЕГДА сначала получаем топики «прилепленные» и только потом уже по любой другой логике, то можно воспользоваться этим: altocms.ru/1127.html
Например, так:
Только надо учесть, что код тут немного упрощен — ведь другие плагины тоже могут менять сортировку по умолчанию, поэтому, если грамотно делать, надо проверять — а нет ли уже у фильтра индекса 'order', и если есть, то свою сортировку добавлять либо в начало, либо в конец массива (это уж от задумки разработчика зависит)
Упрощает задачу?