Перейти к содержанию

add user rank in postbit


Рекомендуемые сообщения

Привет!

Я использую следующий код в файле postcontainer для отображения ранга пользователей.

{{if $comment->author()->canHaveAchievements() and \IPS\core\Achievements\Rank::show() and \IPS\core\Achievements\Rank::getStore() and $rank = $comment->author()->rank()}}
           <div class="postlevel">
              {{if $nextRank = $comment->author()->nextRank()}}
              <div class="postlevel_content">
                <span class="postlevel_levels">{$rank->rankPosition()['pos']} level</span>
                <span class="postlevel_exp"><b>{$comment->author()->achievements_points}</b> / {$nextRank->points}</span>
              </div>
              <div class="postlevel_progress">
                <div class="postlevel_progress_bar" style="width: calc({expression='$comment->author()->achievements_points'} / {$nextRank->points} * 100%);"></div>
              </div>
              {{endif}}
           </div>
        {{endif}}

Сейчас я хочу разместить эти же коды в новом файле HTML и вызвать их из postcontainer используя следующий метод, но я получаю ошибку.

{template="pst_dollafin" app="core" group="dollafin" location="front" params=""}

В чем проблема?

Ссылка на комментарий
Поделиться на другие сайты

Скорее всего, неправильный синтаксис в вызове шаблона.

Это то, что отображает сайт при попытке использовать код:

13 минут назад, turk сказал:
{template="pst_dollafin" app="core" group="dollafin" location="front" params=""}

А что говорит журнал ошибок? Подробности бы лучше скидывать....

Ссылка на комментарий
Поделиться на другие сайты

Error: Call to a member function author() on null in /home/*******/*******/system/Theme/Theme.php(885) : eval()'d code:1062
Stack trace:
#0 /home/*******/*******/system/Theme/SandboxedTemplate.php(61): IPS\Theme\class_core_front_dollafin->pst_dollafin(Object(IPS\core\Achievements\Rank))
#1 /home/*******/*******/system/Theme/Theme.php(885) : eval()'d code(3216): IPS\Theme\_SandboxedTemplate->__call('pst_dollafin...', Array)
#2 /home/*******/*******/system/Theme/SandboxedTemplate.php(61): IPS\Theme\class_forums_front_topics->postContainer(Object(IPS\forums\Topic), Object(IPS\forums\Topic\Post), Array, '')
#3 /home/*******/*******/system/Theme/Theme.php(885) : eval()'d code(5973): IPS\Theme\_SandboxedTemplate->__call('postContainer', Array)
#4 /home/*******/*******/system/Theme/SandboxedTemplate.php(61): IPS\Theme\class_forums_front_topics->topic(Object(IPS\forums\Topic), Array, NULL, Array, NULL, NULL, Array)
#5 /home/*******/*******/applications/forums/modules/front/forums/topic.php(604): IPS\Theme\_SandboxedTemplate->__call('topic', Array)
#6 /home/*******/*******/system/Dispatcher/Controller.php(118): IPS\forums\modules\front\forums\_topic->manage()
#7 /home/*******/*******/system/Content/Controller.php(50): IPS\Dispatcher\_Controller->execute()
#8 /home/*******/*******/applications/forums/modules/front/forums/topic.php(39): IPS\Content\_Controller->execute()
#9 /home/*******/*******/system/Dispatcher/Dispatcher.php(153): IPS\forums\modules\front\forums\_topic->execute()
#10 /home/*******/*******/index.php(13): IPS\_Dispatcher->run()
#11 {main} 

 

Ссылка на комментарий
Поделиться на другие сайты

31 минуту назад, turk сказал:
Error: Call to a member function author() on null in /home/*******/*******/system/Theme/Theme.php(885) : eval()'d code:1062
Stack trace:
#0 /home/*******/*******/system/Theme/SandboxedTemplate.php(61): IPS\Theme\class_core_front_dollafin->pst_dollafin(Object(IPS\core\Achievements\Rank))
#1 /home/*******/*******/system/Theme/Theme.php(885) : eval()'d code(3216): IPS\Theme\_SandboxedTemplate->__call('pst_dollafin...', Array)
#2 /home/*******/*******/system/Theme/SandboxedTemplate.php(61): IPS\Theme\class_forums_front_topics->postContainer(Object(IPS\forums\Topic), Object(IPS\forums\Topic\Post), Array, '')
#3 /home/*******/*******/system/Theme/Theme.php(885) : eval()'d code(5973): IPS\Theme\_SandboxedTemplate->__call('postContainer', Array)
#4 /home/*******/*******/system/Theme/SandboxedTemplate.php(61): IPS\Theme\class_forums_front_topics->topic(Object(IPS\forums\Topic), Array, NULL, Array, NULL, NULL, Array)
#5 /home/*******/*******/applications/forums/modules/front/forums/topic.php(604): IPS\Theme\_SandboxedTemplate->__call('topic', Array)
#6 /home/*******/*******/system/Dispatcher/Controller.php(118): IPS\forums\modules\front\forums\_topic->manage()
#7 /home/*******/*******/system/Content/Controller.php(50): IPS\Dispatcher\_Controller->execute()
#8 /home/*******/*******/applications/forums/modules/front/forums/topic.php(39): IPS\Content\_Controller->execute()
#9 /home/*******/*******/system/Dispatcher/Dispatcher.php(153): IPS\forums\modules\front\forums\_topic->execute()
#10 /home/*******/*******/index.php(13): IPS\_Dispatcher->run()
#11 {main} 

 

Ну по идее, если кратко, то ошибка из-за того, что функцию author() мы пытаемся вызвать на объекте, который не был инициализирован или не существует.

И скорее всего на отдельной HTML странице, мы не сможем получить доступ к различным объектам и методам, определенным в IPS, например как требующиеся тебе $comment и $comment->author().

И для того, что бы реализовать то что ты хочешь, мы должны этот код запихнуть в PHP файл, где подключим необходимые файлы для IPS через require_once и уже этот PHP файл мы подключаем в твоем HTML, который мы выводим в Postcontainer.

Жесть че я сказал? Это вообще легитно? Но по логике так... 😆

Ссылка на комментарий
Поделиться на другие сайты

Разрешите мне дать вам более ясное объяснение. Я создал файл HTML, как показано на картинке, и поместил свой код в него:

Spoiler alert

Firefox_Screenshot_2023-05-08T17-41-35_597Z.thumb.png.3b11a342b328aa0c0ef6b747e10dbd2d.png

Теперь я вызвал этот код в формате postcontainer, как показано на картинке ниже, но я получаю ошибку.

Spoiler alert

Firefox_Screenshot_2023-05-08T17-43-59_090Z.png.28e5e2992db0c87518f232b2f14f744b.png

 

Ссылка на комментарий
Поделиться на другие сайты

Я не программист или что-то в этом роде, но, может быть, я смогу помочь вам найти ответ, если вы покажете мне пример

Ссылка на комментарий
Поделиться на другие сайты

В 08.05.2023 в 15:31, turk сказал:
Error: Call to a member function author() on null in /home/*******/*******/system/Theme/Theme.php(885) : eval()'d code:1062
Stack trace:
#0 /home/*******/*******/system/Theme/SandboxedTemplate.php(61): IPS\Theme\class_core_front_dollafin->pst_dollafin(Object(IPS\core\Achievements\Rank))
#1 /home/*******/*******/system/Theme/Theme.php(885) : eval()'d code(3216): IPS\Theme\_SandboxedTemplate->__call('pst_dollafin...', Array)
#2 /home/*******/*******/system/Theme/SandboxedTemplate.php(61): IPS\Theme\class_forums_front_topics->postContainer(Object(IPS\forums\Topic), Object(IPS\forums\Topic\Post), Array, '')
#3 /home/*******/*******/system/Theme/Theme.php(885) : eval()'d code(5973): IPS\Theme\_SandboxedTemplate->__call('postContainer', Array)
#4 /home/*******/*******/system/Theme/SandboxedTemplate.php(61): IPS\Theme\class_forums_front_topics->topic(Object(IPS\forums\Topic), Array, NULL, Array, NULL, NULL, Array)
#5 /home/*******/*******/applications/forums/modules/front/forums/topic.php(604): IPS\Theme\_SandboxedTemplate->__call('topic', Array)
#6 /home/*******/*******/system/Dispatcher/Controller.php(118): IPS\forums\modules\front\forums\_topic->manage()
#7 /home/*******/*******/system/Content/Controller.php(50): IPS\Dispatcher\_Controller->execute()
#8 /home/*******/*******/applications/forums/modules/front/forums/topic.php(39): IPS\Content\_Controller->execute()
#9 /home/*******/*******/system/Dispatcher/Dispatcher.php(153): IPS\forums\modules\front\forums\_topic->execute()
#10 /home/*******/*******/index.php(13): IPS\_Dispatcher->run()
#11 {main} 

 

В params нужно передавать переменные вызываемые в шаблоне. А так ты подключил шаблон без данных в переменных, естественно будет ошибка при вызове любых функций

Ссылка на комментарий
Поделиться на другие сайты

3 hours ago, Mr Haim said:

I'm not a programmer or anything but maybe I can help you find the answer if you show me an example

Какой пример?

23 minutes ago, Exception said:

In params, you need to pass variables called in the template. And since you connected the template without data in the variables, naturally there will be an error when calling any functions

Я сделал это, но это все равно выдавало мне ошибку

{template="pst_dollafin" app="core" group="dollafin" location="front" params="'$comment','$rank','$nextRank'"} 

 

Ссылка на комментарий
Поделиться на другие сайты

Только что, turk сказал:

Какой пример?

Я сделал это, но это все равно выдавало мне ошибку

{template="pst_dollafin" app="core" group="dollafin" location="front" params="'$comment','$rank','$nextRank'"} 

 

Пример того, что вам нужно/попросить/спросить

Ссылка на комментарий
Поделиться на другие сайты

3 minutes ago, Mr Haim said:

An example of what you need/ask/ask

Спойлер

Firefox_Screenshot_2023-05-10T17-27-40_636Z.png.5c3a6b3624f74898096a4ee809657a9f.png

 

Ссылка на комментарий
Поделиться на другие сайты

16 минут назад, turk сказал:

Я сделал это, но это все равно выдавало мне ошибку

ну здрасте в кавычках ' передается строковое значение, а не переменная, это вообще база php, зачем вы лезете туда с 0 знаний, не понятно.

{template="pst_dollafin" app="core" group="dollafin" location="front" params="$comment, $rank, $nextRank"}

в созданном шаблоне так же нужно указать, что они действительно принимаются через кнопку Переменные
 

Изменено пользователем Exception
Ссылка на комментарий
Поделиться на другие сайты

я думаю что


Извините, если я неправильно вас понял
буду и дальше стараться помогать

Ссылка на комментарий
Поделиться на другие сайты

13 hours ago, Exception said:

in the created template, you also need to indicate that they are really accepted through the Variables button

как?

Ссылка на комментарий
Поделиться на другие сайты

turk попробуйте в свойствах своего файла добавить переменные $item, $comment

а здесь

params="'$comment','$rank','$nextRank'

переменные указываются без кавычек

Ссылка на комментарий
Поделиться на другие сайты

56 minutes ago, AHristich said:

turk try to add $item, $comment variables in your file properties

and here

params   =   "'$comment','$rank','$nextRank'   

variables are specified without quotes

Это также не дало ответа.

Ссылка на комментарий
Поделиться на другие сайты

Может быть проблема в следующих настройках? Конечно, я проверил все пункты.

Spoiler alert

Firefox_Screenshot_2023-05-12T11-45-57_573Z.thumb.png.6bf0a8ab6ca460b1a684ab67df93c083.png

 

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...