helsingborg-stad/municipio

用于创建市政府网站的Bootstrap主题。

安装次数: 20,794

依赖项: 3

建议者: 0

安全性: 0

星标: 36

关注者: 16

分支: 11

开放性问题: 18

类型:wordpress-theme

5.25.3 2024-09-24 05:52 UTC

This package is auto-updated.

Last update: 2024-09-24 05:53:46 UTC


README

下载主题。

要下载一个无需编译或获取依赖项即可立即工作的完整插件,请访问此处,并从最新版本下载full-release.zip

入门

建议您通过我们的构建管理存储库安装municipio捆绑版本。您可以在以下位置找到它。

要开始,您需要安装所需的npm和composer软件包。要安装这些组件,您需要在您的系统上安装Node.js和Composer。

$ cd [THEME-DIR]
$ php build.php

依赖项

Municipio需要ACF PRO

编码标准

对于PHP,使用PSR-2和PSR-4。

Gulp

您可以使用Gulp编译、连接和压缩SASS和JavaScript。SASS的编译还将自动添加所需的供应商前缀。

要从主题目录中编译js和sass并启动“监视”任务,请运行以下命令

$ gulp

我们添加了对webpack的支持

Webpack比gulp快一些。如果您想使用webpack而不是gulp,只需运行以下命令

$ npm run watch

或者只为单个构建

$ npm run build

NPM脚本

  • watch:在监视模式下运行webpack。用于处理客户端代码(如scss、js、ts等)时使用。
  • build:dev:使用开发标志构建资产。
  • build:为生产构建资产。
  • i18n:update:从源文件更新languages/municipio.pot和languages/sv_SE.po。当可翻译的字符串已添加/更新时运行此操作。需要wp-cli
  • i18n:build:更新languages/municipio.mo .po文件。当对相应的.po文件进行更改时运行此操作。需要wp-cli

Composer

您可以使用以下方式安装composer依赖项。

$ composer install

Composer脚本

composer run test # Run phpunit tests
composer run test:coverage # Run phpunit tests with code coverage
composer run lint # Run phpcs
composer run lint:changed # Run phpcs on changed files (Compares to main branch).
composer run fix # Run phpcbf to apply fixes to code.
composer run fix:changed # Run phpcbf to apply fixes to changed files (Compares to main branch).

常量

块作者页面

默认情况下,作者页面被阻止。要“取消阻止”,请将以下常量添加到wp-config(或其他合适的位置)。

define('MUNICIPIO_BLOCK_AUTHOR_PAGES', false);

从不同主机加载样式指南

用于设置样式指南基本URI的常量。对于第三方站点很有用。

define('MUNICIPIO_STYLEGUIDE_URI', '//example.com/style/guide');

加载特定版本的样式指南

锁定样式指南版本的常量。当您想确保网站的最大稳定性时非常有用。

define('STYLEGUIDE_VERSION', 1.0.32);

加载特定开发版本的样式指南

加载样式指南本地版本的常量。

define('DEV_MODE', true);

BEMIT风格的CSS类名用于主题名称

包含当前主题名称的常量,格式为BEM。当您想直接将组件样式连接到主题时可以使用。您不能更改此。

MUNICIPIO_BEM_THEME_NAME

动作

Municipio/blog/post_info

博客帖子信息标题(单个)

  • @param object $post - 帖子对象
do_action('Municipio/author_display/name', $post);

Municipio/share_post/recipients

在通过电子邮件分享帖子时执行操作,例如发送通知

  • @param object $user - 发送者的用户对象
  • @param array $recipients - 电子邮件地址列表
do_action('Municipio/share_post/recipients', $user, $recipients);

Municipio/comment/save_like

在评论点赞时执行操作

  • @param object $comment - 评论对象
  • @param int $userId - 当前用户ID
  • @param bool $create - 如果创建新的点赞则为真。如果删除则为假
do_action('Municipio/comment/save_like', $comment, $userId, $create);

过滤器

Municipio/Template/viewData

  • @param array $viewData - 传递给过滤器的视图数据。
apply_filters('Municipio/Template/viewData', $viewData);

修改器

  • @param array $viewData - 传递给过滤器的视图数据。
  • @param string $postType - 文章类型别名。
  • @param string $template - 归档模板名称。
apply_filters('Municipio/Template/single/viewData', $viewData, $postType);
apply_filters('Municipio/Template/archive/viewData', $viewData, $postType, $template);
apply_filters("Municipio/Template/{$postType}/viewData", $viewData);
apply_filters("Municipio/Template/{$postType}/single/viewData", $viewData);
apply_filters("Municipio/Template/{$postType}/archive/viewData", $viewData, $template);

已弃用

  • Municipio/controller/base/view_data
  • Municipio/blade/data
  • Municipio/Controller/Archive/Data
  • Municipio/viewData

Municipio/theme/key

过滤主题/样式指南资产密钥。

  • @param string $key - 样式指南主题的密钥
apply_filters('Municipio/theme/key', $key);

Municipio/author_display/name

设置作者显示名称

  • @param string $name - 默认名称
  • @param string $userId - 用户的ID
apply_filters('Municipio/author_display/name', $name, $userId);

Municipio/author_display/title

设置作者名称显示的标题标签

  • @param string $title - 默认标题
apply_filters('Municipio/author_display/title', $title);

Municipio/ajax_url_in_head

  • @param string $ajax_url - 默认ajax url
apply_filters('Municipio/ajax_url_in_head', $ajax_url);

Municipio/favicon_sizes

为favicon添加大小到主题选项中

  • @param array $sizes - 默认favicon大小
apply_filters('Municipio/favicon_sizes', $sizes);

Municipio/favicon_tag

为favicon添加大小到主题选项中

  • @param string $tag - HTML 标签
  • @param array $icon - 图标数据
apply_filters('Municipio/favicon_tag', $tag, $icon);

Municipio/header_grid_size

应用于头部大小的类字符串。

  • @param string $classes -
apply_filters('Municipio/header_grid_size', $classes);

Municipio/mobile_menu_breakpoint

应用于移动汉堡菜单断点的类字符串。

  • @param string $classes - 默认站点名称
apply_filters('Municipio/mobile_menu_breakpoint', $classes);

Municipio/logotype_text

应用于主题选项中未上传logotype图像时显示的文本。

  • @param string $title - 默认站点名称
apply_filters('Municipio/logotype_text', $title);

Municipio/logotype_class

应用于logotype的类属性

  • @param array $classes - 默认类
apply_filters('Municipio/logotype_class', $classes);

Municipio/logotype_tooltip

应用于logotype的类属性

  • @param string $tooltip - 默认提示文本
apply_filters('Municipio/logotype_tooltip', $tooltip);

Municipio/blade/template_types

应用于Blade模板类型的列表。

  • @param array $types - 默认Blade模板类型
apply_filters('Municipio/blade/template_types', $types);

Municipio/search_result/…

在搜索结果内容上应用多个过滤器

  • @param string $var - 变量的内容
  • @param object $post - 文章对象
apply_filters('Municipio/search_result/date', $date, $post);
apply_filters('Municipio/search_result/title', $title, $post);
apply_filters('Municipio/search_result/excerpt', $excerpt, $post);
apply_filters('Municipio/search_result/permalink_url', $permalink_url, $post);
apply_filters('Municipio/search_result/permalink_text', $permalink_text, $post);

Municipio/search_form/…

对搜索表单应用过滤器

  • @param string $var - 变量的内容
apply_filters('Municipio/search_form/action', $url);

Municipio/archive/sort_keys

修改归档可用的排序键

  • @param array $keys - 键
  • @param string $postType - 文章类型
apply_filters('Municipio/archive/sort_keys', $keys, $postType);

Municipio/archive/date_filter

修改日期过滤器WHERE子句

  • @param string $where - SQL WHERE子句
  • @param string $from - 查询字符串中的"from"日期
  • @param string $to - 查询字符串中的"to"日期
apply_filters('Municipio/archive/date_filter', $where, $from, $to);

Municipio/Breadcrumbs

显示/隐藏(true/false)面包屑

  • @param boolean $bool- 真或假(显示或隐藏)
apply_filters('Municipio/Breadcrumbs', $bool, get_queried_object())

Municipio/Breadcrumbs/Items

过滤面包屑中的项/链接

  • @param array $items - 面包屑项
apply_filters('Municipio/Breadcrumbs/Items', $items, get_queried_object());

Municipio/admin/editor_stylesheet

更改自定义编辑器样式表

  • @param string $url - 样式表URL
apply_filters('Municipio/admin/editor_stylesheet', $url);

Municipio/oembed/should_filter_markup

决定是否应过滤oembed标记以用于HbgPrime视频播放器(youtube和vimeo)

  • @param string $url - 资源URL
  • @param int $postId - 当前文章的ID
apply_filters('Municipio/oembed/should_filter_markup', true, $url, $postId);

Municipio/Menu/Vertical/EnabledSidebars

指定当前页面应显示垂直菜单的活动侧边栏。简单的包含侧边栏ID的数组。

  • @param array $sidebars - 包含侧边栏ID的平面数组。
apply_filters('Municipio/Menu/Vertical/EnabledSidebars', $sidebars);

Municipio/archive/tax_query

附加分类查询。

  • @param array $taxQuery - 包含分类查询。
  • @param object $query - 当前查询对象。
apply_filters('Municipio/archive/tax_query', $taxQuery, $query);

Municipio/taxonomy/tag_style

为分类标签添加自定义样式。

  • @param string $style - 自定义CSS。
  • @param string $term - 术语。
  • @param string $taxonomy - 分类。
apply_filters('Municipio/taxonomy/tag_style', $style, $term, $taxonomy);

市镇/菜单/垂直/条目

应在垂直导航菜单中可见的条目。以带有悬停标签的点表示。

  • @param array $items - 表示链接的条目数组。
apply_filters('Municipio/Menu/Vertical/EnabledSidebars', array(array('title' => 'Page section title', 'link' => '#anchorlink'));

市镇/ContentType/schemaParams

修改内容类型的模式参数。此过滤器应用于与内容类型关联的模式参数数组,允许扩展或修改该内容类型的结构化数据(schema.org)属性。

  • @param array $schemaParams - 内容类型的默认模式参数。
  • @param string $contentTypeKey - 识别内容类型的键。
add_filter('Municipio/ContentType/schemaParams', function($schemaParams, $contentTypeKey) {
    if ($contentTypeKey === 'yourContentTypeKey') {
        $schemaParams['newParameter'] = [
            'schemaType' => 'Text',
            'value' => 'Custom Value'
        ];
    }

    return $schemaParams;
}, 10, 2);

市镇/Controller/SingularContentType/listing

通过附加与位置相关的列表项来修改位置内容类型的列表数组。这允许在列表显示中直接包含如街道名称或谷歌地图链接等附加信息。

  • @param array $listing - 将要修改的现有列表数组。
  • @param array $fields - 与帖子关联的字段,用于提取位置信息。
add_filter('Municipio/Controller/SingularContentType/listing', function($listing, $fields) {
    // Example modification to the listing array
    if (!empty($fields['custom_field'])) {
        $listing['custom_field'] = $fields['custom_field'];
    }

    return $listing;
}, 10, 2);

REST 路由

主题提供了以下 REST API 路由。

[GET] municipio/v1/view/render/{view}

返回 html

  • @param string $view - 要渲染的 blade 视图路径。附加到路由。
  • @param object $data - 要传递给视图的数据。

示例用法

fetch('/wp-json/municipio/v1/view/render/partials/preloader')
    .then((response) => console.log(response))

开发模式

要从本地样式指南加载资源。将 contant DEV_MODE 设置为 "true"。

define('DEV_MODE', true);

主题字体

市镇集成了 google web-fonts。它启用了智能加载字体,防止使用 Google & Adobe webfont loader 导致的不可见字体。

define('WEB_FONT', 'Roboto'); //The google fonts name (without weights)
define('WEB_FONT_REMOTE', true); //Load font kit from cdn

版本 2.0

版本 2.0 的目标是重构主题前端并朝着 BEM (IT) 标准进行标记。将自动添加更多过滤器,类似于 ACF 所做的那样。目前,这些将在以下内容中记录。

弃用功能(注意阶段)

版本 2.0 将引入有关删除某些先前功能的警告。根据计划,此功能将在版本 3.0 中实际删除。将在 3.0 中删除的函数包括。

  • Gravitiforms 优化
  • 针对评论的 Honeytrap 功能(此功能将移至单独的插件)。还将包括 Google reCAPTCHA。
  • 联系小部件(可在模块化中提供替代方案)
  • 富文本小部件(嵌入在核心中的替代方案)
  • PostType & 分类创建器(移至插件)
  • 上传过滤器(移至插件)

过滤器

弃用过滤器

  • HbgBlade/data 替换为 Municipio/viewData
  • Municipio/ajax_url_in_head 替换为 Municipio/ajaxUrl
  • 模块化/CoreTemplatesSearchPaths

Blade 视图过滤器

所有发送(创建)到控制器的变量将自动通过名为变量键的过滤器。

apply_filters('Municipio/{{KEY}}', $var);

全局视图过滤器

您可能希望获取发送到视图的所有内容的完整数组。在上述过滤器运行后,将应用全局过滤器。这取代了旧的过滤器。

apply_filters('Municipio/viewData', $var);

常量

MUNICIPIO_FRAGMENT_CACHE - 设置为 false 以删除片段缓存。

主题视图结构

bem-views
│   [Main folder for  theme views, containing WordPress templates like page.blade.php]
│
└───components
│   │   [Components for the theme like card.blade.php]
│   │
└───partials
│   │   [Big chunks that are reused in templates footer.blade.php]
│   │
└───templates
    │   [General templates that are included in main WordPress views like master.blade.php]
│   │
└───utilities
    │   [Small pieces used by components like button.blade.php]
│   │
└───widgets
    │   [Widgetized components]
    │

PHP 测试

市镇使用 PHPUnit 进行单元测试。对于模拟和存根,我们使用 WP_Mock。这意味着您可以使用 WP_Mock、Mockery(这是 WP_Mock 的包装器)和 PHPUnit_MockObject 进行模拟和存根。

PHPUnit 测试文件结构

所有测试都存储在 tests/phpunit/tests 文件夹中。文件结构应与主题的文件结构相同。文件名应与您要测试的文件相同。例如,如果您想测试文件 src/Controller/Base.php,则应创建文件 tests/phpunit/tests/Controller/Base.php。为了避免测试文件过大,您也可以创建一个与要测试的文件同名的文件夹,并将测试文件放在其中。请注意,为了根据您正在测试的类函数来分隔文件,您应命名文件,例如 Base.functionName.php

运行 PHPUnit 测试

在终端中运行 composer test

带有代码覆盖率的 PHPUnit 测试

在终端中运行 composer test:coverage。这将生成一个代码覆盖率报告,位于 tests/phpunit/.coverage 文件夹中。

图像压缩

Municipio 支持使用 shortpixel 进行图像压缩。这将延迟排队一个 cronjob 以压缩新上传的图像。只需在您的配置文件中定义 SHORTPIXEL_API_KEY 常量即可!

压缩级别将为中等/光泽,适用于高质量照片。

与 BrowserStack 的支持进行了测试

本软件已使用 Browserstack 的出色工具进行了测试。