Вопрос Значки для тем

Больше
3 года 9 мес. назад #1 от photosho
Значки для тем was created by photosho
Здравствуйте. Каким образом в Kunena можно реализовать значки для создаваемых на форуме тем, доступные только администратору сайта?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
3 года 9 мес. назад #2 от serge
Replied by serge on topic Значки для тем
имеется в виду как вот здесь ?

А я смогу! - А поглядим! - А я упрямый!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
3 года 9 мес. назад #3 от photosho
Replied by photosho on topic Значки для тем
Примерно так, только чуть более гибко - чтобы все стандартные значки оставались в распоряжении пользователей, но были среди них некоторые, доступные только администратору.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
3 года 9 мес. назад #4 от anatole
Replied by anatole on topic Значки для тем
Имхо, хардкодить надоть, долго и упорно. Или сделать разработчикам форума feature request, запрос новой фичи.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
3 года 9 мес. назад - 3 года 9 мес. назад #5 от photosho
Replied by photosho on topic Значки для тем
anatole, ну вы подскажите, в каком направлении хардкодить, возможно, я и нахардкодю что-то. Пока это сделают разработчики, ждать не хочется.
Last edit: 3 года 9 мес. назад by photosho.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
3 года 9 мес. назад #6 от photosho
Replied by photosho on topic Значки для тем
Вновь возвращаюсь к данному вопросу, так как появилось немного свободного времени. Хотелось бы, все-таки, реализовать подобное. И вновь, как в старые времена, опишу представляемый мною алгоритм действий для решения данной проблемы (в прошлый раз, вроде, помогло).

1. Найти, какой файл отвечает за отображение доступных значков тем.
2. Узнать, как определить статус пользователя, загружающего этот файл (просматривающего страницу).
3. Добавить в файл условие на отображение определенных значков в соответствии со статусом пользователя.

Если все так, как описано выше. то хардкодить особо не придется. Единственную проблему пока представляет определение статуса пользователя, просматривающего страницу (второй пункт). Возможно, кто-нибудь подскажет, как это сделать? Что-то подобное уже было сделано мною, когда я определял номер просматриваемой категории в одной из соседних тем.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
3 года 9 мес. назад #7 от serge
Replied by serge on topic Значки для тем
Статус пользователя, или вернее id его группы, вы легко узнаете:

<?php
$user = JFactory::getUser();
$groups = $user->get('groups');
foreach($groups as $group) {
echo "<p>You're group ID is:" . $group . "</p>";
}
?>

Остальное несложно, elseif .

А я смогу! - А поглядим! - А я упрямый!
Спасибо сказали: photosho

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
3 года 9 мес. назад - 3 года 9 мес. назад #8 от photosho
Replied by photosho on topic Значки для тем
serge, в очередной раз спасибо за помощь. Итак, проблема решена, опишу ее решение здесь, на случай, если кому-то пригодится.

1. Добавил новые значки в папку:

media/kunena/topicicons/default/user/


2. В следующий файл добавил записи о новых значках:

docs/media/kunena/topicicons/default/topicicons.xml

Делается это в данном разделе:
<icons type="user" width="48" height="48">

3. Нашел файл под следующим именем:

components/com_kunena/template/шаблон/html/topic/edit.php

В данном файле нашел такую строку:
<?php foreach ($this->topicIcons as $id=>$icon): ?>
После нее добавил код, определяющий группу пользователя и проверяющий, нужно ли отображать значки из диапазона (у меня требуемые значки имеют индексы в диапазоне [11..15]). Вот необходимый код:
<?php
		$IsDraw = 1;
		$user = JFactory::getUser();
		$groups = $user->get('groups');
		foreach($groups as $group) {
			if ($icon->id >= 11 && $icon->id <= 15) {
				if ($group != 8) $IsDraw = 0;
			}
		}
	?>
Далее, насколько я понял, происходит отображение значка и Checkbox'а, связанного с ним, следующим кодом:
<input type="radio" name="topic_emoticon" value="<?php echo $icon->id ?>" <?php echo !empty($icon->checked) ? ' checked="checked" ':'' ?> />
<img src="<?php echo $this->ktemplate->getTopicIconIndexPath($icon->id, true);?>" alt="" border="0" />

У меня переменная $IsDraw принимает значение 0 в том случае, если значок рисовать не надо. Поэтому, перед кодом вывода значка поставил условие:
<?php if ($IsDraw == 1):?>

Ну а после - закрыл его:
<?php endif; ?>

Вот и все. Не берусь говорить об эффективности данного кода, но, насколько могу судить, работает он правильно. Всем спасибо за помощь.
Last edit: 3 года 9 мес. назад by photosho.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.