Jump to content

Featured Replies

Posted

Привет!

Я использую следующий код в файле 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=""}

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

  • Author
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.

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

  • Author

Разрешите мне дать вам более ясное объяснение. Я создал файл 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 нужно передавать переменные вызываемые в шаблоне. А так ты подключил шаблон без данных в переменных, естественно будет ошибка при вызове любых функций

  • Author
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'"} 

 

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

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

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

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

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

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

Edited by Exception

  • Author
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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.