×
Внимание, мошенник-работодатель (10 авг 2017)

Вниманию программистов Санкт-Петербурга, на SuperJob-е вновь активизировался Семен Григорьевич Шумейко..

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Больше
2 года 11 мес. назад - 2 года 11 мес. назад #8 от photosho
photosho ответил в теме Значки для тем
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; ?>

Вот и все. Не берусь говорить об эффективности данного кода, но, насколько могу судить, работает он правильно. Всем спасибо за помощь.
Последнее редактирование: 2 года 11 мес. назад от photosho.

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