作者:jianyue1980_852 | 来源:互联网 | 2023-08-17 14:14
以下分享的一些便捷操作可以说都是干货了,有二次开发typo3的小伙伴可以省去不少google的时间[aru_36],这篇文章会持续更新,这段时间工作比较忙,有时间再写[aru_14
以下分享的一些便捷操作可以说都是干货了,有二次开发typo3的小伙伴可以省去不少google的时间 [aru_36],这篇文章会持续更新,这段时间工作比较忙,有时间再写 [aru_147]
最方便的debug
- php中输出到页面:
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($nowDate);
//输出对象查询的SQL语句
$queryParser = $this->objectManager->get(\TYPO3\CMS\Extbase\Persistence\Generic\Storage\Typo3DbQueryParser::class);
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($queryParser->convertQueryToDoctrineQueryBuilder($query)->getSQL());
{data}
{_all}
在PHP中拼接符合typo3规则的URL链接
$uParams = array(
array(
'tx_areas_area' = array(
'action' = 'yourActionName',
'controller' = 'yourControllerName',
'plugin' = 'yourPluginName',
'moreParams' = 其他参数
)
)
-参数说明:
$uCOnfs= array(
'useCacheHash' = 1,(0或1)
'no_cache' = 0,(0或1)
'parameter' = 168,(pageUID)
'moreParams' = ''(其他参数)
);
$objUrl = $this-createTypo3LinkUrl($uParams,$uConfs);
string 'areas/?tx_areas_area%5Baction%5D=action&tx_areas_area%5Bcontroller%5D=controller&tx_areas_area%5Bplugin%5D=plugin&tx_areas_area%5BmoreParams%5D=252&cHash=8aa773ad881f38fc0a78d7dc80bb1be4'
/**
* 构成typo3的链接
* createTypo3LinkUrl
*/
private function createTypo3LinkUrl($uParams,$uConfs){
$cOnf=array();
$conf['useCacheHash'] = $uConfs['useCacheHash'];
$conf['no_cache'] = $uConfs['no_cache'];
$conf['parameter'] = $uConfs['parameter'];
$conf['additionalParams'] = GeneralUtility::implodeArrayForUrl('', $uParams, '', TRUE).$uConfs['moreParams'];
$cObj = GeneralUtility::makeInstance('TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer');
$cObj-typoLink('|', $conf);
$url = $cObj->lastTypoLinkUrl;
return $url;
}
typo3 页面跳转
$this->forward($actionName, $controllerName, $extensionName, array $arguments);
$this->redirect($actionName, $controllerName, $extensionName, array $arguments, $pageUid, $delay = 0, $statusCode = 303);
$this->redirectToURI($uri, $delay=0, $statusCode=303);
$this->throwStatus($statusCode, $statusMessage, $content);
修改typo3中通知样式
- 在系统setup中引入通知所需的css,js文件,本人修改时使用 UIkit 的通知组件,组件下载地址:http://www.getuikit.net/download/uikit-2.25.0.zip
- 按照以下路径找到文件
\var\www\html\domain\typo3\sysext\core\Classes\Messaging\Renderer\ListRenderer.php
- 找到文件后,修改以下函数
getMessageAsMarkup()
/*将函数内容全部注释,方便以后修改*/
/**
* Gets the message rendered as clean and secure markup
*
* @param FlashMessage[] $flashMessages
* @return string
*/
protected function getMessageAsMarkup(array $flashMessages) : string
{
//源代码注释掉
/*$markup = [];
$script = [];
$markup[] = '';
return implode('', $markup);*/
/*王宏彬于 2018-04-11 15:43修改*/
//重新写执行逻辑
$markup = [];
$markup[] = '';
return implode('', $markup);
}
可检查上述文件中函数 getClass()
该函数中修改你的css样式class
/**
* Gets the message severity class name
*
* @param FlashMessage $flashMessage
*
* @return string The message severity class name
*/
protected function getClass(FlashMessage $flashMessage) : string
{
/*王宏彬于 2018-04-11 15:43修改*/
// return 'alert-' . self::$classes[$flashMessage->getSeverity()];
return self::$classes[$flashMessage->getSeverity()];
}
修改后效果如下图:
![Alt text](https://img.php1.cn/3cd4a/1eebe/cd5/8be1ccb5166feb93.webp)
再次运行检查,效果正常的话替换成功 [aru_51]
typo3中ViewHelper的书写示例
#InListViewHelper.php
namespace GeorgRinger\Theme\ViewHelpers;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractConditionViewHelper;
/**
* typo3的辅助方法,判断目标元素存在于集合
*
* = Examples =
*
*
* {theme:inList(list: '1,2', item:data.layout, then: 'someClass', else: '')}"
*
*
*/
class InListViewHelper extends AbstractConditionViewHelper {
/**
* 判断,如果目标元素存在于集合,返回 thenChild
* 不存在,返回 elseChild
*
* @param string $list 集合
* @param string $item 目标元素
* @return string
*/
public function render($list, $item) {
if (GeneralUtility::inList($list, $item)) {
return $this->renderThenChild();
} else {
return $this->renderElseChild();
}
}
}
在控制器中获取当前扩展信息
- 获取当前扩展名称:
$this->request->getPluginName()
- 获取当前控制器名称:
$this->request->getControllerName()
- 获取当前Action名称:
$this->request->getControllerActionName()
如下图,在下图显示的项中,使用get方法即可获得 get后第一个字母大写:
![https://img8.php1.cn/3cdc5/18a53/882/b21c7e592992711e.png](https://img8.php1.cn/3cdc5/18a53/882/b21c7e592992711e.png)