TYPO3 7.6 - tx_news 4.2.1 - нет подробного имени в realurl?

Конфигурация realurl с tx_news прекрасно работает для меня, но у меня есть одна проблема. Мне не нужно подробно указать имя в адресе.

www.domain.org/news-list/news-detail/ test-news-name-here /

и теперь мне не нужны "новости-детали".

Здесь код PHP realurl.php

<?php


$TYPO3_CONF_VARS['FE']['addRootLineFields'].= ',tx_realurl_pathsegment';
$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAULT'] = array( 
'pagePath' => array(
    'type' => 'user',
    'userFunc' => 'EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main',
    'spaceCharacter' => '-',
    'languageGetVar' => 'L',
    'expireDays' => '3',
    'rootpage_id' => 1,
    'firstHitPathCache'=>1
),
'init' => array(
    'enableCHashCache' => TRUE,
    'enableCHashCache' => 1,
    'respectSimulateStaticURLs' => 0,
    'enableUrlDecodeCache' => 1,
    'enableUrlEncodeCache' => 1
),
'preVars' => array(
    array(
        'GETvar' => 'L',
        'valueMap' => array(
            //'de' => '0',
            //'en' => '1',
        ),
        'noMatch' => 'bypass',
    ),
    array(
        'GETvar' => 'no_cache',
        'valueMap' => array(
            'nc' => 1,
        ),
        'noMatch' => 'bypass',
    ),
),

'fileName' => array(
  'index' => array(
    'sitemap.xml' => array(
      'keyValues' => array(
        'type' => 1234,
      ),
    ),
  ),
),

'fixedPostVars' => array(
    'newsDetailConfiguration' => array(
        array(
            'GETvar' => 'tx_news_pi1[action]',
            'valueMap' => array(
                'detail' => '',
            ),
            'noMatch' => 'bypass',
        ),
        array(
            'GETvar' => 'tx_news_pi1[controller]',
            'valueMap' => array(
                'News' => '',
            ),
            'noMatch' => 'bypass',
        ),

        array(
            'GETvar' => 'tx_news_pi1[news]',
            'lookUpTable' => array(
                'table' => 'tx_news_domain_model_news',
                'id_field' => 'uid',
                'alias_field' => 'title',
                'addWhereClause' => ' AND NOT deleted',
                'useUniqueCache' => 1,
                'useUniqueCache_conf' => array(
                    'strtolower' => 1,
                    'spaceCharacter' => '-',
                ),
                'languageGetVar' => 'L',
                'languageExceptionUids' => '',
                'languageField' => 'sys_language_uid',
                'transOrigPointerField' => 'l10n_parent',
                'autoUpdate' => 1,
                'expireDays' => 180,
            ),
        ),
    ),

    '6' => 'newsDetailConfiguration',
    // For additional detail pages, add their uid as well
    //'13' => 'newsDetailConfiguration',
    //'22' => 'newsDetailConfiguration',
    //'4' => 'newsTagConfiguration',
    //'4' => 'newsCategoryConfiguration',

),
'postVarSets' => array(
    '_DEFAULT' => array(
        'controller' => array(
            array(
                'GETvar' => 'tx_news_pi1[action]',
                'noMatch' => 'bypass',
            ),
            array(
                'GETvar' => 'tx_news_pi1[controller]',
                'noMatch' => 'bypass',
            ),
        ),
        'stadt' => array(
            array(
                'GETvar' => 'tx_news_pi1[overwriteDemand][categories]',
                'lookUpTable' => array(
                    'table' => 'sys_category',
                    'id_field' => 'uid',
                    'alias_field' => 'title',
                    'addWhereClause' => ' AND NOT deleted',
                    'useUniqueCache' => 1,
                    'useUniqueCache_conf' => array(
                        'strtolower' => 1,
                        'spaceCharacter' => '-',
                    ),
                ),
            ),
        ),

        'tags' => array(
            array(
                'GETvar' => 'tx_news_pi1[overwriteDemand][tags]',
                'lookUpTable' => array (
                  'table' => 'tx_news_domain_model_tag',
                  'id_field' => 'uid',
                  'alias_field' => 'title',
                  'addWhereClause' => 'AND NOT deleted',
                  'useUniqueCache' => 1,
                  'useUniqueCache_conf' => array (
                    'strtolower' => 1,
                    'spaceCharacter' => '-',
                    ),
                ),
            ),
        ),

        'seite' => array(
            array(
                'GETvar' => 'tx_news_pi1[@widget_0][currentPage]',
            ),
        ),

        // news archive parameters
        'archiv' => array(
            array(
                'GETvar' => 'tx_news_pi1[overwriteDemand][year]',
            ),
            array(
                'GETvar' => 'tx_news_pi1[overwriteDemand][month]',
                'valueMap' => array(
                    'january' => '01',
                    'february' => '02',
                    'march' => '03',
                    'april' => '04',
                    'may' => '05',
                    'june' => '06',
                    'july' => '07',
                    'august' => '08',
                    'september' => '09',
                    'october' => '10',
                    'november' => '11',
                    'december' => '12',
                ),
            ),
        ),

    ),
),
// configure filenames for different pagetypes
'fileName' => array(
    'defaultToHTMLsuffixOnPrev' => 0,
),
);

?>

Мне нужен этот опечатка?

plugin.tx_news {
    settings {
            link {
                    skipControllerAndAction = 1
            }
    }
}

На странице сведений я проверяю реалурл:

tx_realurl_exclude = 1

3 ответа

Решение

Вы можете использовать подробно и список плагинов на той же странице. Проверьте этот URL: https://forge.typo3.org/issues/50489

lib.news = USER
lib.news {
userFunc = tx_extbase_core_bootstrap->run
pluginName = Pi1
extensionName = News
controller = News
settings =< plugin.tx_news.settings
persistence =< plugin.tx_news.persistence
view =< plugin.tx_news.view
}
lib.news_list< lib.news
lib.news_list {
action = list
switchableControllerActions.News.1 = list
}
lib.news_detail < lib.news
lib.news_detail {
action = detail
switchableControllerActions.News.1 = detail
}

[globalVar = GP:tx_news_pi1|news > 0]

lib.field_news_single < lib.news_detail
[else]
lib.field_news_list < lib.news_list
[end]

Ответ: невозможно исключить текущую (= последнюю) страницу из говорящего URL.

Если вас интересуют технические детали, вы можете прочитать больше в заметках RealURL для интеграторов.

Просто дополнительное продолжение с другим решением:

Используйте условие TypoScript для динамического рендеринга плагина детализации на странице списка.

[globalVar = GP:tx_news_pi1|news > 0]
  page.10 >
  page.10 < lib.news
[global]

Конечно, вы можете делать намного больше модных вещей, если вам нужно визуализировать, например, другие элементы контента!

[globalVar = GP:tx_news_pi1|news > 0]
  page.10 >
  page.10 = CONTENT
  page.10 {
    table = tt_content
    pidInList = <page ID of your detail page>
    orderBy = sorting
  }
[global]   

Это отобразит все элементы содержимого страницы сведений на странице списка.

Если вы хотите иметь список и единый просмотр на отдельных страницах, тогда расширение singleviewна https://github.com/sourcebroker/singleview делает именно то, что вы хотите.

Это расширение использует встроенную функцию TYPO3 "Показывать содержимое из pid", которую вы можете найти в свойствах страницы. В этом расширении значение поля "Показывать содержимое из pid" устанавливается динамически на основе$_GETпараметр. Когда TYPO3 отображает страницу в виде списка, тогдаext:singleview проверяет, если $_GETПараметр имеет запрос единого просмотра. Если это правда, тогда в поле content_from_pid устанавливается значение uid страницы просмотра. Таким образом, единая страница просмотра с ее содержимым и макетом отображается на странице просмотра списка.

Для TYPO3 7.6 используйте ext:singlenews версии 1.3.

Другие вопросы по тегам