masterflash-ru / kontakt
Simba 系统管理联系页面,多语言支持
Requires
- php: ^7.2 || ^8.0
- laminas/laminas-cache: *
- laminas/laminas-captcha: *
- laminas/laminas-form: *
- laminas/laminas-i18n: *
- laminas/laminas-inputfilter: *
- laminas/laminas-mvc: *
- laminas/laminas-mvc-plugin-prg: *
- laminas/laminas-recaptcha: *
- laminas/laminas-router: *
- laminas/laminas-serializer: *
- masterflash-ru/emailer: *
- masterflash-ru/statpage: *
- masterflash-ru/validator_i18n: *
README
输出联系人页面和反馈表单。使用 statpage 服务,其中应包含名为 KONTAKT 的页面,并具有“内部用途”状态。反馈表单直接发送到经理的邮箱。经理的邮箱地址在 config 中以 admin_emails 键指定,形式为数组。回复地址存储在通用配置的 email_robot 键中。
提供额外选项,包括弹出窗口进行回电和订阅等操作
安装 composer require masterflash-ru/kontakt
用于发送消息的是 masterflash-ru/emailer 包 - 如果它在更新后安装,请勿忘记将数据库转储加载到数据库中。
字段配置存储在 config/forma.ХХХХ.config.php 中,如有必要,您可以添加新字段,指定新的配置文件。请注意!不要更改 captcha、submit、security 的名称。所有字段都直接发送到邮箱,字段签名取自标签。ХХХХ - 元素名称:kontakt、call、subs
模块具有生成 sitemap.xml 网站地图的调用,为 masterflash-ru/sitemap 模块生成索引文件和地图提供信息,目前只支持 ru_RU。搜索路由的原则是根据路由名称中的 kontakt 开头词进行搜索。
对于多语言网站,所有功能都已准备就绪,通常不需要修改(尚未测试):1 - 添加与默认路由类似的路由,例如,
'kontakt_en_US' => [ 'type' => Segment::class, 'options' => [ 'route' => '/en/kontakt', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'index', 'locale' => 'en_US' ], ], ],
2 - 在应用程序配置中添加翻译器部分,例如,
'translator' => [ 'locale' => 'en_US', 'translation_file_patterns' => [ [ 'type' => 'phparray', 'base_dir' => __DIR__ . '/../locale', 'pattern' => '%s.php', ], ], ],
3 - 在文件中添加语言翻译,例如,en_US.php,例如,
return [ "Ваш email адрес"=>"Your email address", ];
模块设置(默认如下),在您的应用程序中定义新的选项。除 'captcha'、'security'、"submit" 之外的所有字段都发送到邮箱。字段名称取自配置表单的 label 选项
"kontakt"=>[ /*конфиг элементов ленты*/ "categories"=>[ 'kontakt_page' =>[ 'description'=>'Страница контактов + форма', 'tpl' => [ 'index' => 'kontakt/index/index', //шаблон вывода страницы 'ok' => 'kontakt/index/ok', //шаблон вывода страницы после отправки формы ], 'layout' => null, //макет вывода, по умолчанию текущий /*конфигурация формы*/ "forma"=>__DIR__."/forma.kontakt.config.php", ], 'subs' =>[ 'description'=>'Всплывающее окно для подписок', 'tpl' => [ 'index' => 'kontakt/subs/index', //шаблон вывода страницы 'ok' => 'kontakt/subs/ok', //шаблон вывода страницы после отправки формы ], /*конфигурация формы*/ "forma"=>__DIR__."/forma.subs.config.php", ], 'call' =>[ 'description'=>'Всплывающее окно для обратного звонка', 'tpl' => [ 'index' => 'kontakt/call/index', //шаблон вывода страницы 'ok' => 'kontakt/call/ok', //шаблон вывода страницы после отправки формы ], /*конфигурация формы*/ "forma"=>__DIR__."/forma.call.config.php", ], ], /*какие элементы разрешено использовать, укажите в конфиге своего приложения */ "enables"=>[ "kontakt_page"=>true, "subs" =>false, "call" =>false ], ],
表单输出脚本使用 bootstrap4,如有需要,请使用自己的脚本,并在脚本中指定格式为 Laminas 的名称以处理弹出窗口
1 - 在布局中连接文件 jquery.form.min.js 以处理异步请求
2 - 使用 bootstrap4 对话框
<button class="btn btn-primary subs mt-2 btn-sm" data-toggle="modal" data-target="#subsModal">Подписаться на рассылку</button> <div class="modal fade" id="subsModal" tabindex="-1" role="dialog" aria-labelledby="SModalLabel" aria-hidden="true"> <div class="modal-dialog modal-lg" role="dialog"> <div class="modal-content"> <div class="modal-header"> <p class="modal-title h5 text-primary" id="exampleModalCenterTitle">Подписаться на рассылку</p> <button type="button" class="close bg-danger" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> </div> </div> </div> </div> <script> /*диалог подписаться, в момент открытия загружается форма*/ $('#subsModal').on('show.bs.modal', function (event) { $(this).find('.modal-body').load("/subs"); }) </script>
3 - 当然,所有 bootstrap4 库都应该被连接