$oUserCurrent и $oTopic работают потому что они переданы в шаблон, а $oSubscribeComment это совсем другой объект. Было бы не разумно передавать на каждую страницу все объекты движка.
Либо вы можете сделать костыль и менять его вручную для каждого топика пока не хватает знаний, выглядить будет так:
public function getAuthor() {
switch ($this->_getDataOne('topic_id')) {
case 1:
return "Пушкин";
break;
case 2:
return "Лермонтов";
break;
case 23:
return "Есенин";
break;
default:
return "Неизвестный поэт";
}
}
В таком случае для топика с ID=1 установлен автор «Пушкин», ID=2 «Лермонтов». ID=23 «Есенин». Все что не входит в этот список будет «Неизвестный поэт».
Это хорошо что попробовали. В таком случае очевидно что в файл шаблона (.tpl) не передается объект $oSubscribeComment.
Так как вы не написали что за шаблон редактируется, то я не могу написать конкретно что сделать.
Вариантов 2:
1. Если шаблон includ'ится в другой шаблон, где использование $oSubscribeComment работает, то нужно поменять инклуд на следующий:
Дело в том, что в таблицу в таком случае ничего не записывается. В этой ситуации getAuthor() ВСЕГДА и для всех топиков будет возвращать «Пушкин». А, что если нужно написать для одних топиков «Пушкин», а для других «Лермонтов»? В таком случае вам нужно добавлять полноценное поле в таблицу topic базы данных и менять все функции как я описал.
Я так понимаю вы ходите добавить в базу данных, а имено в таблицу topic информацию об авторе. В таком случае если автор = создатель топика будет проще получть его логин с помощью такой конструкции:
$oUser = $this->User_GetUserById($oTopic->getUserId());
echo ($oUser->getLogin()); //выводит логин автора топика
Эта строчка проверяет не форму, а поле в таблице topic. Так как судя по тому что вы написали, вам также необходимо:
1. Добавить новое поле в таблицу topic (topic_author)
2. Добавить поле в функции InsertTopic и UpdateTopic, чтобы это значение записывалось в базу данных при добавлении нового топика и при его редактировании.
3. Получить это поле из формы и записать в объект методом который вы уже создали в topic.entity.class.php
Вставить в функции TopicEdit и TopicAdd
Я очень привык за пять лет к 1.0.3 и не вижу в нем недостатоков с точки зрения пользователей, заходящих на сайт. Удалось добиться загрузки страниц в среднем за 50 мс для главной и 120мс для топика с 50 комментариями (с плагином UserMedals). На 6 тыс. посетителей в день работает хорошо.
Так что и переходить на что-то не имеет смысла, вот если бы допиливали потихоньку то что есть. Маленькими шажками так сказать.
1. Для решения проблемы с устаревшим методом each()
В файле framework/libs/vendor/DklabCache/Zend/Cache/Backend.php нужно заменить строки:
while (list($name, $value) = each($options)) {
на
foreach ($options as $name=>$value) {
А также:
while (list($name, $value) = each($directives)) {
на
foreach ($directives as $key=>$value) {
2. Насчет второго случая ошибка в скомпилированном файле, править его не имеет смысла, нужно найти .tpl файл откуда он скоптилировался и заменить count(). Скорее всего просто убрать его, так как в некоторых шаблонах я замечал что проверка на существования массива проводится через if (count($array)). В таких случаях достаточно if ($array) или if (is_array($array)).
3. Либо вы можете полностью отключить вывод предупреждений, в файл Config.local.php вставьте в начало:
error_reporting(E_ERROR);
Таким образом Livestreet будет выводить только критические ошибки.
Этот баг возник из-за копирования кода из popup регистрации в обычную.
Проблема решается очень быстро и просто.
Нужно в файле шаблона {$skinname}/actions/ActionRegistration/index.tpl
Исправить ID всех четырех INPUTов
было id="popup-registration-login" стало "login"
было id="popup-registration-mail" стало "mail"
было id="popup-registration-user-password" стало "user-password"
было id="popup-registration-user-password-confirm" стало "assword-confirm"
Подскажите пожалуйста как вернуть время базы данных. Серверное время возвращаю через date(«l dS of F Y h:i:s A»);, показывает московское 03:06:10 PM, в mysql стоит system time zone = MSK, time zone = SYSTEM.
Забыли пробел
В таком случае для топика с ID=1 установлен автор «Пушкин», ID=2 «Лермонтов». ID=23 «Есенин». Все что не входит в этот список будет «Неизвестный поэт».
Так как вы не написали что за шаблон редактируется, то я не могу написать конкретно что сделать.
Вариантов 2:
1. Если шаблон includ'ится в другой шаблон, где использование $oSubscribeComment работает, то нужно поменять инклуд на следующий:
2. Если это сделать невозможно, то нужно получить и передать этот объект из PHP кода, ответственного за вывод этого шаблона, методом
Если у вас другие задачи, то по вашей проблеме:
Эта строчка проверяет не форму, а поле в таблице topic. Так как судя по тому что вы написали, вам также необходимо:
1. Добавить новое поле в таблицу topic (topic_author)
2. Добавить поле в функции InsertTopic и UpdateTopic, чтобы это значение записывалось в базу данных при добавлении нового топика и при его редактировании.
3. Получить это поле из формы и записать в объект методом который вы уже создали в topic.entity.class.php
Вставить в функции TopicEdit и TopicAdd
В общем, лучше присмотритесь к первому варианту.
Так что и переходить на что-то не имеет смысла, вот если бы допиливали потихоньку то что есть. Маленькими шажками так сказать.
а
В файле framework/libs/vendor/DklabCache/Zend/Cache/Backend.php нужно заменить строки:
на
А также:
на
2. Насчет второго случая ошибка в скомпилированном файле, править его не имеет смысла, нужно найти .tpl файл откуда он скоптилировался и заменить count(). Скорее всего просто убрать его, так как в некоторых шаблонах я замечал что проверка на существования массива проводится через if (count($array)). В таких случаях достаточно if ($array) или if (is_array($array)).
3. Либо вы можете полностью отключить вывод предупреждений, в файл Config.local.php вставьте в начало:
Таким образом Livestreet будет выводить только критические ошибки.
Проблема решается очень быстро и просто.
Нужно в файле шаблона {$skinname}/actions/ActionRegistration/index.tpl
Исправить ID всех четырех INPUTов