ThinkPHP UI Restoration v0.1.0 Generate and restore ThinkPHP UI components using this project's existing conventions. Use when the user asks to create or restore `.tpl` components, adapt s...
openclaw skills install thinkphp-ui-restorationThinkPHP UI Restoration
Use When
The user wants a new ThinkPHP .tpl component or page section.
The user provides a screenshot, DOM, or reference UI to restore in this project.
The task also needs matching CSS, mock data, or controller View::assign structure.
Rules
Reuse existing project structure first: view/@components, view/@pages, public/__base/css/common.css, and current class naming patterns.
Follow ThinkPHP template syntax and safe field access, such as {$e.xxx|default=''} and isset(...) checks, to avoid undefined index errors.
When adding a component, also add the required CSS, mock fields, and controller/template wiring so it can render directly.
Prefer updating existing xqbj- components over creating a new pattern when the UI is only a variation of an existing block.
Put shared styles in public/__base/css/common.css; only use page-level CSS when the style is truly page-specific.
If the component depends on list data, also update the matching mock data in app/BaseController.php or the relevant controller.
Workflow
Inspect nearby components and styles before creating new structure.
Decide whether to reuse, extend, or add a new component.
Implement the .tpl first, then matching CSS, then any mock/controller data needed.
Keep output visually consistent with the existing project, including spacing, truncation, image handling, and mobile behavior.
Project Conventions
Components usually live in view/@components/ and are included from page templates.
Page templates usually live in view/@pages/.
Shared UI styles usually belong in public/__base/css/common.css.
Mock lists and fallback fields are commonly assigned from app/BaseController.php.
Use existing class prefixes such as xqbj-component-, xqbj-list-, and page-level wrappers already present nearby.
Delivery Checklist
.tpl structure matches nearby component style.
CSS is added in the correct file and follows existing naming.
Missing fields are guarded with default or conditional rendering.
Long text has truncation rules when needed.
Mobile layout is considered if the block appears in responsive pages.
Required mock data or controller View::assign data is updated.
Output Standard
Prefer minimal edits over introducing new abstractions.
Keep naming consistent with existing xqbj- / page-level patterns.
If a field may be absent, provide a default or conditional render path.
When restoring from a screenshot, match the existing project style rather than inventing a new design system.
Version tags latestvk973y18yjpakqyx7sa37w7p3hn84e962 thinkphpvk973y18yjpakqyx7sa37w7p3hn84e962 uivk973y18yjpakqyx7sa37w7p3hn84e962