Posted 8 мая, 20231 yr 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=""} В чем проблема?
8 мая, 20231 yr comment_193164 Скорее всего, неправильный синтаксис в вызове шаблона. Это то, что отображает сайт при попытке использовать код: 13 минут назад, turk сказал: {template="pst_dollafin" app="core" group="dollafin" location="front" params=""} А что говорит журнал ошибок? Подробности бы лучше скидывать....
8 мая, 20231 yr 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}
8 мая, 20231 yr 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. Жесть че я сказал? Это вообще легитно? Но по логике так... 😆
8 мая, 20231 yr Author comment_193171 Разрешите мне дать вам более ясное объяснение. Я создал файл HTML, как показано на картинке, и поместил свой код в него: Spoiler alert Теперь я вызвал этот код в формате postcontainer, как показано на картинке ниже, но я получаю ошибку. Spoiler alert
10 мая, 20231 yr comment_193231 Я не программист или что-то в этом роде, но, может быть, я смогу помочь вам найти ответ, если вы покажете мне пример
10 мая, 20231 yr 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 нужно передавать переменные вызываемые в шаблоне. А так ты подключил шаблон без данных в переменных, естественно будет ошибка при вызове любых функций
10 мая, 20231 yr 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'"}
10 мая, 20231 yr comment_193238 Только что, turk сказал: Какой пример? Я сделал это, но это все равно выдавало мне ошибку {template="pst_dollafin" app="core" group="dollafin" location="front" params="'$comment','$rank','$nextRank'"} Пример того, что вам нужно/попросить/спросить
10 мая, 20231 yr Author comment_193240 3 minutes ago, Mr Haim said: An example of what you need/ask/ask Спойлер
10 мая, 20231 yr comment_193244 16 минут назад, turk сказал: Я сделал это, но это все равно выдавало мне ошибку ну здрасте в кавычках ' передается строковое значение, а не переменная, это вообще база php, зачем вы лезете туда с 0 знаний, не понятно. {template="pst_dollafin" app="core" group="dollafin" location="front" params="$comment, $rank, $nextRank"} в созданном шаблоне так же нужно указать, что они действительно принимаются через кнопку Переменные Edited 10 мая, 20231 yr by Exception
10 мая, 20231 yr comment_193245 я думаю что Извините, если я неправильно вас понял буду и дальше стараться помогать
11 мая, 20231 yr Author comment_193260 13 hours ago, Exception said: in the created template, you also need to indicate that they are really accepted through the Variables button как?
12 мая, 20231 yr comment_193290 turk попробуйте в свойствах своего файла добавить переменные $item, $comment а здесь params="'$comment','$rank','$nextRank' переменные указываются без кавычек
12 мая, 20231 yr 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 Это также не дало ответа.
12 мая, 20231 yr Author comment_193293 Может быть проблема в следующих настройках? Конечно, я проверил все пункты. Spoiler alert
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.