CCKのテンプレート、FLEXIcontentの使い方

FLEXIcontentでは、コンテンツ内容を表示させるための「テンプレート」を設定できます。

Joomla!にインストールして「テンプレート」とは別物なのに同じ名前なので非常に紛らわしいです。

2種類の「テンプレート」

Joomla!で普通に使うテンプレートは、エクスンテンションマネージャーに現れる方の「テンプレート」です。

CCKとしてFLEXIcontentを使う場合には、追加で「テンプレート」が作られますが、これはページのコンテンツを表示させるラッパーとして働く「テンプレート」です。

FLEXIcontentの「テンプレート」で作られたページコンテンツを表示するのがJoomla!の「テンプレート」です。

ややこしいにも程があります。Joomla専用なのだから、紛らわしい名前を付けないで欲しいです。

FLEXIcontentテンプレート

FLEXIcontent上のテンプレートはインストール直後には、

  1. blog
  2. default
  3. faq
  4. item-tabbed
  5. presentation

の5つのテンプレートが定義されていて、これを変えながら表示を制御していきます。

FLEXIcontentのテンプレート「blog」

FLEXIcontentのテンプレート「blog」

それぞれのテンプレートごとに、記事タイプ別に単一記事を表示する場合と記事をリスティングする場合で、違うレイアウトを設定しますが、

  • 個別記事
    • Basic
    • Modular
  • リスティング
    • Columned listing
    • Table listing
    • Per sub-category placement
    • Tab / slider item placement
    • Modular listing

と合計で7つが作られています。

PHPコード

これを個別に設定していきますが、表示を実際に制御しているPHPファイルがBasicの場合には

  • item.php
  • item_html5.php

です。これらのファイルを書き換えた場合には、FLEXIcontentをアップデートすると上書きされて変更内容が失われてしまいます。(FLEXIcontentのコンポーネント上で書き換えようとする場合には、警告されます)

常にitem.phpが呼び出され、FLEXIcontentテンプレート(Basic)のDisplay ParametersとしてHTML5が設定されている場合にitem_html5.phpをitem.phpから呼び出しています。

Use Globalは現行バージョンの3.0.8ではPHPコード、つまりitem.phpに設定されたデフォルト、xHTMLが使われます。

フィールド内容の呼び出し

記事のコンテンツ表示ですから、記事の内容と各種フィールドの読み込みが行われます。GUIである程度設定できますが、呼び出すときにはPHPコードで

<?php
echo $this->item->プロパティ名;
echo $this->fields['フィールド名']->value;
?>

などで表示させることが出来ます。詳しくは、FLEXIcontentのチュートリアルテンプレート4に書かれていますが、消えると嫌なので転載しておきます。

これらの機能は、記事コンテンツからしかアクセス出来ません。つまり、モジュールなどからはアクセス不能です。(無理やり、現在表示しているページのアイテムIDを使ってデータベースクエリで取得することはできます)

Item

This object contains all information regarding your own content
You can call it this way $this->item->”property”

idIdentifier in the database
titletitle
aliasalias
introtextIntroduction text
fulltextAll the text
stateStatus of publication (1 : publish, 0 : not publish, -1 : archived, -2 : delete, -3 : pending, -4 : draft, -5 : in progress )
sectionidSection
catidMain category
createdCreation date
created_byAuthor id
created_by_aliasAuthor alias
modifiedLast modification date
modified_byId of the last author who has modified section
publish_upStart date of publication
publish_downEnd date of publication
versionVersion id
orderingNumber indicating the rank order
metakeyKeywords meta data
metadescDescription of meta data
metadataMetadata robots and author
accessAccess Level (0 : public, 1 : private, 2 : special)
hitsNumber of visits
item_idContent id
type_idType id
languageLanguage (fr-FR, en-US)
search_indexAll text is indexed for search
cataccessAccess level of the category (0 = public, 1: Private 2: Special)
catpublishedIndicates whether the category is published or not
authorAuthor name
usertypeGroup name of the User
typenameLabel the type of content
creatoremailEmail the original creator
modifierName of last author who made a change
textText (description field) to be displayed in the template (introduction or full text)
catsTable listing the categories associated (cats [x] -> id, cats [x] -> title …)
fieldsSee details in the next chapter item->fields
readmore_linkWay to link to the “read more»
positionsSee details in the next chapter item->Positions
fieldvaluesList the value of fields in a table (FieldValues [id_du_champs] [x])
favsNumber of users who added the content in their favorite
favIndicates whether the content can be placed in favorites
voteObject with the following values: rating_sum (average value of votes), rating_count(votes) lastip (last ip address voting).
creatorCreator name

item->fields or fields

This way you can get all the information about the fields in your template, either for the core fields (title, text, created, created_by, modified, modified_by, hits, document_type, version, state, voting, favorites, categories , tags) but all your custom fields (as you have named them) that are associated with the type being displayed.
You need to call it this way $this->item->fields[‘field name’]->”property” or so $this->fields[‘field name’]->”property”

idFields id
field_typeField type
nameField name
labelField label
descriptionField description
isfilterReturn true if this is a filter
iscore
isearchThe field is being used for search ?
isadvsearchThe field is being used for advanced search ?
publishedPublished or not ?
accessAccess Level (0 : public, 1 : private, 2 : special)
orderingNumber indicating the rank order
valueValue of the field
displayShow the formated value of the field

Each field also has parameters that can be recovered in this way (object JParameter:)

$this->item->fields[‘field name’]->parameters->get(‘parameter’)

Here are the main parameters that can be found, not all are used depending on the type of field.

display_labelDisplay the label
emove_spaceDelete spaces
pretextPrefix
posttextSuffix
default_valueDefault value
allow_multipleAllow multiple value
max_valueThe number of value maximum
sizeThe field size
separatorfSeparator values for the frontend
opentagThe open tag
closetagThe closing tag
date_formatStandard siplay format of date
custom_dateCustom display format date
rowsNumber of ligne in the textarea
colsNumber of row in the textarea
use_htmlThe HTML editor is enabled ?

item->positions

As we saw previously you can browse through all positions of a template to display your fields. Here are the details of the information you can use.

You need to call it this way $this->item->positions[‘name of position][‘field name’]->”property”

idId of the field
nameName of the field
labelLabel of the field
displayFormated value of the field

user

This object type juser gives you information about the user currently logged
A call in this way $this->user->”property”

idUser id
nameName of the user
usernameLogin of the user
emailEmail of the user
usertypeAddress of the user
registerDateDate of registration
lastvisitDateDate of last connection

params

It is an JParameter object that will allow us to find the settings related to the content.

$ this-> params-> get (‘parameter’)

flexi_sectionFLEXIcontent associated section
commentsEnable input ( 0= no comment, 1 and 2 = JComments and JomComments)
support_urlUrl Support
flexi_fishEnable the Joomfish support
filtercatFilter the category view
filtertagFilter the tags view
use_versioningEnable the versioning
nr_versionsVersion stored
show_titleContent title
link_titleLink title
show_readmoreRead More link
show_iconsIcons
show_pdf_iconDisplay PDF icon
show_print_iconDisplay Print icon
show_email_iconDisplay Email icon
limitNumber of element by page
catlimitList limit (category)
upload_extensionsAllowed Extensions (File Types)
upload_maxsizeMax Size
file_pathSecure path to the directory
media_pathSecure path to the media
restrict_uploadsRestrict upload
check_mimeCheck the MIME types
image_extensionsExtensions of images allowed (File Types)
ignore_extensionsIgnored Extensions
upload_mimeMIME types allowed
enable_flashEnable the upload using flash
feed_summaryFor each rss feed
advcacheAdvanced cache
adcache_timeTime of the cache
advcache_guestOnly visitor
disablecssDisable the css
item_depthItem level
add_item_pathwayAdd a path
show_page_titlePage title
menu_imageImage Menu
secureEnable SSL
page_titleDisplay the page title
page_descriptionmeta description
menu_params

It is an JParameter object that will allows us to find the parameters associated with the content menu that must be displayed.

$this->menu_params->get('parameter')

item_depthLevel of the element
add_item_pathwayAdd a path
page_titlePage title
show_page_titleShow the page title
pageclass_sfxCSS class suffix
menu_imageImage of the menu
secureSSL active

The flexicontent_html class

The flecicontent_html class offers some useful functions for our template.

Function striptagsandcut

This feature allows us to remove html tags from a text and cut cleanly after a certain number of characters.

1
2
// This exemple va will format and truncate $mon_texte after 100 characters
echo flexicontent_html:: striptagsandcut ( $mon_texte,100 )
Function extractimagesrc
1
2
// This exemple will generate a image tag with the needed parameters
echo flexicontent_html:: extractimagesrc ( $this->fields[‘mon_champ_image’]);
Function printbutton

This exemple will display the button and the link to print the current content

1
2
// Cet exemple will display the print icon in ou content
echo flexicontent_html::printbutton( $this->print_link, $this->params );
Function mailbutton

This exemple will display the button and the link to recomment the current content via email

1
2
// This example will display the icon Send by mail 
echo flexicontent_html::mailbutton( 'items', $this->params, null , $this->item->slug );
Function pdfbutton

This will display the button and the link to generate active content in pdf

1
2
// This exemple will display an pdf icon into the active content
echo flexicontent_html::pdfbutton( $this->item, $this->params )

GUIに落としこむ方法

コーディングは必要になりますが、GUIを使って表示場所を変えたりすることもできます。

まだ試していないので実際に働くかはわかりませんが、GUIで表示設定するときに呼び出して表示する関数を定義できることを使う方法です。

テンプレートチュートリアル2の後ろのほうに書かれています。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする