TYPO3中便捷操作
原文連結:https://www.whongbin.cn/index/article/detail/id/35.html
分享下TYPO3中的一些便捷操作
以下分享的一些便捷操作可以說都是乾貨了,有二次開發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());
- 頁面中輸出PHP傳遞的變數:
<f:debug>{_all}</f:debug>
<!-- 輸出變數{_all}代表所有變數 -->
<f:debug>{data}</f:debug>
<f:debug>{_all}</f:debug>
在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);
- 外部HTTP重定向到另一控制器
$this->redirect($actionName, $controllerName, $extensionName, array $arguments, $pageUid, $delay = 0, $statusCode = 303);
- 重定向至指定url
$this->redirectToURI($uri, $delay=0, $statusCode=303);
- 傳送HTTP狀態碼
$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[] = '<ul class="typo3-messages whbedit">';
foreach ($flashMessages as $flashMessage) {
$messageTitle = $flashMessage->getTitle();
$markup[] = '<li class="alert ' . htmlspecialchars($this->getClass($flashMessage)) . '">';
if ($messageTitle !== '') {
$markup[] = '<h4 class="alert-title">' . htmlspecialchars($messageTitle) . '</h4>';
}
$markup[] = '<p class="alert-message">' . htmlspecialchars($flashMessage->getMessage()) . '</p>';
$markup[] = '</li>';
}
$markup[] = '</ul>';
return implode('', $markup);*/
/*王巨集彬於 2018-04-11 15:43修改*/
//重新寫執行邏輯
$markup = [];
$markup[] = '<script>';
$markup[] = '$(function(){';
foreach ($flashMessages as $flashMessage) {
$messageTitle = $flashMessage->getTitle();
if ($messageTitle !== '') {
# your code
}
$markup[] = "UIkit.notify({message:'" . htmlspecialchars($flashMessage->getMessage()) . "', status:'".htmlspecialchars($this->getClass($flashMessage))."', timeout:500, pos:'top-center'});";
}
$markup[] = '});';
$markup[] = '</script>';
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()];
}
-
修改後效果如下圖:
再次執行檢查,效果正常的話替換成功 [aru_51]
2018-10-09 更新
typo3中ViewHelper的書寫示例
#InListViewHelper.php
<?php
namespace GeorgRinger\Theme\ViewHelpers;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractConditionViewHelper;
/**
* typo3的輔助方法,判斷目標元素存在於集合
*
* = Examples =
*
* <code title="Basic usage">
* {theme:inList(list: '1,2', item:data.layout, then: 'someClass', else: '')}"
* </code>
* <output>
* 如果當前頁的欄位'佈局'包含在1或2,則顯示字串'someClass'。
* </output>
*/
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();
}
}
}
2018-10-15 更新
相關文章
- Mac操作指南:spotlight的便捷使用方法Mac
- CloudQuery 統一便捷的資料操作工具Cloud
- 比Spotlight操作更便捷,比Alfred更高效,更直觀!Alfred
- 提供一個操作便捷、多功能的Recyclerview介面卡View
- Laravel 重度使用者,如何給 Lumen 新增便捷的命令操作Laravel
- PHP ??的便捷PHP
- 效率與便捷兼備,大資料視覺化軟體操作指南大資料視覺化
- Typo3 CVE-2019-12747 反序列化漏洞分析
- 非常便捷的本地MockMock
- HHDBCS便捷功能簡介
- Django便捷函式shortcutsDjango函式
- 使用指令碼便捷地在 Ubuntu 中安裝最新 Linux 核心指令碼UbuntuLinux
- 圖觀™引擎V3.3.4 功能更強、操作更便捷!最新升級一睹為快
- jQuery中DOM操作jQuery
- 炫酷元件模板+便捷操作,V10.5版本讓自助儀表盤製作更美更易用!元件
- 資料庫伺服器備份儲存更換不受任何影響的便捷操作方法資料庫伺服器
- [Flutter package] 富文字便捷配置庫FlutterPackage
- Chrome OS超便捷安裝指南Chrome
- HDR影像便捷處理軟體
- 實現智慧客服的便捷方法
- 便捷的業務規則桌面工具
- 智慧黨建平臺中的民生溝通功能幫助資訊流動更便捷
- 權威、安全、便捷的“可信工作證”
- 更便捷的css處理方式-PostCSSCSS
- Stream中的Peek操作
- JavaScript中 |、& 、!!操作符JavaScript
- jQuery中的DOM操作jQuery
- jquery 中的dom操作jQuery
- angular中的dom操作Angular
- react中的DOM操作React
- JS中陣列操作JS陣列
- SQL中並行操作SQL並行
- .net中xml基本操作XML
- 在JavaScript中操作CookieJavaScriptCookie
- oracle中Job的操作Oracle
- javascript中Array的操作JavaScript
- IDEA中便捷記憶體資料庫H2的最簡使用方式Idea記憶體資料庫
- 操作選中cell 所有cell操作相同情況下