UserTopics
UserTopics
rxu, внес ваши правки.
так, когда перед глазами код, когда есть объяснения - более-менее понятно.
сам бы - не написал такое.
спасибо. вроде как работает. на гитхабе обновил.
из того, что хотел реализовать, сделал все.
единственное, что можно было бы еще сделать в расширении - вынести в админку опции где отображать.
в профиле - однозначно надо показывать ТЕМЫ. в ссылках - однозначно.
единственное - в минипрофиле можно включать/выключать Темы пользователя, на усмотрение администраторов.
как считаете? или не стоит с админкой связываться?
так, когда перед глазами код, когда есть объяснения - более-менее понятно.
сам бы - не написал такое.
спасибо. вроде как работает. на гитхабе обновил.
из того, что хотел реализовать, сделал все.
единственное, что можно было бы еще сделать в расширении - вынести в админку опции где отображать.
в профиле - однозначно надо показывать ТЕМЫ. в ссылках - однозначно.
единственное - в минипрофиле можно включать/выключать Темы пользователя, на усмотрение администраторов.
как считаете? или не стоит с админкой связываться?
- rxu
- Сообщения: 1125
- Зарегистрирован: 21 янв 2014, 21:20
- Откуда: Krasnoyarsk
- Github repo: https://github.com/rxu
- Контактная информация:
UserTopics
Почему не стОит, можно связываться хоть с чем. Чем глубже в это погружаешься, тем проще потом начинать следующий экст.
UserTopics
сделал файл usertopics_info.php по аналогии из поиска и БО
его можно для начала включить без второго файла _module.php ? стили на каком этапе создаются ?
для подключения надо переустанавливать расширение?
Отправлено спустя 19 минут 57 секунд:
есть ли "рыба" для _module.php ? чтобы получить пустой файл, с минимально необходимым для включения кодом?
Код: Выделить всё
<?php
/**
*
* @package quickreply
* @copyright (c) 2014 Alecto
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/
namespace alecto\UserTopics\acp;
class usertopics_info
{
function module()
{
return array(
'filename' => '\alecto\UserTopics\acp\acp_usertopics_module',
'title' => 'ACP_USERTOPICS',
'version' => '0.0.1',
'modes' => array(
'config_usertopics' => array('title' => 'ACP_USERTOPICS_CONFIG', 'auth' => 'ext_alecto/UserTopics && acl_a_usertopics', 'cat' => array('ACP_USERTOPICS_CONFIG')),
),
);
}
}
для подключения надо переустанавливать расширение?
Отправлено спустя 19 минут 57 секунд:
есть ли "рыба" для _module.php ? чтобы получить пустой файл, с минимально необходимым для включения кодом?
UserTopics
Объявить модуль в файлеAlecto писал(а):QR_BBPOST его можно для начала включить без второго файла _module.php ?
Код: Выделить всё
'filename' => '\alecto\UserTopics\acp\acp_usertopics_module',
Стили - на этапе установки phpBB. Для всех модулей одинаковые.Alecto писал(а):QR_BBPOST стили на каком этапе создаются ?
Шаблон - вместе с модулем
Да. Создать ещё файл миграции с добавлением модуля в БД, необходимыми настройками для расширения, и переустановить расширение.Alecto писал(а):QR_BBPOST для подключения надо переустанавливать расширение?
И право acl_a_usertopics тоже надо будет добавить (раз оно записано в usertopics_info.php)
Насколько сама поняла, набор файлов для админки:
acp/extname_info.php - файл с подключением модуля. Содержит filename - название php-файла модуля, title - заголовок категории version - модуля, версию, config_extname - конфигурацию (title - заголовок самого модуля, auth - права на модуль, cat - категория модуля)
acp/extname_module.php - сам модуль (если не требуется нестандартных настроек - файл на 90% шаблонный, различаются namespace, название класса, $this->page_title - заголовок, $this->tpl_name - название шаблона модуля, и $display_vars - настройки для расширения)
adm/style/acp_extname.html - файл шаблона (если нет нестандартных настроек - различие только в id формы)
language/(название языка)/info_acp_extname.php - языковой файл для админки, подключается при правильном названии сам
language/(название языка)/permissions_extname.php - языковой файл для прав доступа (если они добавлены)
migrations/произвольное_название.php - файл для внесения изменений в базу данных (в т.ч. и добавления модуля)
UserTopics
acl_a_usertopics это право для установки модуля?
или дополнительное право? поскольку дополнительных прав для работы модуля нет, может тогда лучше удалить?
или дополнительное право? поскольку дополнительных прав для работы модуля нет, может тогда лучше удалить?
UserTopics
Это право для отображения модуля. Можно вместо него использовать уже существующее, к примеру acl_a_board (право изменять настройки конференции)Alecto писал(а):QR_BBPOST acl_a_usertopics это право для установки модуля?
UserTopics
вроде как собрал файлы для папки acp и adm.
делал по аналогии из файлов БО, архив приложил, можете глянуть на предмет явных косяков?
пока не включал ничего, потому как надо еще стили и миграцию освоить и сделать.
Отправлено спустя 1 час 32 минуты 32 секунды:
обновил
делал по аналогии из файлов БО, архив приложил, можете глянуть на предмет явных косяков?
пока не включал ничего, потому как надо еще стили и миграцию освоить и сделать.
Отправлено спустя 1 час 32 минуты 32 секунды:
обновил
- Вложения
-
- acp_usertopics.zip
- (2.65 КБ) 109 скачиваний
UserTopics
всем поискам подставлялся тайтл "Ваши темы", что было ошибкой.
Сейчас переделал условие, чтобы для egosearch было "Ваши темы", для id= "Темы пользователя".
Было бы не плохо еще выводить имя пользователя.
Сейчас скрипт переименования выполняется в overall_footer_page_body_after.html, это ближайшее событие, которое удалось найти.
Все события search... работают в строках и по этому не подходят.
Вопрос, можно ли как-то передать в это событие имя пользователя?
или может быть в самом скрипте найти первое вхождение имени пользователя для первой найденной темы и подставить?
Отправлено спустя 11 минут 38 секунд:
в профиле, если у пользователя 0 тем - не формирую ссылку.
что делать с минипрофилем? если считать темы пользователей для каждого поста - очень много дурных запросов к базе получится.
вижу вариант - показывать ссылку всегда, а на странице списка тем уже будет видно, что 0 тем.
Отправлено спустя 26 минут 56 секунд:
если такое решение нормальное - обновлю мод.
проверяю первый найденный элемент "username-coloured" в диве с айди "page-body", если он существует - это ник пользователя, добавляю его к заголовку и получаю "Темы пользователя НИК".
если элемент не существует, значит тем нет - вывожу сообщение Пользователь не создал ни одной темы
Сейчас переделал условие, чтобы для egosearch было "Ваши темы", для id= "Темы пользователя".
Было бы не плохо еще выводить имя пользователя.
Сейчас скрипт переименования выполняется в overall_footer_page_body_after.html, это ближайшее событие, которое удалось найти.
Все события search... работают в строках и по этому не подходят.
Вопрос, можно ли как-то передать в это событие имя пользователя?
или может быть в самом скрипте найти первое вхождение имени пользователя для первой найденной темы и подставить?
Отправлено спустя 11 минут 38 секунд:
в профиле, если у пользователя 0 тем - не формирую ссылку.
что делать с минипрофилем? если считать темы пользователей для каждого поста - очень много дурных запросов к базе получится.
вижу вариант - показывать ссылку всегда, а на странице списка тем уже будет видно, что 0 тем.
Отправлено спустя 26 минут 56 секунд:
если такое решение нормальное - обновлю мод.
Код: Выделить всё
<!-- IF SCRIPT_NAME == "search" -->
<script type="text/javascript">
var isTopics = window.location.href.indexOf("sr=topics&sf=firstpost");
var isEgosearch = window.location.href.indexOf("id=egosearch");
if( isTopics > -1 && isEgosearch > -1 ) {
document.getElementById('page-body').getElementsByClassName("searchresults-title")[0].innerHTML ="{L_USER_TOPICS_FROM_LINKS}";
} else if( isTopics > -1 && isEgosearch == -1 ) {
if ( !document.getElementById('page-body').getElementsByClassName("list-inner")[1] ) {
document.getElementById('page-body').getElementsByClassName("searchresults-title")[0].innerHTML ="{L_USER_TOPICS_HAVE_NO}";
} else if ( document.getElementById('page-body').getElementsByClassName("list-inner")[1].getElementsByClassName("username-coloured")[0] ) {
var isUserName = document.getElementById('page-body').getElementsByClassName("list-inner")[1].getElementsByClassName("username-coloured")[0].innerHTML;
document.getElementById('page-body').getElementsByClassName("searchresults-title")[0].innerHTML ="{L_USER_TOPICS_MINIPROFILE_TEXT}" + " " + isUserName;
} else if ( document.getElementById('page-body').getElementsByClassName("list-inner")[1].getElementsByClassName("username")[0] ) {
var isUserName = document.getElementById('page-body').getElementsByClassName("list-inner")[1].getElementsByClassName("username")[0].innerHTML;
document.getElementById('page-body').getElementsByClassName("searchresults-title")[0].innerHTML ="{L_USER_TOPICS_MINIPROFILE_TEXT}" + " " + isUserName;
}
}
</script>
<!-- ENDIF -->
если элемент не существует, значит тем нет - вывожу сообщение Пользователь не создал ни одной темы
- rxu
- Сообщения: 1125
- Зарегистрирован: 21 янв 2014, 21:20
- Откуда: Krasnoyarsk
- Github repo: https://github.com/rxu
- Контактная информация:
UserTopics
В RC4 добавлено событие core.search_results_modify_search_title в search.php, через него можно менять заголовок страницы результатов.
UserTopics
ок. спасибо. как только закончу с обновление и проверкой модов - перейду к доделыванию этого.
Отправлено спустя 1 час 19 минут 22 секунды:
что-то не могу понять, как использовать данное событие?
ведь мне нужно получить автора искомых тем, если они существуют. как получить автора через это событие, если там только с
Отправлено спустя 11 минут 11 секунд:
как определить, что:
пользователь ищет собственные темы? egosearch - первый заголовок
пользователь ищет темы другого пользователя ID= - второй заголовок
в результате поиска найдено 0 тем - третий заголовок
Отправлено спустя 1 час 19 минут 22 секунды:
что-то не могу понять, как использовать данное событие?
ведь мне нужно получить автора искомых тем, если они существуют. как получить автора через это событие, если там только с
можно работать?author_id, l_search_title, search_id, show_results, start
Отправлено спустя 11 минут 11 секунд:
Код: Выделить всё
public function custom_topic_title($event)
{
$this->template->assign_vars(array(
'SEARCH_TITLE_USER_TOPIC' => ????,
));
}
пользователь ищет собственные темы? egosearch - первый заголовок
пользователь ищет темы другого пользователя ID= - второй заголовок
в результате поиска найдено 0 тем - третий заголовок