Узнать, есть ли топик в подключенных блогах (решено)
Задача: в шаблоне сделать проверку, находится ли топик в подключенном блоге. Грубо говоря попадает ли топик в интерес читателя или нет. ЛС 0.3.1
в маппере Topic.mapper.class функции GetTopics дописуем
в Topic.entity.class пихаем
в шаблоне узнаем
и все
в маппере Topic.mapper.class функции GetTopics дописуем
IF(bu.is_moderator IS NULL,0,1) as user_is_blog_reader
в Topic.entity.class пихаем
public function getUserIsBlogReader() {
return $this->_aData['user_is_blog_reader'];
}
в шаблоне узнаем
$oTopic->getUserIsBlogReader()
и все
15 комментариев
если еще б хоть раз
выдало да, я был бы счастлив
на
а как сделать чтоб
получал результат именно из GetTopicIsJoinForCurUser???
нужно переделать ;)
функция меппера пусть возвращает не сущность, а 0 или 1.
в функции сущность делать вызов GetTopicIsJoinForCurUser() и помещать возвращаемое значение в _aData['isJoinBlogTopic']
смотрим сущность юзера — там есть getBlog(), которая содержит сущность блога в котором опубликован топик ;)
т.е. в шаблоне нужно получить сущность блога
— что обычно уже сделано, а потом уже узнать подключил ли пользователь этот блог:
и всё ;)
нету getBlog()
пишет Не найден класс модуля… в Topic.Entity его действительно нет( Сделал поиск по всем файлах шаблона, нигде $oTopic->getBlog() не найдено
А что есть? есть $oTopic->getBlogId()
а в класе блога Blog.class есть GetBlogById($sBlogId), вот только он не доступен из шаблона((
не знаю как получить сущность блога(
Да, надеюсь $oBlog() ето опечатка, ибо даже смарти его не пропускает, а-ля «такая конструкцыя не разрешена в if» должно быть
Почему я начал делать проверку через маппер? по тому что даже нахождения урла блога, к которому пренадлежыт топик все равно далается именно из мапера топика, а не блога… таким же способом узнается, getUserIsBlogAdministrator()… Хм… а ето идея… существующий мапер подправить, вместо создания своего, ща буду ковырять
конечно я буду рад, если с шаблона можна будет узнать есть ли топик в подключенном блоге.
в а шаблоне списка блога делается проверка через $oBlog->getCurrentUserIsJoin()
На всякий случай код з шаблона topic_list.tpl может здесь напартачил
впрочем для 0.3 можно сделать так же.
А так посмотрите экшен блога там это сделано так:
и далее в шаблоне {if $bNeedJoin}
обясните пожалуста, в которому порядку исполняется связка клас-мапер-ентити…
ибо я смотрю на свой код (тот что сейчас в топике), и на код, по которому сейчас работают функции с топиком и не замечаю конструктивной разницы… думал кто-то заметит… и чуть поправит
обясните принцып, по которому получаются значения параметров блога, что за чем откуда вызивается и передаэтся, может тогда дело прояснится…
Пытался также привычным путем, прописал в Topic.entity.class.php:
Но в результате при вызове из шаблона $oTopic->getCurrentUserIsJoin() всегда получаем false даже для подключенных пользователей.
Увидел в одной теме ответ ort'a:
Но далее по тексту приведен код для 0.4 Подозреваю, что в 0.3 тоже надо подгрузить данные о пользователе в Topic.class.php, чтобы заработало обращение $oTopic->getCurrentUserIsJoin(). Но как сделать, не знаю.
Также могло бы помочь, если бы удалось получить сущность блога в шаблоне топика… Как и писали выше, в 0.3 нет GetBlog, есть только GetBlogById в Blog.class.php. В общем, буду благодарен любой помощи.
В Topic.entity.class.php добавляем функцию
И… все.
Из шаблона топика узнаем о подключении пользователя обращением:
Т.е. в функцию передается параметр — id текущего юзера.