С блоками в сайдбаре такое не получится сделать, если вопрос про них. Для того, чтобы убрать блоки из сайдбара, нужно в соответствующем Action найти строки $this->Viewer_AddBlock(), и поставить перед ними if($this->oUserCurrent).
Так как вы описываете, было в движке раньше. Было несколько таблиц для голосования, несколько таблиц для favourite, разные таблицы для комментариев и т.д. Но так как, livestreet все-таки платформа для наращивания функционала, то решено было сгруппировать данные по сущностям, а не по привязкам.
Поэтому появилась единая таблица vote, единая таблица favourite и другие. Для их обслуживания были введены единые модели и единые сущности.
Почему дорабатывать функционал стало проще? К примеру, если вы делаете модуль «Фотографии». Вы создаете новый контент — фотка. Вам не нужно заботиться о написании функционала комментирования, так как вы можете использовать единый модуль Comment (просто добавив в базе данных новый таргет foto), вы можете не писать новую систему голосования, а использовать для этого уже готовый модуль Vote (снова-таки, просто добавив в одном поле базы данных новый target), ваши фотки можно очень легко заносить в избранное, и вам для этого не нужно создавать новый функционал — для этого можно просто использовать Fvourite-модуль.
Вот такой вот ход мыслей.
По поводу InnoDB, мы стараемся наоборот освободить пользователей от этого требования к базе данных. Так что это не последний коммит, который касается работы со связанными данными. Оставайтесь на линии :)
public function getAuthorAvatarPath($iSize=100) {
$oUser = Engine::getInstance()->User_GetUserById($this->getUserId());
return $oUser->getProfileAvatarPath($iSize);
}
Ну, естественно :) $oUserCurrent это и есть текущий посетитель. Для вывода аватарки автора топика вам нужно этого самого автора топика получить. В 0.4 версии это будет проще
$oTopic->getUser()->getProfileAvatarPath(48)
А в 0.3.1 вам нужно либо
1) добавить в соответствующий Action код для получения из базы пользователя-автора топика, передать объект с этим пользователем во вьювер и дальше уже выводить;
либо
2) добавить во все методы mapper`a Topic код для вытягивания пути к аватаре пользователя (в JOIN соответствующей таблицы), реализовать в Topic.entity.class.php аксессор к этой характеристике;
либо
3) в Topic.entity.class.php добавить метод getAuthorAvatar(), которое будет вызывать метод класса User, получающий путь аватарки по переданному идентификатору пользователя (этот метод также нужно будет реализовать).
Если в базу нужно сохранять без ссылки, а выводить во вьювер с ней, то я бы создал новую функцию getLinkedText() в /classes/modules/topic/entity/Topic.entity.class.php.
(Это избавит вас от проблем с редактированием статьи). Что будет если пользователь открыв редактировать статью затрет ссылку? Или добавит новое предложение, тогда ссылка станет не на первой точке? Т.е. каждый раз нужно будет выяснять — есть ли ссылка, где и насколько правильная.
1) Правила нужно вписывать в основной конфиг. Или в любое другое место, где они будут добавлены в основной конфиг.
2) Правила не нужно использовать, они используются Viewer`ом автоматически.
3) Приведенные в примере строки уже добавлены в конфиг ядра.
На самом деле — Sphinx это только инструмент, которые позволяет выполнять некоторые вещи гораздо быстрее, чем это делает СУБД.
При большом желании, готовое решение всегда можно переписать на работу непосредственно с базой данных. Для небольших объемов данных оно может оказаться даже вполне рабочим. Скорость и нагрузка соответственно страдают.
Можно, конечно, рассматривать вариант хранения связи в базе данных, и считать при этом, что если топик А похож на Б, то Б похож на А. Плюс хранить условный показатель релевантности, чтобы по нему проводить сортировку.
Тогда можно просто добавлять в эту таблицу пары, а при составлении списка топиков искать нужный идентификатор в обоих столбцах.
Если вы имеете ввиду функционал закрытых блогов, то он реализован в SVN версии, для 0.3.1 есть модуль или хак. Воспользуйтесь поиском.
По поводу скрытия только некоторых записей, а не целых блогов — тут мороки еще больше будет.
Поверьте, это не просто.
2. Для остальных случае в конфигурации предусмотрена настройка. Точнее, будет предусмотрена, это давно оговорено :)
Поэтому появилась единая таблица vote, единая таблица favourite и другие. Для их обслуживания были введены единые модели и единые сущности.
Почему дорабатывать функционал стало проще? К примеру, если вы делаете модуль «Фотографии». Вы создаете новый контент — фотка. Вам не нужно заботиться о написании функционала комментирования, так как вы можете использовать единый модуль Comment (просто добавив в базе данных новый таргет foto), вы можете не писать новую систему голосования, а использовать для этого уже готовый модуль Vote (снова-таки, просто добавив в одном поле базы данных новый target), ваши фотки можно очень легко заносить в избранное, и вам для этого не нужно создавать новый функционал — для этого можно просто использовать Fvourite-модуль.
Вот такой вот ход мыслей.
По поводу InnoDB, мы стараемся наоборот освободить пользователей от этого требования к базе данных. Так что это не последний коммит, который касается работы со связанными данными. Оставайтесь на линии :)
Выводить в шаблоне так:
А в 0.3.1 вам нужно либо
1) добавить в соответствующий Action код для получения из базы пользователя-автора топика, передать объект с этим пользователем во вьювер и дальше уже выводить;
либо
2) добавить во все методы mapper`a Topic код для вытягивания пути к аватаре пользователя (в JOIN соответствующей таблицы), реализовать в Topic.entity.class.php аксессор к этой характеристике;
либо
3) в Topic.entity.class.php добавить метод getAuthorAvatar(), которое будет вызывать метод класса User, получающий путь аватарки по переданному идентификатору пользователя (этот метод также нужно будет реализовать).
(Это избавит вас от проблем с редактированием статьи). Что будет если пользователь открыв редактировать статью затрет ссылку? Или добавит новое предложение, тогда ссылка станет не на первой точке? Т.е. каждый раз нужно будет выяснять — есть ли ссылка, где и насколько правильная.
2) Правила не нужно использовать, они используются Viewer`ом автоматически.
3) Приведенные в примере строки уже добавлены в конфиг ядра.
/templates/skin/new/actions/ActionPage/page.tpl
вот эту строку уберите.
При большом желании, готовое решение всегда можно переписать на работу непосредственно с базой данных. Для небольших объемов данных оно может оказаться даже вполне рабочим. Скорость и нагрузка соответственно страдают.
Тогда можно просто добавлять в эту таблицу пары, а при составлении списка топиков искать нужный идентификатор в обоих столбцах.