[TYPO3-UG Italy] R: extending news

Cristian Buja (InteRa s.r.l.) cristian.buja at intera.it
Thu May 29 09:47:07 CEST 2014


L'approcio extbase funziona, ma ha la limitazione che solo una classe 
puo estendere un domain/model (similmente a come succedeva per le 
xclass), e se usi le sottoclassi queste non vengono viste dal normale 
plugin perche' gli oggetti che crei sono di un tipo diverso.

Sono due approci diversi che risolvono 2 tipi di problemi diversi.

Per esempio puoi vedere l'estensione 'roq_newsevent' che segue il metodo 
extbase e 'newsfal' che invece usa il metodo delle news.

Al T3Camp Italia di quest'anno ho parlato un po in maniera generica di 
questi metodi, trovi il video o le slide qui:

http://www.t3campitalia.it/slide-video-typo3-t3camp-italia.html

Cristian Buja
Intera - Web, grafica, comunicazione



Il 28/05/2014 15:27, Ivano Luberti ha scritto:
> Ciao Cristian, io non ho mai esteso news ma ho esteso, ad esempio,
> powermail.
> Per estendere il model in extbase esiste un approccio abbastanza
> documentato e illustrato anche nella estensione tutorial blog_example
> (che peraltro sotto la 6.x non funziona).
> L'approccio prevede di sviluppare la sottoclasse ovviamente e di
> utilizzare typoscript per mappare la nuova classe sulla classe padre e
> dire a extbase di utilizzarla al posto della classe padre.
> Ad esempio in blog_example, cosi' viene configurata la classe
> Tx_BlogExample_Domain_Model_Administrator perche' venga usata come
> estensione di Tx_Extbase_Domain_Model_FrontendUser
>
>      plugin.tx_blogexample.persistence {
>               classes {
>                            Tx_Extbase_Domain_Model_FrontendUser {
>                                subclasses {
>
> Tx_BlogExample_Domain_Model_Administrator =
> Tx_BlogExample_Domain_Model_Administrator
>                                }
>                            }
>                            Tx_BlogExample_Domain_Model_Administrator {
>                                mapping {
>                                    tableName = fe_users
>                                    recordType =
> Tx_BlogExample_Domain_Model_Administrator
>                                }
>                            }
>                        }
>                    }
>
> Con news questo approccio non funzionerebbe?
> In caso affermativo, sai perche' hanno introdotto un modo proprietario
> per estendere il model?
> Solo se hai una risposta veloce, se no quando ci cozzero' contro me lo
> studiero' da solo.
>
>
>
> Il 28/05/2014 09:32, Cristian Buja (InteRa s.r.l.) ha scritto:
>> Ha dimenticavo, se il campo e' stato aggiunto al TCA ma non lo vedi
>> nel Backend, vedi se ti ha aggiunto qualcosa tipo 'tx_extbase_type',
>> Questo perche' quando aggiungi un campo a una tabella con
>> extensionbuilder viene creato un nuovo 'tipo' di modello, mentre ne
>> tuo caso hai la necessita' di usare lo stesso 'tipo' modello, per
>> indendersi nelle news hai 3 tipi, news, internal ed external.
>> In questo caso devi intervenire nell'ext_tables.php.
>>
>>
>> Cristian Buja
>> cristian.buja at intera.it <mailto:cristian.buja at intera.it>
>>
>> Intera - Web, grafica, comunicazione
>>
>> Intera
>> Web, grafica, comunicazione
>> via Fratelli Lumiere, 46/a
>> 48124 Fornace Zarattini (Ra), Italia
>> T: +39 0544 462628
>> F: +39 0544 467457
>> www.intera.it <http://www.intera.it>
>> intera at intera.it <mailto:intera at intera.it>
>>
>>
>> Il 27/05/2014 18:52, Cristian Buja (InteRa s.r.l.) ha scritto:
>>> Ciao Riccardo.
>>> Allora l'extension builder non crea di per se estensioni funzionanti, ma
>>> ti aiuta a ottenere una prima struttura sulla quale poi intervenire.
>>> In secondo luogo le news sfruttano un meccanismo 'non convenzionale' per
>>> essere estese. Ed in fine, sempre le news, non usano (almeno non ancora
>>> completamente) i namespace che invece usa typo3 6.2.
>>>
>>> Detto questo, per estendere di un solo campo le news ti occorre nella
>>> tua estensione una struttura con questi file:
>>>
>>> -ext_emconf.php
>>> -ext_icon.gif
>>> -ext_tables.sql
>>> -ext_tables.php
>>> -Classes/Domain/Model/News.php
>>> -Resources/Language/locallang_db.xlf
>>> -Resources/Private/extend-news.txt
>>>
>>>
>>> a parte extend-news.txt
>>> (che deve contenere la sola riga di testo 'Domain/Model/News')
>>> il resto dovrebbe averlo creato l'extension builder, anzi ti avra crato
>>> molto di piu' e anche qualcosa di nocivo per le news nel typoscript
>>> sempre per via del 'non convenzionale meccanismo di estensione delle
>>> news'
>>>
>>>
>>> fatto questo potrai utilizzare il nuovo campo delle news inserendolo nei
>>> relativi template (a tal proposito puoi copiare i template delle news
>>> nella tua estensione e modificarli li, oppure portare tutto fuori in
>>> fileadmin)
>>>
>>> E' sicuramente un po molto complicato le prime volte ma dopo un po ci si
>>> fa l'abitudine :P
>>>
>>> Buon divertimento
>>>
>>> ----------------------
>>>
>>> Cristian Buja
>>> cristian.buja at intera.it
>>>
>>>
>>> Il 27/05/2014 10:57, De Contardi Riccardo ha scritto:
>>>> Ciao ti ringrazio per la disponibilità e scusa se non mi sono fatto
>>>> vivo prima.
>>>>
>>>> Allora... parto dal principio: desidero aggiungere un campo che chiamo
>>>> "offerid" (stringa semplice, niente di che) alla tabella
>>>> "tx_news_domain_model_news", e per farlo in TYPO3 6.2.x ho deciso di
>>>> usare extensionbuilder (mai usato prima)
>>>> 1. Extension builder:
>>>>
>>>> utilizzo le seguenti informazioni nell'estensione:
>>>>
>>>> Name: Offer ID for News
>>>> Vendor name: Bhuman
>>>> Key: bhofferidnews
>>>> Descr.: Extends news and adds offerid field
>>>> category: frontend plugin
>>>> version: 0.0.0
>>>> state: alpha
>>>> Disable versioning: no
>>>> Disable localization: no
>>>> Source language for xliff file: en
>>>> Target Version: 6.2
>>>>
>>>> 2. nel riquadro faccio Drag & Drop di "New model Object" e inizio a
>>>> editarne le proprietà
>>>> e qui iniziano i casini:
>>>>> Domanda N°1: che nome deve avere? Ho notato che se lo chiamo ad es.
>>>>> Offerid, nella folder
>>>> /Classes/Domain/Model/ compare il file Offerid.php, mentre mi pare di
>>>> capire dal tutorial
>>>> che deve chiamarsi News.php. O mi sbaglio?
>>>>
>>>> 2.1 Ammesso di chiamarlo "News", l'ho riempito con le seguenti info:
>>>>
>>>> Domain object settings
>>>>     Object type: Entity
>>>>     > Domanda N°2: meglio entity o value object? Che differenza c'è?
>>>>     Is aggregate root? No
>>>>     Enable Sorting: Yes
>>>>     Add deleted field: Yes
>>>>     Add hidden field: Yes
>>>>     Add starttime/endtime fields: Yes
>>>>     Enable Categorization: No
>>>>     Description: Offer ID
>>>>     Map to existing table: tx_news_domain_model_news
>>>>     Extends existing model class:
>>>>
>>>> Default Actions: non l'ho toccato
>>>> Properties:Add
>>>>     Mi pare di capire che questi sono i campi che vado ad aggiungere:
>>>>     Property name: offerid
>>>>     String
>>>>     Description: Offer ID
>>>>     Is required? No
>>>>     Is exclude field: Yes
>>>>
>>>>    a questo punto salvo il tutto e l'estensione viene creata.
>>>>    Ora... cosa fare esattamente perchè funzioni? Installandola non vedo
>>>> nulla!
>>>>    Il campo è stato aggiunto alla TCA, ma nell'interfaccia non vedo
>>>> nulla!
>>>>    occorre modificare il ext_tables.php in qualche modo??
>>>>
>>>>
>>>>    Inoltre il file /Classes/Domain/Model/News.php è:
>>>>
>>>>    /**
>>>>    * Offer ID
>>>>    */
>>>> class News extends \Tx_News_Domain_Model_News {
>>>>
>>>>      /**
>>>>       * Offer ID
>>>>       *
>>>>       * @var string
>>>>       */
>>>>      protected $offerid = '';
>>>>
>>>>      /**
>>>>       * Returns the offerid
>>>>       *
>>>>       * @return string $offerid
>>>>       */
>>>>      public function getOfferid() {
>>>>          return $this->offerid;
>>>>      }
>>>>
>>>>      /**
>>>>       * Sets the offerid
>>>>       *
>>>>       * @param string $offerid
>>>>       * @return void
>>>>       */
>>>>      public function setOfferid($offerid) {
>>>>          $this->offerid = $offerid;
>>>>      }
>>>>
>>>> }
>>>>
>>>> che mi sembra diverso da quello dell'esempio. Va modificato? E come?
>>>> Sto sbagliando o dimenticando qualcosa?
>>>>
>>>> Grazie per le risposte
>>>>
>>>>
>>>> --------------------------------------------
>>>> Riccardo De Contardi - Web Developer
>>>> B Human Srl - www.bhuman.it
>>>> Riccardo.decontardi at bhuman.it
>>>> Corso di Porta Nuova, 46 - 20121 Milano
>>>> TEL +39-02-20.23.271 - FAX +39-02-20.240.561
>>>> --------------------------------------------
>>>>
>>>> -----Messaggio originale-----
>>>> Da: typo3-ug-italy-bounces at lists.typo3.org
>>>> [mailto:typo3-ug-italy-bounces at lists.typo3.org] Per conto di Cristian
>>>> Buja (InteRa s.r.l.)
>>>> Inviato: lunedì 26 maggio 2014 09:14
>>>> A: typo3-ug-italy at lists.typo3.org
>>>> Oggetto: Re: [TYPO3-UG Italy] extending news
>>>>
>>>> Posso darti qualche suggerimento io se trovo dei buchi nell'arco della
>>>> giornata, ma dovresti dirmi cosa ti funziona e cosa no, altrimenti
>>>> potrebbe essere un po troppo lunga la questione.
>>>>
>>>>
>>>> Cristian Buja
>>>> cristian.buja at intera.it <mailto:cristian.buja at intera.it>
>>>>
>>>> Intera - Web, grafica, comunicazione
>>>>
>>>> Intera
>>>> Web, grafica, comunicazione
>>>> via Fratelli Lumiere, 46/a
>>>> 48124 Fornace Zarattini (Ra), Italia
>>>> T: +39 0544 462628
>>>> F: +39 0544 467457
>>>> www.intera.it <http://www.intera.it>
>>>> intera at intera.it <mailto:intera at intera.it>
>>>>
>>>>
>>>> Il 24/05/2014 20:06, Riccardo De Contardi ha scritto:
>>>>> CIao a tutti
>>>>>
>>>>> Qualcuno mi spiega come si aggiunge un campo all'estensione news? Sto
>>>>> seguendo il tutorial
>>>>> http://docs.typo3.org/typo3cms/extensions/news/Main/Tutorial/Extending
>>>>> News/Index.html con scarsissime fortune (non funziona un tubo)
>>>>>
>>>>> Sto usando TYPO3 6.2.3 e (per la prima volta) l'estensione extension
>>>>> builder... ho come l'impressione che il tutorial di cui sopra sia
>>>>> stato scritto per kickstarter... qualcuno ne conosce un'altro? O sa
>>>>> darmi qualche dritta?
>>>>>
>>>>> Grazie in anticipo
>>>>>
>>>> _______________________________________________
>>>> TYPO3-UG-Italy mailing list
>>>> TYPO3-UG-Italy at lists.typo3.org
>>>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-ug-italy
>>>>
>>>> **************************************************
>>>>
>>>> Chi riceve il presente messaggio e' tenuto a verificare se lo stesso
>>>> non gli sia pervenuto per errore. In tal caso e' pregato di avvisare
>>>> immediatamente il mittente e, tenuto conto delle responsabilita
>>>> connesse all'indebito utilizzo e/o divulgazione del messaggio e/o
>>>> delle informazioni in esso contenute, voglia cancellare l'originale e
>>>> distruggere le varie copie o stampe.
>>>>
>>>> The receiver of this message is required to check if he/she has
>>>> received it erroneously. If so, the receiver is requested to
>>>> immediately inform the sender and - in consideration of the
>>>> responsibilities arising from undue use and/or disclosure of the
>>>> message and/or the information contained therein - destroy the
>>>> original message and any copy or printout thereof.
>>>>
>>>>
>> _______________________________________________
>> TYPO3-UG-Italy mailing list
>> TYPO3-UG-Italy at lists.typo3.org
>> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-ug-italy
>>
>


More information about the TYPO3-UG-Italy mailing list