in2code/osm

OSM - TYPO3 的 OpenStreetMap 扩展

安装数: 2,910

依赖项: 0

建议者: 0

安全性: 0

星标: 6

关注者: 5

分支: 1

开放问题: 5

类型:typo3-cms-extension

4.0.3 2024-08-23 07:52 UTC

This package is auto-updated.

Last update: 2024-08-23 07:54:47 UTC


README

简介

一个小型但现代的 OpenStreetMap 扩展,适用于 TYPO3 (11 及以上版本)。您可以简单地显示带有或没有标记的地图。可以添加一个或多个地址,可以是可读的地址或带有地理坐标。

第二个插件允许您显示来自 tt_address 记录的地址(当 tt_address.latitude 和 .longitude 被填充时)。

无 jQuery,仅使用原生 JS。使用现代资源收集器用于包含 JS 或 CSS。可以使用 PSR-14 事件调度器来操作标记和标签。

⚠️ TYPO3 13 兼容性
有关如何获取 TYPO3 12 版本的更多信息,请参阅 EAP 页面(德语)EAP 页面(英语)

插件 1

screenshot_pi1_frontend.png

screenshot_pi1_backend.png

插件 2

screenshot_pi1_frontend.png

screenshot_pi2_backend.png

注意 确保字段 tt_address.namett_address.descriptiontt_address.latitudett_address.longitude 已正确填写

安装

通过 composer 添加此扩展(在经典模式下,TYPO3 可能可以工作,但不受支持)

composer require in2code/osm

别忘了将类型数 1597149189 添加到您的站点配置中的 AJAX 请求标记,如下所示

...
routeEnhancers:
  PageTypeSuffix:
    type: PageType
    default: /
    suffix: /
    index: ''
    map:
      /: 0
      .html: 0
      'feed.xml': 9818
      'markers.json': 1597149189
...

常见问题解答

如何覆盖路径?

始终通过 TypoScript 设置 - 如下所示

plugin.tx_osm {
    view {
        templateRootPaths {
            0 = EXT:osm/Resources/Private/Templates/
            1 = EXT:yoursitepackage/Resources/Private/Templates/Extensions/Osm/
        }
        layoutRootPaths {
            0 = EXT:osm/Resources/Private/Layouts/
            1 = EXT:yoursitepackage/Resources/Private/Layouts/Extensions/Osm/
        }
    }
}

如何定义自己的 CSS 或 JS?

CSS 和 JS 通过布局 HTML 模板包含。您可以根据需要简单调整路径。

在 Pi2 中过滤地址到某些页面

如果您不想在编辑器的 FlexForm 选择中展示所有可用的 tt_address 记录,您可以通过 Page TSconfig 过滤到一或多个页面,如下所示

tx_osm {
  flexform {
    pi2 {
      addressPageIdentifiers = 2,3,4
    }
  }
}

操作标记

您可以通过 PSR-14 事件调度器按描述操作标记。

在您的站点包中的配置/Services.yaml

services:
  Vendor\YourSitepackage\EventListener\OsmManipulator:
    tags:
      - name: event.listener
        identifier: 'osm-marker-manipulation'
        event: In2code\Osm\Domain\Model\MarkerContainer

示例调度器

<?php
declare(strict_types=1);
namespace Vendor\YourSitepackage\EventListener;

use In2code\Osm\Domain\Model\Marker;
use In2code\Osm\Domain\Model\MarkerContainer;

/**
 * Class OsmManipulator as an example
 */
class OsmManipulator
{
    /**
     * @param MarkerContainer $markerContainer
     * @return void
     */
    public function __invoke(MarkerContainer $markerContainer): void
    {
        /** @var Marker $marker */
        foreach ($markerContainer->getMarkers() as $marker) {
            $marker->setMarker(1);
            $marker->setTitle('new title');
            $marker->setDescription('new description');
            $marker->setLatitude(10.00000);
            $marker->setLongitude(10.00000);
            $marker->setIcon('/typo3conf/ext/yoursitepackage/Resources/Public/Icons/Marker.png');
            $marker->setIconHeight(28);
            $marker->setIconWidth(28);
            $marker->setIconOffsetX(1);
            $marker->setIconOffsetY(-10);
        }
    }
}

变更日志