godsdev / mycms
Requires
- php: ^5.6 || ^7.0
- ext-mbstring: *
- ext-session: *
- godsdev/backyard: ^3.2.1
- godsdev/tools: ^0.3.4
- latte/latte: ^2.4.6
- nette/utils: ^2.4.8
- texy/texy: ^2.7.1
- tracy/tracy: ^2.4.10
Requires (Dev)
- phpunit/phpunit: ^4|^5
This package is auto-updated.
Last update: 2021-05-21 11:16:25 UTC
README
一个用于帮助开发交互式网站的简单框架。作为一个开发栈,您安装它并编写针对项目的特定类。
功能
- 在展示中使用了 jQuery 和 Bootstrap(版本 4)
- 使用 Latte 作为模板引擎
- 使用 MySQL/MariaDB 作为网站数据库
- 包含通用管理
- 其他依赖库和技术 - Tracy, Nette\SmartObject, Psr\Log\LoggerInterface, GodsDev\Backyard\BackyardMysqli
安装
在 composer.json
中要求 MyCMS。
{ ... "required": { "GodsDev/mycms": "^0.3.4" //or the latest version ... } }
composer install
命令将库文件加载到 ./vendor/godsdev/mycms/
。库的类在 ./vendor/godsdev/mycms/classes/
中,大部分都以 My
为前缀。
要自定义项目,在 ./classes/
目录中创建自己的类,继承 MyCMS 的类,并命名时不包含初始的 My
。
$MyCMS = new \GodsDev\MyCMS\MyCMS( array( // compulsory 'logger' => $logger, // object \Psr\Log\LoggerInterface //optional ) ); //Finish with Latte initialization & Mark-up output $MyCMS->renderLatte(DIR_TEMPLATE_CACHE, "\\GodsDev\\ProjectName\\Latte\\CustomFilters::common", $params);
文件 process.php
和 admin-process.php
必须存在并处理表单。
注意:期望 ProjectSpecific extends ProjectCommon
类(@todo 用参数处理替换全局 $MyCMS)使用 $MyCMS
名称。
部署
/dist
/dist
文件夹包含用于使用 MyCMS 的新项目的初始 分发 文件,因此将其复制到新项目文件夹中。将字符串 MYCMSPROJECTNAMESPACE
替换为您的项目命名空间。将字符串 MYCMSPROJECTSPECIFIC
替换为其他网站特定信息(品牌、Twitter 地址、电话号码等)。
MyCMS 仅作为库使用,因此使用它的应用程序应实现 RedirectMatch 404 vendor\/
语句,如 dist/.htaccess
中所建议的,以隐藏库从网络访问。
语言
以下设置是 MyCMS 所用应用程序期望的
define('DEFAULT_LANGUAGE', 'en');
以下文件是期望在应用程序中存在的
- './language-' . $resultLanguage . '.inc.php';其中
$resultLanguage
是一个(ISO 3166-2)两位字母的语言代码。语言版本(或翻译,resp.)在实例化 MyCMS 对象时指定。例如
array( ... 'TRANSLATIONS' => array( 'en' => 'ENG', 'cn' => '中文', 'cs' => 'CZ' ), )
管理员备注
客户端资源
在 class/Admin.php
中,您可以重新定义 clientSideResources
变量,以加载到管理员中。其默认值是
protected $clientSideResources = [ 'js' => [ 'scripts/jquery.js', 'scripts/popper.js', 'scripts/bootstrap.js', 'scripts/admin.js?v=' . PAGE_RESOURCE_VERSION, ], 'css-pre-admin' => [ 'styles/bootstrap.css', ], 'css' => [ 'styles/font-awesome.css', 'styles/ie10-viewport-bug-workaround.css', 'styles/bootstrap-datetimepicker.css', 'styles/summernote.css', 'styles/admin.css?v=' . PAGE_RESOURCE_VERSION, ] ];
admin.css
可以继承到子项目中,但是因为供应商文件夹应该拒绝浏览器访问,所以该标准 admin.css
的内容必须通过方法 MyAdmin::getAdminCss 获取。
测试
从命令行运行
./vendor/bin/phpunit
请注意,dist
文件夹包含基于MyCMS的项目部署和测试运行,因此为了开发,还需要为dist
设置环境。
待办事项
- 190705:
classes\LogMysqli.php
正在进行日志记录'log/sql' . date("Y-m-d") . '.log.sql'
到当前脚本的调用目录——这对于API来说并不理想。如何从APP_ROOT开始? - 190723: 如果在同一域名下存在两个不同的MyCMS实例,那么登录到admin.php时,即使该用户不存在,也会登录到所有实例。
- 待检查 190723: 设置密码不应存储在log.sql中——调用BackyardMysqli实例而不是LogMysqli实例?@crs2: 添加参数(到LogMysqli.php中的query())来抑制error_log()调用是否可以解决这个问题?然后在更改密码时调用该参数?+ 我还想到一个解决方案,即在表列级别,即在LogMysqli.php中定义哪些表包含用于日志记录的敏感数据。但这将需要解析SQL。
- 200314: 友好URL管理在F4T/classes/Admin::outputSpecialMenuLinks()和::sectionUrls()中,将其通用化到MyCMS,并启用FRIENDLY_URL == true时