Jump to content

Featured Replies

Posted
comment_193163

Привет!

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

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

comment_193164

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

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

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

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

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

 

comment_193166
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
comment_193171

Разрешите мне дать вам более ясное объяснение. Я создал файл 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

 

comment_193231

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

comment_193235
В 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
comment_193237
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'"} 

 

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

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

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

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

 

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

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

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

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

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

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

Edited by Exception

comment_193290

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

а здесь

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

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

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