ZSA Moonlander Lets the Keyboard Halves Follow the Workspace

Sesli oku

Tom's Guide's long-term Moonlander review describes an ergonomic split mechanical keyboard with hot-swappable switches and several tenting positions. Its two halves can be arranged for the user instead of forcing one fixed-width placement. Configuration and training software help with the unfamiliar layout.

The reviewer liked its adaptability and typing feel but found parts somewhat flimsy and easy to move. The white version also collected visible dirt. Plan stable positions for the halves and allow time to learn the layout; high customization does not remove the adjustment period or guarantee the same comfort for everyone.

Make room for the connection and thumb clusters

The Moonlander uses a wired USB-C connection through the left half. The adjustable thumb clusters and removable supports add flexibility, but their chosen angles affect the space needed in front of each hand. Check those positions together with the mouse rather than arranging the halves by appearance alone. A split layout can fit a person differently without necessarily occupying less total desktop area.

Build a small set of useful layers first

The source describes Oryx and Keymapp tools for remapping and training, including actions that differ when a key is tapped or held. That can reduce awkward combinations, but adding many custom commands immediately also increases the learning burden. Start with the essential typing and navigation actions, then introduce shortcuts that solve a repeated task. The review notes that default multi-modifier combinations can interact with Windows application shortcuts.

The Moonlander halves seen from the side in different support positions. Image: Alex Wawro / Future.
The Moonlander halves seen from the side in different support positions. Image: Alex Wawro / Future.

Check stability at the selected tenting angle

The reviewer found the board could move when placed in some tented positions and discussed an optional support platform. That is a physical fit issue separate from how good the switches feel. Test light typing and ordinary hand placement with the chosen supports before expanding the configuration. Hot-swap switches and extensive remapping make the system adaptable, but stable placement remains the foundation for using those features comfortably.

Establish physical positions before building complex layers

Two movable halves allow the keyboard to follow the user's arrangement instead of imposing one fixed case width. That flexibility still requires a deliberate trial. Position the halves, thumb clusters and supports around the actual chair, desk and pointer, then check ordinary typing. A split design can occupy more total surface than expected when the halves are separated, so measure usable working area rather than interpreting modular construction as an automatic space saving.

The source found movement under the hands particularly noticeable in some tented positions. Test the chosen angle with ordinary key pressure before assuming the layout is settled. The optional Platform was considered by the reviewer but not tested, so it should not be described as a verified fix in this account. Its current compatibility and cost require a separate assessment. Stable placement is the starting point for learning the controls, not a concern to postpone until after extensive customization.

Learn the Moonlander on a stable arrangement
Original editorial setup and learning sequence for the ZSA Moonlander.

Learn the essential map before multiplying actions

Oryx and Keymapp make reassignment approachable, while tap, hold and combined behaviors can place several functions on one physical key. That capability is useful only when the user can predict the result reliably. Begin with typing, navigation and frequently repeated commands. Add a layer when it solves an identifiable task, then practice it before changing several other parts of the map. The source's learning period makes this a realistic part of ownership rather than an optional inconvenience.

Training can use familiar prose, code or other chosen text, allowing practice to reflect the actual work. The reviewer's positive experience with live feedback and progress measures explains why the software mattered as much as the hardware. Avoid treating a powerful editor as evidence that the layout is immediately natural. A saved configuration and a stable physical arrangement provide a clearer basis for evaluating progress than constantly changing both the key functions and the keyboard positions.

Keep shortcut compatibility and switch preference distinct

The source notes that the default multi-modifier Hyper combination can trigger existing Microsoft application shortcuts. Check the actual host behavior before assigning important commands around an assumption that such combinations are unused. A supported remapping can address the intended workflow, but it should be tested in the applications involved. The keyboard's flexibility does not remove interactions with operating-system shortcuts.

Hot-swappable switches provide another way to tailor the device, with options differing in force, travel and feedback. Compare the current choices and try the supplied action before assuming a more elaborate configuration is needed. The reviewer's favorable Kailh experience and long use are personal evidence rather than universal comfort results. Include the present base price, any support accessories and learning time in the decision, alongside the actual benefits of the split positions and useful software tools.

References

  1. ZSA Moonlander review: The most customizable keyboard I've ever used. Tom's Guide; Alex Wawro.

Yazar Hakkında

WEBUZMAN 354 yazı

Burada sadece teorik bilgiler değil, gerçek deneyimlere dayanan pratik çözümler var. Burada yol arkadaşı olacağız. Karmaşık konuları birlikte çözecek, teknik detayları birlikte aşacağız...

Benzer Yazılar

Bir Cevap Yaz

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir.

Görünüm

E-Bülten Aboneliği

Güncel haberlerden haberdar olmak için e-bültenimize abone olun

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-10-28 13:02:34 HTTP/1.1 GET : https://workspaceguidesetup.com/news/56519/zsa-moonlander-lets-the-keyboard-halves-follow-the-workspace
  2. 运行时间 : 0.051965s [ 吞吐率:19.24req/s ] 内存消耗:7,570.06kb 文件加载:178
  3. 缓存信息 : 0 reads,0 writes
  1. /www/wwwroot/zmCms/my-cms/public/index.php ( 3.09 KB )
  2. /www/wwwroot/zmCms/my-cms/vendor/autoload.php ( 0.73 KB )
  3. /www/wwwroot/zmCms/my-cms/vendor/composer/autoload_real.php ( 1.63 KB )
  4. /www/wwwroot/zmCms/my-cms/vendor/composer/platform_check.php ( 0.90 KB )
  5. /www/wwwroot/zmCms/my-cms/vendor/composer/ClassLoader.php ( 15.99 KB )
  6. /www/wwwroot/zmCms/my-cms/vendor/composer/autoload_static.php ( 5.01 KB )
  7. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /www/wwwroot/zmCms/my-cms/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  14. /www/wwwroot/zmCms/my-cms/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  15. /www/wwwroot/zmCms/my-cms/vendor/symfony/var-dumper/Resources/functions/dump.php ( 0.99 KB )
  16. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  17. /www/wwwroot/zmCms/my-cms/vendor/symfony/var-dumper/VarDumper.php ( 3.73 KB )
  18. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  19. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  20. /www/wwwroot/zmCms/my-cms/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  21. /www/wwwroot/zmCms/my-cms/app/provider.php ( 0.19 KB )
  22. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Http.php ( 6.22 KB )
  23. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  24. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  25. /www/wwwroot/zmCms/my-cms/app/common.php ( 0.22 KB )
  26. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/helper.php ( 18.77 KB )
  27. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Config.php ( 5.93 KB )
  28. /www/wwwroot/zmCms/my-cms/config/app.php ( 1.11 KB )
  29. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  30. /www/wwwroot/zmCms/my-cms/config/cache.php ( 1.95 KB )
  31. /www/wwwroot/zmCms/my-cms/config/console.php ( 0.47 KB )
  32. /www/wwwroot/zmCms/my-cms/config/cookie.php ( 0.56 KB )
  33. /www/wwwroot/zmCms/my-cms/config/database.php ( 2.13 KB )
  34. /www/wwwroot/zmCms/my-cms/config/filesystem.php ( 0.61 KB )
  35. /www/wwwroot/zmCms/my-cms/config/lang.php ( 0.91 KB )
  36. /www/wwwroot/zmCms/my-cms/config/log.php ( 2.18 KB )
  37. /www/wwwroot/zmCms/my-cms/config/mail.php ( 1.23 KB )
  38. /www/wwwroot/zmCms/my-cms/config/middleware.php ( 0.26 KB )
  39. /www/wwwroot/zmCms/my-cms/config/route.php ( 1.89 KB )
  40. /www/wwwroot/zmCms/my-cms/config/session.php ( 0.59 KB )
  41. /www/wwwroot/zmCms/my-cms/config/trace.php ( 0.34 KB )
  42. /www/wwwroot/zmCms/my-cms/config/view.php ( 2.08 KB )
  43. /www/wwwroot/zmCms/my-cms/app/event.php ( 0.25 KB )
  44. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Event.php ( 7.77 KB )
  45. /www/wwwroot/zmCms/my-cms/app/service.php ( 0.13 KB )
  46. /www/wwwroot/zmCms/my-cms/app/AppService.php ( 0.86 KB )
  47. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /www/wwwroot/zmCms/my-cms/vendor/services.php ( 0.15 KB )
  53. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.20 KB )
  64. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.75 KB )
  65. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.30 KB )
  68. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /www/wwwroot/zmCms/my-cms/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /www/wwwroot/zmCms/my-cms/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /www/wwwroot/zmCms/my-cms/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-helper/src/helper/Arr.php ( 17.45 KB )
  80. /www/wwwroot/zmCms/my-cms/app/common/cache/DomainCache.php ( 5.40 KB )
  81. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  82. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/cache/Driver.php ( 9.02 KB )
  83. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  84. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/facade/Request.php ( 9.20 KB )
  85. /www/wwwroot/zmCms/my-cms/app/Request.php ( 0.09 KB )
  86. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Request.php ( 54.64 KB )
  87. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/traits/UrlHandler.php ( 6.05 KB )
  88. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/traits/DomainHandler.php ( 5.49 KB )
  89. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/traits/HttpMethodHandler.php ( 4.74 KB )
  90. /www/wwwroot/zmCms/my-cms/app/middleware.php ( 0.34 KB )
  91. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  92. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  93. /www/wwwroot/zmCms/my-cms/app/middleware/LangMiddleware.php ( 4.35 KB )
  94. /www/wwwroot/zmCms/my-cms/app/middleware/CorsMiddleware.php ( 3.60 KB )
  95. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  96. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/route/RuleName.php ( 5.74 KB )
  97. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  98. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.41 KB )
  99. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/route/Rule.php ( 27.49 KB )
  100. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  101. /www/wwwroot/zmCms/my-cms/route/app.php ( 17.18 KB )
  102. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  103. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  104. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/route/Dispatch.php ( 11.32 KB )
  105. /www/wwwroot/zmCms/my-cms/app/controller/DetailController.php ( 18.72 KB )
  106. /www/wwwroot/zmCms/my-cms/app/controller/BaseController.php ( 48.65 KB )
  107. /www/wwwroot/zmCms/my-cms/app/BaseController.php ( 2.14 KB )
  108. /www/wwwroot/zmCms/my-cms/app/common/traits/MemberHelper.php ( 2.88 KB )
  109. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/facade/Log.php ( 3.07 KB )
  110. /www/wwwroot/zmCms/my-cms/vendor/psr/log/src/LogLevel.php ( 0.33 KB )
  111. /www/wwwroot/zmCms/my-cms/app/common/log/DomainFile.php ( 2.91 KB )
  112. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/log/driver/File.php ( 6.10 KB )
  113. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  114. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  115. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  116. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/event/LogWrite.php ( 0.76 KB )
  117. /www/wwwroot/zmCms/my-cms/app/common/IpHelper.php ( 2.17 KB )
  118. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  119. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  120. /www/wwwroot/zmCms/my-cms/app/service/SiteService.php ( 22.97 KB )
  121. /www/wwwroot/zmCms/my-cms/app/common/DomainHelper.php ( 14.61 KB )
  122. /www/wwwroot/zmCms/my-cms/app/common/cache/CacheHelper.php ( 29.40 KB )
  123. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/facade/Config.php ( 1.37 KB )
  124. /www/wwwroot/zmCms/my-cms/app/model/Site.php ( 2.88 KB )
  125. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/facade/App.php ( 2.73 KB )
  126. /www/wwwroot/zmCms/my-cms/app/service/MenuService.php ( 6.82 KB )
  127. /www/wwwroot/zmCms/my-cms/app/service/ModuleService.php ( 17.29 KB )
  128. /www/wwwroot/zmCms/my-cms/app/service/SiteExtensionDataDataService.php ( 3.08 KB )
  129. /www/wwwroot/zmCms/my-cms/app/service/SitePageService.php ( 2.30 KB )
  130. /www/wwwroot/zmCms/my-cms/app/common/util/StringUtil.php ( 9.08 KB )
  131. /www/wwwroot/zmCms/my-cms/app/view/driver/CustomThink.php ( 4.18 KB )
  132. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  133. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  134. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  135. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  136. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  137. /www/wwwroot/zmCms/my-cms/app/common/CustomTemplate.php ( 0.76 KB )
  138. /www/wwwroot/zmCms/my-cms/app/common/PathHelper.php ( 32.31 KB )
  139. /www/wwwroot/zmCms/my-cms/app/common/util/SocialUrlUtil.php ( 1.59 KB )
  140. /www/wwwroot/zmCms/my-cms/app/common/service/SymlinkService.php ( 16.08 KB )
  141. /www/wwwroot/zmCms/my-cms/app/model/SitePage.php ( 1.11 KB )
  142. /www/wwwroot/zmCms/my-cms/app/service/SiteCategoryService.php ( 18.30 KB )
  143. /www/wwwroot/zmCms/my-cms/app/service/AdsUnitService.php ( 42.44 KB )
  144. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  145. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.73 KB )
  146. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/PDOConnection.php ( 53.74 KB )
  147. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  148. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  149. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  150. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/Builder.php ( 24.07 KB )
  151. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  152. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/Query.php ( 15.97 KB )
  153. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  154. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  155. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  156. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  157. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  158. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  159. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  160. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  161. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  162. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  163. /www/wwwroot/zmCms/my-cms/app/common/SeoVarHelper.php ( 5.65 KB )
  164. /www/wwwroot/zmCms/my-cms/app/service/SiteNewsService.php ( 6.37 KB )
  165. /www/wwwroot/zmCms/my-cms/app/model/News.php ( 7.12 KB )
  166. /www/wwwroot/zmCms/my-cms/app/common/UrlHelper.php ( 9.39 KB )
  167. /www/wwwroot/zmCms/my-cms/app/common/util/LdJson.php ( 23.74 KB )
  168. /www/wwwroot/zmCms/my-cms/app/model/SiteModel.php ( 0.92 KB )
  169. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  170. /www/wwwroot/zmCms/my-cms/app/service/PageMetaService.php ( 10.94 KB )
  171. /www/wwwroot/zmCms/my-cms/app/common/ArrayAccessWrapper.php ( 6.19 KB )
  172. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-template/src/template/taglib/Cx.php ( 24.23 KB )
  173. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-template/src/template/TagLib.php ( 12.11 KB )
  174. /www/wwwroot/zmCms/my-cms/runtime/temp/f78f4ede059a1da62431c75f0e43120a.php ( 118.17 KB )
  175. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Response.php ( 9.07 KB )
  176. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/response/Html.php ( 0.97 KB )
  177. /www/wwwroot/zmCms/my-cms/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  178. /www/wwwroot/zmCms/my-cms/vendor/topthink/think-trace/src/Html.php ( 4.65 KB )
  1. SiteService getSiteByDomain - 查找站点,域名: workspaceguidesetup.com
  2. SiteService getSiteByDomain - 找到站点,ID: 1961, 名称: WorkspaceSetup Guide, 模板ID: 224
  3. SiteService safeTemplateDirExists - 检查模板目录是否存在,模板UID: workspaceguidesetup.com, 根路径: /www/wwwroot/zmCms/my-cms/
  4. SiteService safeTemplateDirExists - 检查路径: /www/wwwroot/zmCms/templates/workspaceguidesetup.com/, 是否存在: 否
  5. SiteService safeTemplateDirExists - 检查路径: /www/wwwroot/zmCms/my-cms/templates/workspaceguidesetup.com/, 是否存在: 否
  6. SiteService safeTemplateDirExists - 模板目录不存在: workspaceguidesetup.com
  7. SiteService getCurrentTemplate - 域名目录不存在: workspaceguidesetup.com,继续检查站点配置
  8. SiteService getCurrentTemplate - 使用传入的站点对象,ID: 1961, 模板ID: 224
  9. SiteService getCurrentTemplate - 从站点对象获取模板UID: news_qkd_0021
  10. SiteService safeTemplateDirExists - 检查模板目录是否存在,模板UID: news_qkd_0021, 根路径: /www/wwwroot/zmCms/my-cms/
  11. SiteService safeTemplateDirExists - 检查路径: /www/wwwroot/zmCms/templates/news_qkd_0021/, 是否存在: 是
  12. SiteService safeTemplateDirExists - 模板目录存在: /www/wwwroot/zmCms/templates/news_qkd_0021/
  13. SiteService getCurrentTemplate - 数据库配置模板目录存在,返回: news_qkd_0021
  14. [CacheHelper] 写入缓存: tpUid:workspaceguidesetup.com, 结果: 成功
  15. APCu缓存设置结果: 成功, 域: workspaceguidesetup.com, 值: news_qkd_0021
  16. 站点信息 - ID: 1961, URL: workspaceguidesetup.com, 类型: 0, 模板: news_qkd_0021, 站点数据: 存在
  17. [Lang] 当前语言: en,站点默认: en,URL 前缀: 否
  18. SiteService findTemplatePath - 应用根目录: /www/wwwroot/zmCms/my-cms/
  19. SiteService findTemplatePath - 检查的目录列表: workspaceguidesetup.com, news_qkd_0021, default, game_default
  20. SiteService findTemplatePath - 可能的基路径: /www/wwwroot/zmCms/templates/, /www/wwwroot/zmCms/my-cms/templates/
  21. SiteService findTemplatePath - 检查路径: /www/wwwroot/zmCms/templates/workspaceguidesetup.com/, 是否存在: 否
  22. SiteService findTemplatePath - 检查路径: /www/wwwroot/zmCms/templates/news_qkd_0021/, 是否存在: 是
  23. SiteService findTemplatePath - 找到目录: /www/wwwroot/zmCms/templates/news_qkd_0021/, 相对路径: ../templates/news_qkd_0021/
  24. SiteService findTemplatePath - 数据库配置模板标识: news_qkd_0021, 实际使用目录: news_qkd_0021, 是否匹配: 是
  25. [CacheHelper] 写入缓存: viewpath:workspaceguidesetup.com, 结果: 成功
  26. SiteService findTemplatePath - 已缓存视图路径,域名: workspaceguidesetup.com, 路径: ../templates/news_qkd_0021/
  27. 智能模板查找 - 域名: workspaceguidesetup.com, 模板UID: news_qkd_0021, 路径: ../templates/news_qkd_0021/
  28. 最终设置模板路径: ../templates/news_qkd_0021/
  29. CustomThink驱动初始化完成,已替换为CustomTemplate
  30. 开始分配模板变量 - 站点ID: 1961, 模板: news_qkd_0021
  31. 站点拓展字段数量: 29
  32. currentPath: news/56519/zsa-moonlander-lets-the-keyboard-halves-follow-the-workspace
  33. 菜单数量: 6
  34. 模板变量分配完成
  35. 页面标识pageUid: detail
  36. 页面配置查询结果: 找到页面
  37. 获取到分类/标签列表数量: 5
  38. 页面配置: show_cat=1, show_models=1
  39. [模块] Associated News - 数量: 0, 配置显示数量: 8
  40. 模块数量: 1
  41. [模块-拆分后] Associated News - 数量: 0
  42. handleSiteMeta - 开始
  43. handleSiteMeta - 完成,已设置 SEO + hero
  44. [loadAdsConfig] ad_enable=0, google_client=, google_analytics=, clarity_project_id=null, AD_JS长度=0
  45. News控制器 name=, id=56519
  46. 当前站点ID: 1961, 站点类型: 0,name:,orgType:news,id:56519
  47. 111111111111111111orgType:news
  48. [SiteNewsService] 缓存新闻详情,缓存键: site:news:workspaceguidesetup.com:detail_56519
  49. [CacheHelper] 写入缓存: site:news:workspaceguidesetup.com:detail_56519, 结果: 成功
  50. 从SiteNewsService::getNewsDetail获取到新闻记录,站点ID: 1961, ID: 56519
  51. recordBrowseHistory 被调用, siteId: 1961, itemId: 56519, type: -1
  52. 会员信息无效或未登录,不记录浏览历史
  53. [Detail] play_url 值: 'https://workspaceguidesetup.com/play/56519/zsa-moonlander-lets-the-keyboard-halves-follow-the-workspace', title: 'ZSA Moonlander Lets the Keyboard Halves Follow the Workspace'
  54. source_url:
  55. 不存在时分配空值
  56. [SiteNewsService] 缓存关联新闻,缓存键: site:news:workspaceguidesetup.com:link_18559
  57. [CacheHelper] 写入缓存: site:news:workspaceguidesetup.com:link_18559, 结果: 成功
  58. BaseController fetch开始 - 模板: detail.html, 请求模板路径: 未设置
  59. SiteService findTemplatePath - 应用根目录: /www/wwwroot/zmCms/my-cms/
  60. SiteService findTemplatePath - 检查的目录列表: workspaceguidesetup.com, news_qkd_0021, default, game_default
  61. SiteService findTemplatePath - 可能的基路径: /www/wwwroot/zmCms/templates/, /www/wwwroot/zmCms/my-cms/templates/
  62. SiteService findTemplatePath - 检查路径: /www/wwwroot/zmCms/templates/workspaceguidesetup.com/, 是否存在: 否
  63. SiteService findTemplatePath - 检查路径: /www/wwwroot/zmCms/templates/news_qkd_0021/, 是否存在: 是
  64. SiteService findTemplatePath - 找到目录: /www/wwwroot/zmCms/templates/news_qkd_0021/, 相对路径: ../templates/news_qkd_0021/
  65. SiteService findTemplatePath - 数据库配置模板标识: news_qkd_0021, 实际使用目录: news_qkd_0021, 是否匹配: 是
  66. [CacheHelper] 写入缓存: viewpath:workspaceguidesetup.com, 结果: 成功
  67. SiteService findTemplatePath - 已缓存视图路径,域名: workspaceguidesetup.com, 路径: ../templates/news_qkd_0021/
  68. BaseController fetch - 计算模板路径: ../templates/news_qkd_0021/, 模板UID: news_qkd_0021
  69. BaseController fetch - 完整模板文件路径: /www/wwwroot/zmCms/my-cms/../templates/news_qkd_0021/detail.html , 文件存在: 是
  1. CONNECT:[ UseTime:0.000323s ] mysql:host=localhost;port=3306;dbname=cms;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `cms_site_category` [ RunTime:0.001020s ]
  3. SELECT `seo_title`,`seo_keywords`,`seo_description`,`page_hero`,`page_hero_bg` FROM `cms_site_category` WHERE `name` = 'detail' AND `site_id` = '1961' LIMIT 1 [ RunTime:0.000263s ]
  4. SHOW FULL COLUMNS FROM `cms_site_news` [ RunTime:0.000772s ]
  5. SELECT `sa`.`id`,`sa`.`sort`,`sa`.`create_time`,`sa`.`site_id`,a.id as news_id,`a`.`title`,`a`.`summary`,`a`.`seo_title`,`a`.`seo_keywords`,`a`.`seo_description`,`a`.`thumb_big`,`a`.`thumb_middle`,`a`.`thumb_small`,`a`.`author`,`a`.`click_count`,`a`.`share_count`,`a`.`view_count`,`a`.`publish_time`,`a`.`update_time`,`a`.`cat_id`,`c`.`cat_name`,`ad`.`content` FROM `cms_site_news` `sa` INNER JOIN `cms_news` `a` ON `sa`.`news_id`=`a`.`id` LEFT JOIN `cms_categories` `c` ON `a`.`cat_id`=`c`.`id` LEFT JOIN `cms_news_detail` `ad` ON `a`.`id`=`ad`.`news_id` WHERE `sa`.`status` = '1' AND `a`.`status` = '1' AND `sa`.`site_id` = '1961' AND `a`.`id` = '56519' LIMIT 1 [ RunTime:0.000970s ]
  6. SHOW FULL COLUMNS FROM `cms_site_module` [ RunTime:0.000824s ]
  7. SELECT `sa`.`id`,`sa`.`sort`,`sa`.`create_time`,`sa`.`site_id`,a.id as news_id,`a`.`title`,`a`.`summary`,`a`.`seo_title`,`a`.`seo_keywords`,`a`.`seo_description`,`a`.`thumb_big`,`a`.`thumb_middle`,`a`.`thumb_small`,`a`.`author`,`a`.`click_count`,`a`.`share_count`,`a`.`view_count`,`a`.`publish_time`,`a`.`update_time`,`a`.`cat_id`,`c`.`cat_name` FROM `cms_site_news` `sa` INNER JOIN `cms_news` `a` ON `sa`.`news_id`=`a`.`id` LEFT JOIN `cms_categories` `c` ON `a`.`cat_id`=`c`.`id` WHERE `a`.`cat_id` = '2902' AND `sa`.`site_id` = '1961' AND `sa`.`status` = '1' AND `a`.`status` = '1' AND `sa`.`id` <> '18559' ORDER BY `a`.`create_time` DESC LIMIT 8 [ RunTime:0.000457s ]
0.052666s