注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天上人间*bobo之家

有阳光的时段,就有他(她)的博客文章。也许天气并非晴空万里,博主的“博物钟”却是

 
 
 

日志

 
 

Flexform  

2009-11-06 18:46:13|  分类: typo3 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

本文教大家如何在typo3插件开发中去使用flexform
1.  我们首先在插件的根目录创建一个叫flexform_ds.xml的文件,代码如下:
这个一个flexform的基本框架代码,结构是如何组织的,大家看我在代码里的注释。

<T3DataStructure>
<meta>
  <langDisable>1</langDisable>
</meta>
<sheets> //我们创建的内容包在sheets里面
<sDEF> // sDEF是第一个tag ,也是默认的tag,tag名叫General,等下在截图中可以看到.
<ROOT>
   <TCEforms>
     <sheetTitle>LLL:EXT:name_firstextension/locallang.xml:flexform.sheets.general.title</sheetTitle> // Tag的label名配在language.xml
  </TCEforms>
  <type>array</type>
  <el> // 这里是你要配制的flexform的项目.
   <What_to_dispaly> //比如这里我配了一个叫what_to_display的项.
    <TCEforms>

     <label>LLL:EXT:name_firstextension/locallang.xml:flexform.sheets.general.mode</label>
     <config>
     <type>select</type>
      <items type="array">

       <numIndex index="0" type="array">
         <numIndex index="0">Search List</numIndex> // 这是显示的文字
         <numIndex index="1">list</numIndex> // 这里是实际获取到的值
       </numIndex>
       <numIndex index="1" type="array">

          <numIndex index="0">Single</numIndex>
          <numIndex index="1">single</numIndex> 
       </numIndex>
       </items>
      <minitems>0</minitems> 
      <maxitems>1</maxitems>
      <size>1</size>
     </config>
    </TCEforms>
  </What_to_dispaly>

<records>
                        <TCEforms>
                          <displayCond>FIELD:mode:!IN:PAGES</displayCond>
                            <label>LLL:EXT:name_firstextension/locallang.xml:flexform.sheets.general.records</label>
              <config>
                <type>group</type>
                <internal_type>db</internal_type>
                <allowed>tt_content</allowed>
                <size>5</size>
                <minitems>0</minitems>
                <maxitems>50</maxitems>
                <show_thumbs>1</show_thumbs>
                <autoSizeMax>40</autoSizeMax>
              </config>                           
                        </TCEforms>
                    </records>               

                    <pages>
                        <TCEforms>
                            <displayCond>FIELD:mode:IN:PAGES</displayCond>
                            <label>LLL:EXT:name_firstextension/locallang.xml:flexform.sheets.general.pages</label>
              <config>
                <type>group</type>
                <internal_type>db</internal_type>
                <allowed>pages</allowed>
                <size>5</size>
                <minitems>0</minitems>
                <maxitems>50</maxitems>
                <show_thumbs>1</show_thumbs>
                <autoSizeMax>40</autoSizeMax>
              </config>                           
                        </TCEforms>
                    </pages>   
                   
          <text>
            <TCEforms>
              <label>LLL:EXT:name_firstextension/locallang.xml:flexform.sheets.general.text</label>
              <config>
                <type>text</type>
                <cols>30</cols>
                <rows>5</rows>
              </config>
            </TCEforms>
          </text>                       

                  <breaks>
                      <TCEforms>
                          <label>LLL:EXT:name_firstextension/locallang.xml:flexform.sheets.general.breaks</label>
                          <config>
                              <type>input</type>
                              <size>30</size>
                          </config>
                      </TCEforms>
                  </breaks>
                             
          <ajax>
            <TCEforms>
              <label>LLL:EXT:name_firstextension/locallang.xml:flexform.sheets.general.ajax</label>
              <config>
                <type>check</type>
                <default>0</default>
              </config>
            </TCEforms>
          </ajax>

          <childelement>
            <TCEforms>
              <label>LLL:EXT:name_firstextension/locallang.xml:flexform.sheets.general.childelement</label>
              <config>
                <type>check</type>
                <default>0</default>
              </config>
            </TCEforms>
          </childelement>
         
          <showfirst>
            <TCEforms>
              <label>LLL:EXT:name_firstextension/locallang.xml:flexform.sheets.general.showfirst</label>
              <config>
                        <type>input</type>
                        <size>2</size>
                        <eval>int,trim</eval>
                        <default>1</default>
                <!-- <checkbox>1</checkbox> -->
              </config>
            </TCEforms>
          </showfirst>

</el>
</ROOT>
</sDEF>

//第二个标签

<sDEF1>
            <ROOT>
                <TCEforms>
                <sheetTitle>test2</sheetTitle>
                </TCEforms>
                <type>array</type>
                <el>
          <text>
            <TCEforms>
              <label>LLL:EXT:name_firstextension/locallang.xml:flexform.sheets.general.text</label>
              <config>
                <type>text</type>
                <cols>30</cols>
                <rows>5</rows>
              </config>
            </TCEforms>
          </text>         
        </el>
      </ROOT>
    </sDEF1>


</sheets>
</T3DataStructure>
2.在插件中引入flexfrom,我们要修改的文件是ext_tables.php这个文件,添加以下两行:
$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1']='pi_flexform';
t3lib_extMgm::addPiFlexFormValue($_EXTKEY.'_pi1', 'FILE:EXT:'.$_EXTKEY.'/flexform_ds.xml);

3.在pi文件中我们就个去获取我们在flexform配的项目的值了.
$what_to_display=$this->pi_getFFvalue($this->cObj->data['pi_flexform'],'what_to_display','sDEF'); //sDEF是默认的tag可以不写,但是其他的tag必须的写.

这样$what_to_display的值为 list or single.4.看效果图:


以上转自http://www.51typo3.cn/typo3/74.html


附加:      

<description>
                <TCEforms type="array">
                    <config type="array">
                    <type>text</type>
                    <cols>40</cols>
                    <rows>5</rows>
                    </config>
                    <label>Text</label>
                    <defaultExtras>richtext[*]:rte_transform[mode=ts_css]</defaultExtras>
                </TCEforms>
            </description>

<userGroups>
                        <TCEforms>
                            <label>userGroup</label>
                            <config>
                                <type>select</type>
                                <foreign_table>fe_groups</foreign_table>
                                <foreign_table_where>ORDER BY fe_groups.title</foreign_table_where>
                                <size>10</size>
                                <maxitems>50</maxitems>
                            </config>
                        </TCEforms>
                    </userGroups>

                   <pid>
                        <TCEforms>
                            <label>LLL:EXT:lang/locallang_general.php:LGL.startingpoint</label>
                            <config>
                                <type>group</type>
                                <internal_type>db</internal_type>
                                <allowed>pages</allowed>
                                <size>3</size>
                                <maxitems>22</maxitems>
                                <minitems>0</minitems>
                                <show_thumbs>1</show_thumbs>
                            </config>
                        </TCEforms>
                    </pid>

数据库flexform:

ext_tables.php

require_once( t3lib_extMgm::extPath($_EXTKEY).'common.php' );

$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1']='pi_flexform';
t3lib_extMgm::addPiFlexFormValue($_EXTKEY.'_pi1', '
<T3DataStructure>
  <meta>
    <langDisable>1</langDisable>
  </meta>
    <sheets>
        <sDEF>
            <ROOT>
                <TCEforms>
                <sheetTitle>LLL:EXT:ext_advertisement/locallang.xml:flexform.sheets.general.title</sheetTitle>
                </TCEforms>
                <type>array</type>
                <el>
                     <banner>
                        <TCEforms>
                            <label>LLL:EXT:ext_advertisement/locallang.xml:flexform.sheets.general.mode1</label>
                            <config>
                                <type>select</type>
                        <items type="array">
                                    '.getItems().'
                        </items>
                        <maxitems>100</maxitems>
                        <size>6</size>
                        <multiple>0</multiple>
                        <selectedListStyle>width:150px</selectedListStyle>
                        <itemListStyle>width:150px</itemListStyle>
                            </config>
                        </TCEforms>
                    </banner>
 
        </el>
      </ROOT>
    </sDEF>
  </sheets>
</T3DataStructure>
');

common.php

<?php
function getItems() {

        $i = 0;
        $opt = '';

        if ( ! ($res = $GLOBALS['TYPO3_DB']->sql_query("SELECT uid, title FROM tx_table order by title asc")) ) { return; }

        while ( $row = $GLOBALS['TYPO3_DB']->sql_fetch_row( $res ) ) {
            $opt .= '<numIndex index="'.$i++.'" type="array">'."\n";
            $opt .= '<numIndex index="0"><![CDATA[ '.$row[1].']]></numIndex>'."\n";
            $opt .= '<numIndex index="1">'.$row[0].'</numIndex>'."\n";
            $opt .= '</numIndex>'."\n";
        }

        return $opt;
}
?>


  评论这张
 
阅读(1144)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018