yellowpages2 builds a small industry directory for your TYPO3 website. It ships a list view and a configurable
detail view, an A-Z glossary above the list to jump directly to entries starting with a given letter, and an
optional frontend form so visitors can submit their own company entries for review.
Configure yellowpages2 in the backend module Admin Tools > Settings > Extension Configuration.
poiCollectionPid
poiCollectionPid
Type
integer
Default
0
Only relevant if EXT:maps2 is installed. While creating a company record on the frontend, the
address is geocoded and a maps2 record is created for it automatically. Define the storage page
ID for these records here.
editLink
editLink
Type
string
Default
(empty)
yellowpages2 ships a console command that hides company records older than 13 months and
informs their owners 12 months after creation, asking them to renew the entry. The reminder
email links back to this page ID, which should have the plugin configured for editing.
emailFromAddress
emailFromAddress
Type
string
Default
(empty, falls back to the install-wide default from address)
Sender address used for all notification emails triggered when a visitor creates or updates a
company record on the frontend.
emailFromName
emailFromName
Type
string
Default
(empty, falls back to the install-wide default from name)
Sender name used for the notification emails described above.
emailToAddress
emailToAddress
Type
string
Required
true
Default
(empty)
Recipient address for the administrator notification sent whenever a visitor creates or updates
a company record on the frontend. This is also the address that receives the moderation link to
edit or activate the record. Unlike emailFromAddress, there is no fallback: leaving this empty
causes sending to fail once a company is created or updated on the frontend.
emailToName
emailToName
Type
string
Default
(empty)
Recipient name for the administrator notification described above.
yellowpages2 ships its configuration as the Site Set jweiland/yellowpages2. Add it to the
dependencies list of your site configuration (config/sites/<your-site-identifier>/config.yaml),
then override any of the following settings for your site in
config/sites/<your-site-identifier>/settings.yaml:
yellowpages2 uses TYPO3 Core's SimplePagination to navigate through records with first,
previous, next, and last buttons. If you need something more complex, like
1, 2 ... 56, 57, 58 ... 123, 124, use another pagination library or build your own. The following
steps show how to plug in Georg Ringer's numbered_pagination extension instead.
Install numbered_pagination
Install and activate numbered_pagination extension from Georg
Ringer. Please check in your SitePackage extension that
numbered_pagination is set as a dependency and will be loaded
before yellowpages2 and your SitePackage.
If you update EXT:yellowpages2 to a newer version, please read this section carefully!
Upgrade to version 9.0.0
This version closes a security issue and changes how company logo and image uploads are handled.
The activate action, used by the link in the administrator notification email to publish a
company record straight away, previously had no authorization check at all. Anyone who knew or
guessed a company's UID could activate it. activate, edit, and update now require a signed
moderationToken request argument in addition to (or, for activate, instead of) the existing
frontend user check. If you have overridden Templates/Map/Create.html or
Templates/Map/Update.html in your own site package, add moderationToken to the arguments of
both f:link.action calls, otherwise the links in the email no longer work:
<f:link.actionaction="edit"controller="Company"absolute="1"arguments="{company: company, moderationToken: moderationToken}">
Edit record
</f:link.action>
Copied!
Company logo and image uploads have been migrated to Extbase's native #[FileUpload] API
(TYPO3 >= 13.3), replacing the extension's own UploadMultipleFilesConverter property mapper and
AssignMediaTypeConverterEventListener, both of which have been removed. If you have overridden
Partials/Company/Fields/Logo.html or Images.html, replace the old per-index upload fields
(logo.0, images.0 through images.4) with the native multi-file pattern:
DomainModelCompany::getOriginalLogo(), getOriginalImages(), getOriginalMainTrade(), and
getOriginalTrades() have been removed. Their former callers should use getLogo(),
getImages(), getMainTrade(), and getTrades() instead, which now return the underlying
ObjectStorage directly rather than a plain array. Code iterating these values in Fluid keeps
working unchanged; PHP code expecting a plain array must call ->toArray() itself.
The classic static template registration under Configuration/TypoScript/ has been removed in
favor of the jweiland/yellowpages2 Site Set. If your site still relies on the classic "Include
static (from extensions)" template mechanism instead of Site Sets, add the
jweiland/yellowpages2 Site Set to your site's dependencies in config.yaml, see
Site Set settings.
Upgrade to version 7.0.0
This version is focused on upgrading the compatibility version to TYPO3 version
12 LTS. We moved some extension functionalities from PSR-14 Event Listeners to
Middlewares as the request setArgument not possible anymore with TYPO3 version
12.
Upgrade to version 6.1.0
If you make use of the ModifyQueryToFindCompanyByLetterEvent or
ModifyQueryToSearchForCompaniesEvent event:
We have changed the strict type of TYPO3 QueryBuilder to Extbase
QueryResult. Yes, this is a breaking change, but it seems that no one
makes use of it. Please adapt your code to use QueryResult. You can retrieve
the Extbase query with method getQuery().
Upgrade to version 6.0.0
As TYPO3 has deprecated the ObjectManager, we have changed many properties in our
scheduler task Update yellowpages. Please remove that scheduler task completely
and create a new one of type Inform users to update their company record.
We have changed a lot of classes. Please click the Flush Cache button in the Install Tool
to rebuild the Dependency Injection cache.
If you have maps2 version 9 installed you have to override or change following
part in Properties.html from:
We have moved a lot of code of yellowpages2 controllers to EventListeners. Please flush the cache
in the maintenance module.
As a developer, you should check whether you have overwritten some methods of MapController or
CompanyController and adapt them to the new structure.
Upgrade to version 4.0.0
We have removed column wsp_member as this column was specific to one of our customers. If you have
used it, you have to add it back with the help of EXT:extender.
We have removed column icon from table sys_category. This also removed fallbackIconPath. If you
have used it, you have to add it back with the help of EXT:extender.
We are using the API of glossary2 now. Please check whether your own queries are still working.
[SECURITY] Require a signed moderation token for the "activate" action to prevent unauthenticated activation of arbitrary companies
[BUGFIX] Keep company record hidden until the POI position is confirmed on the map
[BUGFIX] Fix broken uniqueness check in Yellowpages2SlugUpdate (Doctrine DBAL Result misuse)
[BUGFIX] Fix storagePid Site Set setting type (string instead of page)
[BREAKING] Migrate company logo/images upload to the native Extbase FileUpload API, remove UploadMultipleFilesConverter and AssignMediaTypeConverterEventListener
[BREAKING] Consolidate Company::getOriginalLogo()/getOriginalImages()/getOriginalMainTrade()/getOriginalTrades() into getLogo()/getImages()/getMainTrade()/getTrades(), now returning ObjectStorage instead of array
[BREAKING] Remove legacy Configuration/TypoScript static template registration in favor of the Yellowpages2 Site Set
Version 8.1.3
[BUGFIX] Fix broken hidden object registration in HiddenObjectHelper
[BUGFIX] Use type page for PID site settings
[BUGFIX] Load maps2 before yellowpages2 if present
[BUGFIX] Remove now auto-created system TCA columns and ext_tables.sql
[BUGFIX] Remove dead code in ext_localconf.php and Services.php
[TASK] Use AsEventListener attribute instead of Services.yaml tags
[TASK] Make Events, EventListeners and Hook final and readonly
[TASK] Exclude Domain Models from DI autoconfiguration
Version 8.1.2
[TASK] Add RestrictAccessEventListener to check update actions against unauthorised edits by non-owner fe_users
Version 8.1.1
[BUGFIX] Replace hardcoded tab labels with localized labels in tt_content
Version 8.1.0
[TASK] Remove POI creation logic from MapController
[TASK] Delegate POI creation to LocationService in CompanyController
[TASK] Refactor: Extract POI creation to LocationService
[TASK] Centralize extension key usage via ExtConf::EXT_KEY
[TASK] Add localized labels for invalid address errors
[TASK] Refactor ExtConf to modern immutable DI with factory method
[TASK] Refactor MailHelper to use MailerInterface and fresh MailMessage
[BUGFIX] Add maps2 partials to Yellowpages2 view paths
[BUGFIX] Check for Company UID before path segment update
[BUGFIX] Ensure company is hidden if POI mapping fails in newAction
Version 8.0.4
[TASK] Updated wizard title with [extension] name format
Version 8.0.3
[BUGFIX] Remove deprecated usage of SoftRef parser: images
Version 8.0.2
[BUGFIX] Fixed Property Mapper with CheckFal validation issues
Version 8.0.1
[BUGFIX] TCA migration fixes
Version 8.0.0
Compatibility fixes for TYPO3 CMS 13.
TASK: Migrate all scheduler tasks to TYPO3 CLI Symfony Commands.
TASK: Migrate all list type general plugins to TYPO3 CType.
TASK: Created migration script for list_type to new CType.
Deprecated methods replaced.
Removed support for TYPO3 12 LTS
Version 7.0.2
Removed Dialogue.js (jquery ui dependent) and it's inclusion from TypoScript
TASK: Remove DeleteUploadedFilesEventListener as invalid images already
will not be assigned to company in TypeConverter.
Version 7.0.1
BUGFIX: Category parent property lazy loading with LazyLoadingProxy type
Version 7.0.0
Compatibility fixes for TYPO3 12 LTS
New Middleware implementations related to company create form
New Test cases for testing Middleware
Removed hard dependency with extension maps2
Testing Framework migrated to TYPO3 Testing Framework
Deprecated methods replaced
Removed support for TYPO3 11 LTS
BUGFIX: Fix Issue with Search Filter not repects district filter
Version 6.1.4
BUGFIX: Fix for taking care of district FlexForm configuration
Version 6.1.3
TASK: Add .crowdin.yml to .gitattributes
Version 6.1.2
BUGFIX: Add tablemapping for FeUser object
Version 6.1.1
Order list of categories by their title in search partial
Repair fetchRelated method to also fetch company records by trades
Prevent cartesian product in fetchRelated method of CategoryRepository
Version 6.1.0
Migrate repo back to Extbase Query
Simplify implementation of own Pagination with TypoScript
Version 6.0.0
Add TYPO3 11 compatibility
Replace controller constructors with inject methods
Add and update tests for TYPO3 11
Update structure of documentation
Migrate makeCategorizeable to TCA directly
Add defaults in TCA and ext_tables.sql
Version 5.1.1
Add TS settings for GlossaryService
Version 5.1.0
Use inject methods in controllers
Update dependency for glossary2 to 5.0.0
Version 5.0.2
User should not get admin mail to activate entry on its own.
Version 5.0.1
Move redirects to MapController back to CompanyController
Version 5.0.0
Remove TYPO3 9 compatibility
Add TYPO3 10 compatibility
Replace f:widget.paginate with our own paginator
Restructure controllers. Move recurring code into EventListeners
Move SlugHelper from constructor argument into getSlugHelper()
Version 4.0.26
Remove empty trades from request before ProperyMapping
Version 4.0.23
Add activate action to non-cachable actions
Version 4.0.22
Use a counter in URL for duplicate companies in Slug UpdateWizard
Version 4.0.21
Update translation
Version 4.0.20
Remove title from SVG icons
Version 4.0.19
Use errorAction to redirect to previous action on Geocoding error
Version 4.0.18
Repair new action, if POI could not be created
Add Error FlashMessage, why POI could not be created
Version 4.0.17
Use correct logo/image TypeConverter of yellowpages2
Version 4.0.16
Remove GROUP BY from query, as it is not compatible with pageBrowser
Version 4.0.15
Replace Google+ column with Instagram
Version 4.0.14
Remove injection of ExtConf of maps2 in MapController
Version 4.0.13
Add getter to get first main trade
Version 4.0.12
Better structure of getGlossar()
Use SchemaManager to build column names in Repo
Add String validator to listAction()
Version 4.0.11
Wrap Fluid Templates with html namespace
Return one logo when using getLogo
Differ between image sizes for list and show view
Version 4.0.10
Add Services.yaml for TYPO3 10 compatibility
Version 4.0.9
Remove useless @param from getMaps2Uid
Version 4.0.8
Allow max one Image for Logo
Version 4.0.7
Set slug field separator to -
Version 4.0.6
Add uid to generated slugs in UpgradeWizard
Version 4.0.5
Add path_segment for human readable URLs to company records
Add Slug UpgradeWizard
Version 4.0.4
Add settings to CompanyRepository SignalSlots
Version 4.0.3
Set default sorting to company for QueryBuilder based statements
Version 4.0.2
Change return value of mainTrade to nullable Category