Редактирование внешнего интерфейса TYPO3 для записей новостей (ext: frontend_editing) - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь активировать новое редактирование внешнего интерфейса (ext: frontend_editing) для записей новостей (ext: news).Часть редактирования работает хорошо, но я не могу добавить новые записи новостей во внешнем интерфейсе.

Я выполняю шаги, описанные в manual , и появляется часть "пользовательских записей", ночто теперь?Может кто-нибудь описать, какие значения мне нужно передать методу wrapContentWithDropzone (), который описан в руководстве?

/**
 * @param string $content Empty string (no content to process)
 * @param array $conf TypoScript configuration
 * @return string $content
 */
 public function wrapWithDropZone($content, $conf)
 {
      if (GeneralUtility::_GET('frontend_editing') && GeneralUtility::makeInstance(AccessService::class)->isEnabled()) {
           $wrapperService = GeneralUtility::makeInstance(ContentEditableWrapperService::class);

           $content = $wrapperService->wrapContentWithDropzone(
                'tt_content', // table name
                0, // page uid, pid
                $content,
                0 // colPos
           );
      }

      return $content;
 }

Цените любую помощь или двигайтесь в правильном направлении!Спасибо!

ОБНОВЛЕНИЕ

Я понял, что код выше добавляет зону перетаскивания в самом низу страницы.Но эта зона перетаскивания реагирует только на «нормальные» элементы содержимого, но не на мой недавно добавленный пользовательский элемент.Когда я изменяю первое значение метода "wrapContentWithDropzone ()" на "tx_news_domain_model_news", эта зона удаления создает новую запись новостей, независимо от того, какой элемент был удален ...

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

1 Ответ

0 голосов
/ 19 октября 2018

После некоторой отладки я нашел ответ сам:

Не используйте метод "wrapContentWithDropzone ()", но "wrapContentWith Custom Dropzone ()".

Вотмой код:

Typoscript:

plugin.tx_frontendediting {
    customRecords {
        10 {
            table = tx_news_domain_model_news
            pid = 6
        }
    }
}

page = PAGE
page.1001 = USER
page.1001 {
    userFunc = Vendor\Extension\UserFunc\FrontendEditing->addNewsDropZone
}

Пользовательская функция:

<?php
namespace Vendor\Extension\UserFunc;

use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\FrontendEditing\Service\AccessService;
use TYPO3\CMS\FrontendEditing\Service\ContentEditableWrapperService;

class FrontendEditing {

    /**
     * @param string $content Empty string (no content to process)
     * @param array $conf TypoScript configuration
     * @return string $content
     */
    public function addNewsDropZone($content, $conf)
    {
        if (GeneralUtility::_GET('frontend_editing') && GeneralUtility::makeInstance(AccessService::class)->isEnabled()) {
            $wrapperService = GeneralUtility::makeInstance(ContentEditableWrapperService::class);

            $content = $wrapperService->wrapContentWithCustomDropzone(
                'tx_news_domain_model_news', // table name of the record you want to create
                $content,
                // additional fields if needed
                [
                    //'title' => 'default title'
                ],
                6 // page uid of the page where you want to store the news records
            );
        }

        return $content;
     }
}

Это добавит зону перетаскивания в самом низу каждой страницы, где пользовательский элементтип "tx_news_domain_model_news" может быть удален.Записи будут храниться на странице, которая определена в методе "addNewsDropZone ()", в моем случае это страница с uid = 6.

...