Typo3:登录后显示用户特定的Json文件
基本上,我想做一个扩展,从一个目录加载json文件,循环遍历它们,并在用户登录后显示名称和URL。我不明白应该在哪里编写代码,我试着用扩展生成器进行扩展,然后从那里开始工作,但我迷路了。 MediaListController中的My show函数:Typo3:登录后显示用户特定的Json文件,json,frontend,typo3-8.x,typo3-extensions,Json,Frontend,Typo3 8.x,Typo3 Extensions,基本上,我想做一个扩展,从一个目录加载json文件,循环遍历它们,并在用户登录后显示名称和URL。我不明白应该在哪里编写代码,我试着用扩展生成器进行扩展,然后从那里开始工作,但我迷路了。 MediaListController中的My show函数: public function showAction(\Plaspack\PlaspackJson2media\Domain\Model\MediaList $mediaList) { $currentUser = $GLOBALS
public function showAction(\Plaspack\PlaspackJson2media\Domain\Model\MediaList $mediaList)
{
$currentUser = $GLOBALS['TSFE']->fe_user->user['uname'];
$filepath = "json/mediaData_";
$filepath .= $currentUser;
$filepath .= ".json";
$result = file_get_contents ($filepath);
$json = json_decode($result,true);
print_r($json);
$mediaItems = $json[1];
foreach ($mediaItems as $key => $mediaItem){
echo $mediaItem["name"] . ", " . $mediaItem["url"]. "," . $mediaItem["thumbUrl"] ."<br>";
}
$this->view->assign('mediaList', $mediaList);
}
public function showAction(\Plaspack\PlaspackJson2media\Domain\Model\MediaList$MediaList)
{
$currentUser=$GLOBALS['TSFE']->fe_user->user['uname'];
$filepath=“json/mediaData”;
$filepath.=$currentUser;
$filepath.=“.json”;
$result=file\u get\u contents($filepath);
$json=json_decode($result,true);
打印(json);
$mediaItems=$json[1];
foreach($mediaItems作为$key=>$mediaItem){
echo$mediaItem[“名称”]。”、“$mediaItem[“url”]。”、“$mediaItem[“拇指url”]。”
”;
}
$this->view->assign('mediaList',$mediaList);
}
听起来这是可行的
不要忘记缓存:默认情况下,缓存是针对用户组进行的,而不是针对每个用户进行的。
您应该将plugin/JSON文件从常规缓存中排除,并且可以使用用户id作为缓存标记自己进行缓存
你走对了路。 请考虑:在任何类型3功能中都没有
echo
或print\r
!
因为TYPO3总是将输出存储在字符串变量中,该变量会不断增强,直到最后显示字符串。因此,每个echo
都将启动输出,头部的任何配置都将无效
看看扩展生成器创建的方法:返回$stringvar
的方法是什么?哪个方法将结果存储在变量中(如$this->view->assign()
)
在您的示例中,您可以执行回显
,但不从刚获取的数据中分配任何内容。如何使用
$this->view->assign('mediaList',$mediatems)
将当前列表分配给流体变量mediaList
其他想法:不要使用
username
(uname
?)字段来区分用户,使用uid
,用户名可以更改,用户可以删除,新用户可以选择删除的名称
为什么选择JSON文件?在扩展中,您可以增强数据库fe_users表中的文件链接列表
最后:你的缓存在哪里?至少禁用std缓存,更好:输入用户特定的缓存标记老实说,我迷路了。如果使用选项1:自定义内容元素,我将从何处开始?我假设没有像yetcustom content element=FE插件这样的扩展。创建一个扩展(例如扩展生成器),此扩展定义了可存储用户信息的其他字段,并定义了至少一个未缓存(!)插件,用于创建文件(?)并为当前活动/登录的用户创建内容。我使用扩展生成器创建了一个扩展,包含3个域(用户、媒体列表、媒体)还有插件。我剩下的问题是:-我应该在哪些文件中添加用户信息的附加字段-我应该把代码放在哪里来处理插件中的文件?对不起,我还是一个输入错误3的新手,所以所有这些都在我的脑子里结了一个大结。你的用户将映射到内置表
fe\u users
。所以你要么增强fe_用户
直接或将fe_用户
链接到您的用户。我用应该加载json文件的代码更新了我的原始帖子,仍然不知道代码应该在哪里,在哪个文件中。