首页
时事
归档
壁纸
更多
留言
关于
邻里
Search
1
使用必应Bing每日图片做网站背景(自动)
2,987 阅读
2
vue的输入值校验规则整理
1,662 阅读
3
VUE `ERR_CONNECTION_TIMED_OUT`的解决办法
1,628 阅读
4
好站推荐-https://wangchujiang.com/linux-command/
1,598 阅读
5
微信支付开发前准备(小程序、公众号、App、H5)
1,582 阅读
文章
图说
代码
吐槽
登录
Search
标签搜索
Linux
laravel
windows
TYPO3
php
shell脚本
git
微信
好站
vue
第三方登录
centos
linxu
centos7
thinkPHP
微信支付
api
MySQL
桌面
必应首图
Beer
累计撰写
114
篇文章
累计收到
22
条评论
首页
栏目
文章
图说
代码
吐槽
页面
时事
归档
壁纸
留言
关于
邻里
搜索到
5
篇与
TYPO3
的结果
2021-01-28
TYPO3功能API解析 - GeneralUtility
API介绍这个API是基于TYPO3,且只能使用在TYPO3-CMS中的功能性辅助函数集合,它将PHP的功能函数做了优化,使得这些函数搭配TYPO3使用更方便,更简单,更准确。可以说是TYPO3开发中的必要工具。该API在TYPO3-CMS中的位置:(项目根目录)/typo3/sysext/core/Classes/Utility/GeneralUtility.php。使用方法方法1:该API不需要实例化就可以使用。使用 \TYPO3\CMS\Core\Utility\GeneralUtility:: 型的函数名前缀就可以调用成功。eg. :\TYPO3\CMS\Core\Utility\GeneralUtility::milliseconds(); //获取unix毫秒时间戳。;eg. :\TYPO3\CMS\Core\Utility\GeneralUtility::_GET(); //获取GET提交数据。;方法2:使用 use 导入该API的命名空间后进行使用。使用 在类(class)的上方,use TYPO3\CMS\Core\Utility\GeneralUtility 就可以在类中直接调用成功了。eg. :GeneralUtility::milliseconds(); //获取unix毫秒时间戳。;eg. :GeneralUtility::_GET(); //获取GET提交数据。;详细1、GET/POST 变量 //返回指定变量的 $_GET/$_POST 数据 public static function _GP($var) //返回指定变量 $_GET和$_POST合并数据集,$_POST优先。 public static function _GPmerged($parameter) //返回指定变量的 $_GET 数据 public static function _GET($var = null) //返回指定变量的 $_POST 数据 public static function _POST($var = null)2、字符串处理 //兼容中文的字符串截断和拼接 public static function fixed_lgd_cs($string, $chars, $appendString = '...') //验证IP地址是否合法 public static function validIP($ip) //验证IPv4地址是否合法 public static function validIPv4($ip) //验证IPv6地址是否合法 public static function validIPv6($ip) //用通配符字符串匹配列表中完全合格的域名 public static function cmpFQDN($baseHost, $list) //检查给定的URL是否与当前发起HTTP请求的主机相匹配。 public static function isOnCurrentHost($url) //检查以逗号分隔的项目列表中存在的项 public static function inList($list, $item) //删除列表中的一项 public static function rmFromList($element, $list) //扩大以逗号分隔的与范围的整数列表(例如1,3-5,7变为1,3,4,5,7)。扩大范围最大为间隔的1000倍 public static function expandList($list) //从输入的md5哈希值的前7个字符中得出一个正整数哈希值 public static function md5int($str) /返回MD5hash的前$len个字符(默认为10个) public static function shortMD5($input, $len = 10) //在给定的输入字符串和TYPO3加密密钥上返回正确的HMAC。 public static function hmac($input, $additionalSecret = '') //删除使用逗号分隔的列表和数组中的所有重复项 public static function uniqueList($in_list, $secondParameter = null) //获取文件详情 [path], [file], [filebody], [fileext], [realFileext] public static function split_fileref($fileNameWithPath) //返回路径的目录部分,后面不带斜杠 public static function dirname($path) /如果$str的第一部分与字符串$partStr匹配,则返回TRUE public static function isFirstPartOfStr($str, $partStr) //文件大小格式化为人类可读数据 public static function formatSize($sizeInBytes, $labels = '', $base = 0) //简单的数学运算 /+-* // string $string 计算公式 eg "123 + 456 / 789 - 4 // string $operators 运算符 "/+-* // return array 运算符和操作数分开的数组。 public static function splitCalc($string, $operators) //验证邮箱地址是否合法 public static function validEmail($email) //字符串转为ASCII字符串(unicode) public static function idnaEncode($value) //下划线命名转为首字母大写的驼峰命名 public static function underscoredToUpperCamelCase($string) //下划线命名转为首字母小写的驼峰命名 public static function underscoredToLowerCamelCase($string) //驼峰命名转为下划线命名 public static function camelCaseToLowerCaseUnderscored($string) //验证给定链接是否合法(是否可访问) public static function isValidUrl($url) 3、数组处理 //分解由$delimiter分隔的$string并将数组中的每个项目强制转换为(int)。 public static function intExplode($delimiter, $string, $removeEmptyValues = false, $limit = 0) //解释不来,看例子:GeneralUtility::revExplode('[]', '[my][words][here]', 2) 输出:array('[my][words', 'here]') public static function revExplode($delimiter, $string, $count = 0) //把$string按照指定字符$delim转为数组,并去掉空白值 public static function trimExplode($delim, $string, $removeEmptyValues = false, $limit = 0) /数组转为Url参数 public static function implodeArrayForUrl($name, $theArray, $str = '', $skipBlank = false, $rawurlencodeParamName = false) //Url参数转为数组 public static function explodeUrl2Array($string) //返回键名为$varList列表的数组 // string $varList 变量/键名列表 // array $getArray 来源数组 // bool $GPvarAlt get/post数据作为来源数组 public static function compileSelectedGetVarsFromArray($varList, array $getArray, $GPvarAlt = true) //从ts配置文件中删除'.' public static function removeDotsFromTS(array $ts) 4、HTML/XML 处理方式 //以键值对格式返回指定html标签 public static function get_tag_attributes($tag) //数组转为HTML参数:输入eg. "bgcolor"=>"red", "border"=>0;输出eg. 'bgcolor="red" border="0"' public static function implodeAttributes(array $arr, $xhtmlSafe = false, $dontOmitBlankAttribs = false) //使用<script>标签 包装JavaScript代码XHTML public static function wrapJS($string) //XML转为树结构数组 public static function xml2tree($string, $depth = 999, $parserOptions = []) //数组转为xml public static function array2xml(array $array, $NSprefix = '', $level = 0, $docTag = 'phparray', $spaceInd = 0, array $options = [], array $stackData = []) //xml转为数组 public static function xml2array($string, $NSprefix = '', $reportDocTag = false) //压缩 JavaScript public static function minifyJavaScript($script, &$error = '') 5、FILES 处理函数 //读取文件或URL $url并返回内容 public static function getUrl($url, $includeHeader = 0, $requestHeaders = null, &$report = null) //在文件$file中写入内容$content public static function writeFile($file, $content, $changePermissions = false) //设置文件系统模式和文件或文件夹的组所有权 public static function fixPermissions($path, $recursive = false) //在文件$filepath中写入内容$content 文件存放在 typo3temp/ 目录下 public static function writeFileToTypo3tempDir($filepath, $content) //创建目录 public static function mkdir($newFolder) //创建目录-必要时包括父目录,并在新创建的目录上设置权限 public static function mkdir_deep($directory) //删除目录;递归删除子目录及文件 public static function rmdir($path, $removeNonEmpty = false) //通过首先移至临时资源,然后触发删除过程来刷新目录。这样可以更快地刷新目录,以防止在并发进程访问同一目录时出现争用情况。 public static function flushDirectory($directory, $keepOriginalDirectory = false, $flushOpcodeCache = false) /返回具有特定路径中文件夹名称的数组。如果读取目录内容时出错,将返回“错误”(字符串)。如果提供的路径为false,则将返回null public static function get_dirs($path) //查找给定路径中的所有文件,并将它们作为数组返回。每个数组键都是文件完整路径的md5哈希。这样做是因为诸如导入/导出扩展之类的“某些”扩展依赖于此。 public static function getFilesInDir($path, $extensionList = '', $prependPath = false, $order = '', $excludePattern = '') //递归查找目录中的所有文件和文件夹 public static function getAllFilesAndFoldersInPath(array $fileArr, $path, $extList = '', $regDirs = false, $recursivityLevels = 99, $excludePattern = '') //删除$fileArr中所有文件/文件夹的绝对部分 public static function removePrefixPathFromList(array $fileArr, $prefixToRemove) //修复Windows反斜杠的路径,并将双斜杠减少为单斜杠 public static function fixWindowsFilePath($theFile) //解析路径中的 "../" public static function resolveBackPath($pathStr) //返回可跳转的链接 public static function locationHeaderUrl($path) //获取最大文件上传大小(KB) public static function getMaxUploadFileSize() //(G,M,K,)转为字节 public static function getBytesFromSizeMeasurement($measurement) //文件添加静态版本号 public static function createVersionNumberedFilename($file) //将JavaScript字符串写入以该字符串的md5-hash命名的临时文件 public static function writeJavaScriptContentToTemporaryFile(string $content) //将Css字符串写入以该字符串的md5-hash命名的临时文件 public static function writeStyleSheetContentToTemporaryFile(string $content) 6、系统信息 //返回完整链接 public static function linkThisScript(array $getParams = []) //$getParams中的参数添加到$url中并返回完整链接 public static function linkThisUrl($url, array $getParams = []) //存储一个自定义变量,仅做测试用 public static function setIndpEnv($envName, $value) //获取指定参数值 SCRIPT_NAME, SCRIPT_FILENAME, REQUEST_URI, PATH_INFO, REMOTE_ADDR, REMOTE_HOST, HTTP_REFERER, HTTP_HOST, HTTP_USER_AGENT, HTTP_ACCEPT_LANGUAGE, QUERY_STRING, TYPO3_DOCUMENT_ROOT, TYPO3_HOST_ONLY, TYPO3_HOST_ONLY, TYPO3_REQUEST_HOST, TYPO3_REQUEST_URL, TYPO3_REQUEST_SCRIPT, TYPO3_REQUEST_DIR, TYPO3_SITE_URL, _ARRAY public static function getIndpEnv($getEnvName) //获取unix毫秒时间戳。 public static function milliseconds() 7、TYPO3 特殊功能函数 //解析'EXT:'为文件绝对路径 public static function getFileAbsFileName($filename) //检查恶意文件 public static function validPathStr($theFile) //检查$path是绝对路径还是相对路径(检测'/'或'x:/'作为字符串的第一部分),如果是,则返回TRUE public static function isAbsPath($path) //如果路径是绝对路径,没有反向路径".."并且在TYPO3的项目或公用文件夹中,或者在lockRootPath中,则返回TRUE public static function isAllowedAbsPath($path) //根据"fileDenyPattern"验证输入文件名。如果确定,则返回TRUE。 public static function verifyFilenameAgainstDenyPattern($filename) //递归复制目录下的所有文件和子目录 public static function copyDirectory($source, $destination) //将$source文件上传到$destination目录(如果已上传),否则尝试进行复制 public static function upload_copy_move($source, $destination) //将文件移动到临时目录 public static function upload_to_tempfile($uploadedFileName) //删除 var/ 或者 typo3temp 目录中的临时文件 public static function unlink_tempfile($uploadedTempFileName) //创建临时文件名(使用唯一的文件名创建文件) public static function tempnam($filePrefix, $fileSuffix = '') //标准身份验证代码 public static function stdAuthCode($uid_or_record, $fields = '', $codeLength = 8) //如果不存在翻译,则响应输入的本地化设置值是否应隐藏其来源页面 public static function hideIfNotTranslated($l18n_cfg_fieldValue) //如果未将“ l18n_cfg”字段值设置为隐藏,则返回true public static function hideIfDefaultLanguage($localizationConfiguration) //在类中调用用户定义的函数/方法 public static function callUserFunction($funcName, &$params, &$ref) //刷新内部运行时缓存 public static function flushInternalRuntimeCaches() //引用一个用作JS参数的字符串。 public static function quoteJSvalue($value)
2021年01月28日
643 阅读
0 评论
0 点赞
2020-04-17
TYPO3安装系统要求及配置
系统要求TYPO3需要一个Web服务器,需要PHP和数据库系统。TYPO3需要一个可以运行PHP 的Web服务器(Apache/httpd,Nginx,Microsoft IIS)。如果使用Apache Web服务器,则必须激活某些模块(例如mod_rewrite)。TYPO3 V10 要求 PHP >= 7.2 <= 7.4 .对于PHP,需要几个PHP扩展,文档中会具体介绍扩展和配置。您可能要调整内存限制。TYPO3可以与许多 数据库系统 一起使用(MariaDB> = 10.2 <= 10.3,Microsoft SQL Server,MySQL> = 5.7 <= 8.1,PostgreSQL,SQLite)。如果要TYPO3自动执行 图像处理(例如缩放或裁剪),则需要在服务器上安装 GraphicsMagick(1.3版或更高版本)或 ImageMagick(6版或更高版本)。(推荐 GraphicsMagick) 操作系统Linux,Windows或Mac或常见的云基础架构设置WEB服务器Apache httpd,Nginx,Microsoft IIS,Caddy服务器数据库MariaDB >= 10.0 <= 10.3, Microsoft SQL Server,MySQL >= 5.0 <= 5.7,PostgreSQL,SQLite硬件最低1核CPU,2G内存,5M带宽;建议2核4G5M带宽支持的浏览器Chrome (最新),Edge (最新),Firefox (最新),Internet Explorer >= 11,Safari (最新)PHPPHP >= 7.2 <= 7.4数据库环境TYPO3与上述版本中的数据库管理系统一起使用。如果使用MySQL ,必须启用InnoDB引擎。数据库权限供TYPO3使用的数据库需要以下权限:SELECT, INSERT, UPDATE, DELETECREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES另外建议同时赋予以下权限:CREATE VIEW, SHOW VIEWEXECUTE, CREATE ROUTINE, ALTER ROUTINEWeb服务器环境Apache如果使用Apache作为Web服务器使用的话,请确保Web服务器配置.htaccess中的 AllowOverride 包括 Indexes 和 FileInfo 。在文件.htaccess 中启用Apache模块 mod_rewrite:模块介绍备注mod_alias:Block access to vcs directories(strongly recommended for security reasons).mod_authz_core:Block access to specific files and directories(strongly recommended for security reasons).mod_autoindex:Used for disabling directory listings(strongly recommended for security reasons).mod_deflate:Used for compression, better performance. mod_expires:Adds HTTP headers for browser caching and betterperformancemod_filter:Used with mod_deflate. For Apache versions belowversion 2.3.7 you don't need to enable mod_filter.mod_headers:Used in combination with mod_deflate. mod_rewrite:Enable human readable urls. mod_setenvif:Also used with mod_deflate. 在安装过程中(首次安装),如果默认 .htaccess 文件不存在,则将其复制到项目的文档根文件夹中。NGINXNGINX服务用不了默认的 .htaccess 文件配置,所以需要自行去配置下. The NGINX configuration has to be setup manually.示例配置: # Compressing resource files will save bandwidth and so improve loading speed especially for users # with slower internet connections. TYPO3 can compress the .js and .css files for you. # *) Set $GLOBALS['TYPO3_CONF_VARS']['BE']['compressionLevel'] = 9 for the Backend # *) Set $GLOBALS['TYPO3_CONF_VARS']['FE']['compressionLevel'] = 9 together with the TypoScript properties # config.compressJs and config.compressCss for GZIP compression of Frontend JS and CSS files. location ~ \.js\.gzip$ { add_header Content-Encoding gzip; gzip off; types { text/javascript gzip; } } location ~ \.css\.gzip$ { add_header Content-Encoding gzip; gzip off; types { text/css gzip; } } # TYPO3 - Rule for versioned static files, configured through: # - $GLOBALS['TYPO3_CONF_VARS']['BE']['versionNumberInFilename'] # - $GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename'] if (!-e $request_filename) { rewrite ^/(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ /$1.$3 last; } # TYPO3 - Block access to composer files location ~* composer\.(?:json|lock) { deny all; } # TYPO3 - Block access to flexform files location ~* flexform[^.]*\.xml { deny all; } # TYPO3 - Block access to language files location ~* locallang[^.]*\.(?:xml|xlf)$ { deny all; } # TYPO3 - Block access to static typoscript files location ~* ext_conf_template\.txt|ext_typoscript_constants\.txt|ext_typoscript_setup\.txt { deny all; } # TYPO3 - Block access to miscellaneous protected files location ~* /.*\.(?:bak|co?nf|cfg|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql|sqlite)$ { deny all; } # TYPO3 - Block access to recycler and temporary directories location ~ _(?:recycler|temp)_/ { deny all; } # TYPO3 - Block access to configuration files stored in fileadmin location ~ fileadmin/(?:templates)/.*\.(?:txt|ts|typoscript)$ { deny all; } # TYPO3 - Block access to libraries, source and temporary compiled data location ~ ^(?:vendor|typo3_src|typo3temp/var) { deny all; } # TYPO3 - Block access to protected extension directories location ~ (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?|Documentation|docs?)/ { deny all; } location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+?\.php)(/.*)$; if (!-f $document_root$fastcgi_script_name) { return 404; } fastcgi_buffer_size 32k; fastcgi_buffers 8 16k; fastcgi_connect_timeout 240s; fastcgi_read_timeout 240s; fastcgi_send_timeout 240s; fastcgi_pass typo3:9000; fastcgi_index index.php; include fastcgi.conf; }PHP 环境memory_limit 至少设置为 256Mmax_execution_time 至少设置为 30 (建议设置为240)max_input_vars 至少设置为 1500PHP 扩展PHP需要支持以下扩展。安装过程中会检查这些扩展的可用性。以下扩展可能在安装php时自动安装序号扩展名1PDO2json3pcre >= 8.38 (Mac users: see warning a the end of this document)4session5xml5filter6hash7mbstring8SPL9standard以下扩展需要单独安装加载序号扩展名1fileinfo2gd3zip4zlib5openssl5intl6mysqli (if you use MySQL, MariaDB as DBMS)7postgresql (if you use PostgreSQL as DBMS)8sqlsrv (if you use SQL Server as DBMS)9sqlite (if you use SQLite as DBMS)
2020年04月17日
558 阅读
0 评论
0 点赞
2020-04-04
如何在TYPO3版本9.5中创建sitemap.xml
安装扩展首先,需要安装扩展 seo ,这个扩展从 TYPO3 9.5 版本开始已经集成,只要成功安装TYPO3就可以自动加载使用了。集成扩展然后,需要将静态 TypoScript 模板包括到网站的主模板中。最好在根页面上使用,除非有特殊情况。执行以上操作后,通过以下形式连接就可以看到生成的站点地图了: https://www.yourdomin.cn/?type=1533906435如:本站的站点地图是: https://www.whongbin.cn/?type=1533906435效果预览官方文档此处在TYPO3官方文档中对整个内容进行了说明:https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/XmlSitemap/Index.html创建 domin.cn/sitemap.xml 格式官方文档中并没有提供有关如何创建格式为 domain.cn/sitemap.xml 格式的网址的更多详细信息。但是在一些聚合站点上,使用这种格式的站点地图还是占大多数,由此,我分享一个简单的方法以解决这个问题:创建路由打开 站点 选项,创建一个名称为 sitemap.xml 的新静态路由即可。现在,在浏览器中通过这种格式 https://domin.cn/sitemap.xml 就可以查看站点地图或站点地图索引了!如:本站的站点地图是: https://www.whongbin.cn/sitemap.xml
2020年04月04日
520 阅读
0 评论
0 点赞
2019-03-25
在Ubuntu18.04LTS上安装typo3LTS
什么是TYPO3TYPO3是一个开源企业CMS(内容管理系统),拥有庞大的全球社区,并得到了许多公司和个人的大力支持。目前我所知道的国内的是我所在的公司 极益科技有限公司在做二次开发,开源项目地址:https://gitee.com/ngo/os我在本文中,分享下 在Ubuntu18.04上基于LAMP环境安装TYPO3的最新可用LTS版本 的详细步骤。环境准备系统:Ubuntu18.04LTS服务:Apache2.4PHP:PHP7.0+(如果是typo3 9版本 则至少 7.3)MySQL:MySQL5.5+TYPO3源码在安装TYPO3之前,需要找到TYPO3源码。获取方式并不唯一一、CURL下载源码登录服务器后,进入web服务目录,然后执行下载命令。下面的命令下载到的是最新的TYPO3 LTS版本。cd /var/www/html下载TYPO3源码sudo curl -L https://get.typo3.org/8 -o typo3_src.tar.gz解压typo3_src.tar.gz压缩包sudo tar xfz typo3_src.tar.gz源码下载成功。。。TYPO3安装进入 /var/www/html/typo3_src-8.7.24 目录中。二、安装依赖项在浏览器中访问网站IP或域名。如果看到如下TYPO3页面则证明源码下载没有问题根据提示得知,我们需要创建一个名为__FIRST_INSTALL__ 的 __文件__(是文件!!!)才能继续安装。(不明白为什么老外不把这个文件创建在源码包里)sudo touch FIRST_INSTALL文件创建成功后,重新加载浏览器,看到下面页面就可以继续往下进行了。注:如果看到很多红色和黄色的消息,请不要担心。这只是环境中有未安装的PHP模块或着PHP配置不符。继续往下看,后面有解决办法#使用apt一次安装所有需要的模块来解决这个问题。 sudo apt install php-gd php-xml php-zip php-soap php-apcu openssl安装完所有内容后,重启Apache服务以确保加载PHP模块。再次刷新页面,通常是执行完上面操作后应该只剩下黄色消息,黄色消息是PHP相关配置。配置PHP.ini在phpinfo中找到php.ini的目录,编辑它sudo editor /etc/php/7.2/apache2/php.ini sudo service apache2 restart如果以上所有步骤都正确执行了,再次刷新页面应该是这样的点击按钮 System looks good. Continue! 继续安装三、配置MYSQL连接在连接前,准备好链接参数1、root 权限sudo -s2、连接到MySQL服务mysql3、创建typo3用户create user typo3 identified by '123456';密码随意,但也不要太随意了。本文仅作为演示。4、为此用户创建数据库并授予权限。create database typo3; grant all privileges on typo3.* to 'typo3';5、更改字符集为utf8。alter database typo3 character set utf8 collate utf8_general_ci;然后把数据库的用户名和密码写入四、创建用户,网站命名执行完这一步安装就快完成了,现在为我们网站创建一个后端管理员用户。还可以命名你的网站名称。五、最后一步执行完上面所有步骤,网站就安装成功了。现在你可以使用第四步创建的用户登录并管理你的网站了吐槽下吧typo3的功能确实强大,强大到你只要有基础,两天就会用,四天就会改的地步,但是,如果你一旦改错地方,你可能需要大量时间去修改它。说是这么说,typo3是我见过代码最严谨的框架。。。 至于TYPO3的功能。简直丰富的不要不要的,毕竟它可以完全零代码就能搭建,如果不用定制开发的话,四千多个插件总有你喜欢的。如果你想了解更多或者开发遇到问题。请联系我
2019年03月25日
934 阅读
2 评论
0 点赞
2019-03-13
TYPO3中便捷操作
以下分享的一些便捷操作可以说都是干货了,有二次开发typo3的小伙伴可以省去不少google的时间 [aru_36],这篇文章会持续更新,这段时间工作比较忙,有时间再写 [aru_147]最方便的debugphp中输出到页面:\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]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(); } } }在控制器中获取当前扩展信息获取当前扩展名称:$this->request->getPluginName()获取当前控制器名称:$this->request->getControllerName()获取当前Action名称:$this->request->getControllerActionName()如下图,在下图显示的项中,使用get方法即可获得 get后第一个字母大写:
2019年03月13日
583 阅读
0 评论
0 点赞