acdh-oeaw / aksearch-ext
VuFind/AkSearch 的一个示例扩展模块
2.4.8
2024-03-18 09:53 UTC
Requires
- php: >=7
- dev-master
- 2.4.8
- 2.4.7
- 2.4.6
- 2.4.5
- 2.4.4
- 2.4.3
- 2.4.2
- 2.4.1
- 2.4
- 2.3.5
- 2.3.4
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3
- 2.2.9
- 2.2.8
- 2.2.7
- 2.2.6
- 2.2.5
- 2.2.4
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.9
- 2.1.8
- 2.1.7
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.11.4
- 1.11.3
- 1.11.2
- 1.11.1
- 1.11.0
- 1.10.1
- 1.10.0
- 1.9.1
- 1.9.0
- 1.8.0
- 1.7.0
- 1.6.5
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.9
- 1.5.8
- 1.5.7
- 1.5.6
- 1.5.5
- 1.5.4
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.1
- 1.3.0
- 1.2.2
- 1.2.1
- 1.2.0
- v1.1.0
- 1.0.0
- 0.2.0
- 0.1.0
This package is auto-updated.
Last update: 2024-09-18 10:49:10 UTC
README
为ACDH部署的AkSearch的VuFind/AkSearch扩展。
也可以作为使用Composer加载自己的模块来扩展VuFind的示例(见下文说明)。
此模块添加了哪些内容
- SolrMarc类的调整版本(
aksearchExt\SolrMarc
) - ILS驱动类(
aksearchExt\Alma
)的调整版本 - 额外的记录视图标签(
aksearchExt\RecordTab\Exemplarspezifika
) VuFindSearch\Backend\Solr\LuceneSyntaxHelper
类的调整版本,解决带有斜杠的搜索问题。- 由于无法通过新代码轻松覆盖,它被复制到
{FuVindDir}/module/VuFindSearch/src/VuFindSearch/Backend/Solr/LuceneSyntaxHelper.php
,由Dockerfile创建部署Docker镜像(这确实很丑,但避免了覆盖整个VuFind/AkSearch Solr搜索后端类堆栈)。
- 由于无法通过新代码轻松覆盖,它被复制到
特定功能的详细描述包含在docs
文件夹中。
它是如何工作的?
备注 - 下面的说明适用于当前基于VuFind 6的AkSearch。一些东西将在Vufind >= 7时发生变化,它已从Zend2迁移到Laminas。
使代码可由Zend2加载
VuFind/AkSearch使用Zend2框架编写,扩展/调整它们涉及到实现你自己的Zend2模块(s)。
要使你的代码被Zend2识别并正确加载,你必须
- 选择你的模块名称(这里为
aksearchExt
)。 - 实现一个
{my module name}\Module
类,实现getAutoloaderConfig()
和getConfig()
方法。getAutoloaderConfig()
应仅返回一个空数组(因为Composer将为我们处理自动加载,我们不需要Zend2为此)。getConfig()
类应返回一个Zend2/VuFind模块配置(一个空的一个是初学者的完美选择)。aksearchExt
模块的最小实现(使其可由Zend2加载,但仅限于此)如下所示class aksearchExt\Module { public function getAutoloaderConfig() { return []; } public function getConfig() { return []; } }
- 为你的模块创建一个
composer.json
,这样你就可以将其作为composer包发布。不要忘记正确定义自动加载。如果你需要一个示例,只需查看此存储库根目录中的composer.json
(它将此模块作为acdh-oeaw/aksearch-ext
composer包发布)。 - 将你的代码作为composer包发布(将其放入公开可访问的git仓库,然后在https://packagist.org.cn/上发布)。
设置VuFind/AkSearch以实际加载你的代码
这是通过调整AkSearchWeb仓库内容来完成的。
- 如果你还没有这样做,请克隆该仓库。
- 通过在仓库的根目录中运行
composer require your-organization/your-composer-package-name
或将你的包名称添加到composer.json
中的require
部分,将你的composer包添加到composer依赖项列表中。 - 将你的Zend2模块名称包含在VuFind/AkSearch加载的模块列表中。
- 将你的模块名称(命名空间)追加到在仓库根目录的
Dockerfile
最后一行定义的VUFIND_LOCAL_MODULES
环境变量末尾。 - 请将模块的名称(命名空间)添加到仓库根目录下
docker-compose.yaml
文件中的环境变量VUFIND_LOCAL_MODULES
的末尾(这样仅使用docker-compose up
进行部署的人也会有它)。
- 将你的模块名称(命名空间)追加到在仓库根目录的
- 尝试在仓库根目录下运行
docker build -t acdhch/aksearch-web .
来本地构建镜像,然后尝试使用docker-composer up
进行部署。最后,通过在浏览器中打开http://127.0.0.1/vufind来检查一切是否正常工作。 - 如果一切正常,提交更改并将仓库推送到GitHub。
恭喜!现在您的模块已与AkSearchWeb一同部署,它将根据VUFIND_LOCAL_MODULES
运行时环境变量的值(确切地说,如果其名称包含在环境变量值中)被使用(或不会被使用)。
覆盖实际的VuFind/AkSearch代码
最棘手的部分是找到放置您自己的调整的正确位置。
好事是这一切都是通过调整您模块的Module::getConfig()
方法返回的内容来完成的(以下表示为$cfg
)。
困难的部分是您可以将代码插入数百个地方。例如,查看VuFind的主模块配置中提供的所有类映射或由AkSearch的AkSearch模块配置定义的覆盖。请注意,尽管提供了类别名,您可能还需要为您的类定义工厂和/或委托者 - 请参阅上述示例以及此存储库中的src/aksearchExt/Module.php
文件。
实时开发
为了能够实时测试您的模块
- 按照上述如何工作?部分所述将其包含到AkSearchWeb部署中。
- 使用以下命令运行aksearch-web容器
- 您的模块代码挂载在
/usr/local/vufind/vendor/{你的组织}/{你的composer包名}
下。 APPLICATION_ENV
设置为development
(这将关闭Zend2类映射缓存,并为您节省很多麻烦)。
- 您的模块代码挂载在