2016-07-21 5 views
3

Google의 오랜 시간이 지나면 Typo3 7.6 Fluid에서 FAL Objects의 카테고리를 얻을 수 있습니다. 하지만 String 만 반환 할 수 있습니다. {data}와 같은 객체를 가져오고 싶습니다.Fluo of Typo3 Content Element Pictures에서 카테고리 객체를 얻으려면 어떻게해야합니까?

내가 무엇 : TypoScript

lib.category = CONTENT 
lib.category { 
    table=sys_category 
    wrap=| 
    select { 
     pidInList = root,0,1 
     recursive = 99 
     max=10 
     selectFields=sys_category.title,sys_category.uid 
     join = sys_category_record_mm on sys_category_record_mm.uid_local = sys_category.uid join sys_file_metadata on sys_file_metadata.uid = sys_category_record_mm.uid_foreign join sys_file_reference on sys_file_reference.uid_local = sys_file_metadata.file 
     where.field = fuid 
     where.wrap = sys_file_reference.uid=| 
    } 
    renderObj=COA 
    renderObj { 
     1=TEXT 
     1.field = uid 
     2=TEXT 
     2.field = title 
    } 
} 

를 유체에서 내가 가진 : 웹 페이지에

<f:for each="{files}" as="file"> 
    <p> 
    - {file.uid}<br /> 
    - <f:cObject typoscriptObjectPath="lib.category" data="{fuid:file.uid}" /> 
    </p> 
</f:for> 

를가 인쇄 :

  • 88
  • 3Black7Small

  • 89

  • 2Blue7Big

  • 90

  • 1Red

하지만 유체의 개체가 더 나은 생각, 그래서 F를 사용할 수 있습니다 각각의 등에하지만 내가 어떻게 돌려 줄 수 있는지 모르겠다.

아무도 도와 줄 수 있습니까? 이 작업은 매우 까다 롭습니다처럼

+0

FAL 객체, 당신이 그들을 categorysing에 대한 exention을 사용하고 있습니까? 또한 유체에서'files' 변수는 어디서 오는가? fluid_styled_content 또는 이전 css_styled_content를 사용하고 있습니까? –

+0

fluid_styled_content를 사용하고 있으며 파일 카테고리가 있습니다. – Burner

답변

1

보인다. {files}file 배열의 목적은 UID, 제목 또는 설명과 같은 속성 유형 \TYPO3\CMS\Core\Resource\File의 원래 파일로부터 객체를 통해 전달되는 형식 \TYPO3\CMS\Core\Resource\FileReference이다. FileReference은 실제로 파일이 아닌 모델로 구현되므로 확장 할 수 없습니다.

내가 볼 수있는 유일한 다른 방법은 네이티브 SQL 쿼리와 범주를 얻을 것이다 그리고 CategoryRepository 자동으로 분류 모델에 결과를 매핑 할 것 viewhelper를 만드는 것입니다. 다음과 같은 것 :

<?php 
namespace Vendor\Extension\ViewHelpers; 
/** 
* 
* @version $Id$ 
* @copyright Dimitri Lavrenuek <lavrenuek.de> 
* @license http://www.gnu.org/licenses/gpl.html GNU General Public License, version 3 or later 
*/ 
class GetFileCategoriesViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper { 

    /** 
    * @var \TYPO3\CMS\Extbase\Domain\Repository\CategoryRepository 
    * @inject 
    */ 
    protected $categoryRepository; 

    /** 
    * @param int $uid 
    * @return array 
    */ 
    public function render ($uid) { 
     $query = $this->categoryRepository->createQuery(); 
     $sql = "SELECT sys_category.* FROM sys_category 
      INNER JOIN sys_category_record_mm ON sys_category_record_mm.uid_local = sys_category.uid AND sys_category_record_mm.fieldname = 'categories' AND sys_category_record_mm.tablenames = 'sys_file_metadata' 
      INNER JOIN sys_file_metadata ON sys_category_record_mm.uid_foreign = sys_file_metadata.uid 
      WHERE sys_file_metadata.file = '" . (int)$uid . "' 
      AND sys_category.deleted = 0 
      ORDER BY sys_category_record_mm.sorting_foreign ASC"; 
     return $query->statement($sql)->execute(); 
    } 
} 

실제 코드는 테스트하지 않았지만 SQL 쿼리 만 테스트 할 수 있습니다. 또한 유체 템플릿에 viewhelpers를 포함시키는 방법을 알고 싶습니다. 그렇지 않은 경우 예제를 제공 할 것입니다. 기본적으로 범주 관계가없는

+0

Fluid-Template에서 Viewhelper를 어떻게 사용할 수 있습니까? –

+1

@dimitriL $ categoryRepository이어야합니다'대신 TYPO3 \ CMS \ Extbase \ 도메인 \ 저장소 \ CategoryRepository'은'\ TYPO3 \ CMS \ Extbase \ 도메인 \ 모델 \ Category'는, 그것은 작동합니다. https://stackoverflow.com/a/42293786/2564552 당신이 옳다 – spackmat

+0

, 난 내 대답을 조정, 감사 : 작곡가 모드와 확장, 그이 작곡가를 통해 설치되지 않은에서 자동으로 적재 ViewHelpers를 얻으려면를 보라 –