[BUG] Teaser_ContentType (editiert bessere Lösung)

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

[BUG] Teaser_ContentType (editiert bessere Lösung)

Beitrag von rethus »

Ich habe folgende Anregung um den Content-Type "Teaser" zu optimieren.

Ist kein Teaser gewählt, wird in sechs mal das leere Teaser-Template ausgegeben, welches lediglich den Text "More" oder falls nicht in in dem Modul übersetzt "Module Translation not found: MORE »– ausgegeben.

In 4.8.19 dürfte dass relativ simpel über eine SMARTY-If-Abfrage abzufangen sein, so das das gesamte Template nicht ausgegeben wird wenn weder Titel, Text, noch Bild im Teaser gewählt wurde.

Blau markiertes war eine falsche Annahme von mir. Die SMARTY-IF-Anweisungen funktionieren nur in den Style→Modul→Modulname→HTML-Bereichen. Die Templates die hier genutzt werden befinden sich aber unter Style→Modul→HTML, dort funktioniert die SMARTY-Syntax nicht (was mir leider erst später aufgefallen ist)

Aus diesem Grund hier eine Verbesserung:

In der Datei: contenido/classes/content_types/class.content.type.teaser.php:

Ab Zeile 313:

Code: Alles auswählen

            foreach ($artCollector as $article) {
			if ($returnAsArray == true) {
	                    array_push($articles, $article);
	                } else {
	                    $this->_fillTeaserTemplateEntry($article, $template);
	                }
		}
ersetzen gegen:

Code: Alles auswählen

foreach ($artCollector as $article) {
$title =  trim($this->_getArtContent($article, $this->_settings['teaser_source_head'], $this->_settings['teaser_source_head_count']));
$text =  trim($this->_getArtContent($article, $this->_settings['teaser_source_text'], $this->_settings['teaser_source_text_count']));
$imageId = trim($this->_getArtContent($article, $this->_settings['teaser_source_image'], $this->_settings['teaser_source_image_count']));

    if(!empty($title) || !empty($text)|| !empty($imageId)){
	if ($returnAsArray == true) {
             array_push($articles, $article);
        } else {
             $this->_fillTeaserTemplateEntry($article, $template);
        }
   }
}
Und ab Zeile 325
folgendes:

Code: Alles auswählen

         if ($returnAsArray == false && file_exists($this->_cfgClient[$this->_client]['path']['frontend'] . 'templates/' . $this->_settings['teaser_style'])) {
ersetzen mit:

Code: Alles auswählen

 
   if ($returnAsArray == false && file_exists($this->_cfgClient[$this->_client]['path']['frontend'] . 'templates/' . $this->_settings['teaser_style']) && count($template->Dyn_replacements) > 0) {
       
Zuletzt geändert von rethus am Do 20. Feb 2014, 13:52, insgesamt 4-mal geändert.
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: [BUG] Teaser_ContentType (editiert bessere Lösung)

Beitrag von frederic.schneider_4fb »

rethus hat geschrieben:Ich habe folgende Anregung um den Content-Type "Teaser" zu optimieren.
Ist kein Teaser gewählt, wird in 4.8.18 (...)
Bezieht sich Deine Anregung nun auf Version 4.8.X oder auf 4.9 respektive auf beide? Du sprichst nämlich von 4.8 und bist im 4.9-Bereich des Forums. Ich bin daher nur etwas irritiert. Im Grundsatz finde ich das eine gute Idee und würde es nach einer Prüfung übernehmen, wenn es Dir recht ist.
Frederic Schneider
Entwickler bei der four for business AG
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: [BUG] Teaser_ContentType (editiert bessere Lösung)

Beitrag von rethus »

Klar, kannst du gerne übernehmen. Bezieht sich wohl auf beide, vornehmlich aufgetreten und behoben auf 4.9.2
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: [BUG] Teaser_ContentType (editiert bessere Lösung)

Beitrag von frederic.schneider_4fb »

Danke. Ich denke es schadet nicht, sondern ist eher hilfreich es zu übernehmen!
Frederic Schneider
Entwickler bei der four for business AG
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: [BUG] Teaser_ContentType (editiert bessere Lösung)

Beitrag von rethus »

Kannst du mir sagen, ob es in der aktuellen 4.9.3 die man bei Sourceforge downloaden kann schon drin ist? Ich würde jetzt auf 4.9.3 updaten.
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: [BUG] Teaser_ContentType (editiert bessere Lösung)

Beitrag von rethus »

Weiterer BUG:

Im Dropdownmenu unter dem Tab Einstellungen ist keine Vorselektion im Feld für die Bilder:
Screenshot_002_20140221.jpg
Screenshot_002_20140221.jpg (31.53 KiB) 3865 mal betrachtet
Ursache ist einfach, im Quellcode wird in class.content.type.teaser.php in der Methode _setDefaultValues CMS_IMG gesetzt, was aber in der Auswahlliste nicht vorhanden ist.
Hier würde ich eh empfehlen auf CMS_HTML zu setzen, da meiner Meinung nach meistens Bilder aus dem Textmodul genommen werden, anstatt eigenständige IMAGE-Typen

Code: Alles auswählen

        // cms type image default
        if (strlen($this->_settings['teaser_source_image']) == 0) {
            $this->_settings['teaser_source_image'] = 'CMS_IMG';
        }
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: [BUG] Teaser_ContentType (editiert bessere Lösung)

Beitrag von rethus »

Hier noch eine Verbesserung für diesen ContenttTypen.

Die Bilder erhalten beim skalieren eine schlechte Qualität, weil insofern die breite und größe die man angibt nicht zu den Bildwerten passt, werden die Bildmaße annähernd errechnet.
Sauberer geht das mit folgender Anpassung:

Datei contenido/classes/content_types/class.content.type.teaser.php ab Zeile :559

Code: Alles auswählen

        // scale image if exists and return it
        if (file_exists($teaserImage)) {
            // Scale Image using cApiImgScale

            //Suther Kommunikationsdesign SASU - beschnitt auf 4/3 und danach erst skalierung
            // Get dimensions of the image
				list ($width, $height, $type, $attr ) = getimagesize($teaserImage);
				//check which side is smaller
				if($width < $height){
					//scale 4:3
					$height = ($height /4)*3;
				}else{
					//scale 4:3
					$width = ($width /4)*3;
				}
				$image = capiImgScale($teaserImage, $width, $height, true, false, 10, true, 100, true);
				// scale to needed width
				$factor = $width / $maxX;
				$height = $height / $factor;
				$image = capiImgScale($teaserImage, $maxX, $height, false, false, 10, true, 100, true);
				// Get dimensions of the image
				list ($maxX, $maxY, $type, $attr ) = getimagesize($image);
            // ende SASU changes


            $imgSrc = cApiImgScale($teaserImage, $maxX, $maxY, $cropped,false,10,true,100,true);

Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: [BUG] Teaser_ContentType (editiert bessere Lösung)

Beitrag von frederic.schneider_4fb »

rethus hat geschrieben:Kannst du mir sagen, ob es in der aktuellen 4.9.3 die man bei Sourceforge downloaden kann schon drin ist? Ich würde jetzt auf 4.9.3 updaten.
Die Änderung ist "nur" in (ab) CONTENIDO 4.9.4 zu finden, oder hier:
https://git.contenido.org/projects/CON/ ... teaser.php
Frederic Schneider
Entwickler bei der four for business AG
frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: [BUG] Teaser_ContentType (editiert bessere Lösung)

Beitrag von frederic.schneider_4fb »

Wegen Deiner weiteren Optimierung:
Wir wollen das nicht einbauen. Du erzeugst so zwar ein proportionales Bild, aber nicht das, was der Nutzer eingestellt hat. In CONTENIDO verfolgen wir (in dem Punkt) die Philosophie der Eigenverantwortung des Redakteurs. Generell sollte man hier aber mittelfristig Abhilfe schaffen, z. B. mit einem richtigen Crop-Tool. Wir werden uns mit der Problematik beschäftigen!
Frederic Schneider
Entwickler bei der four for business AG
Faar
Beiträge: 1951
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Hat sich bedankt: 15 Mal
Kontaktdaten:

Re: [BUG] Teaser_ContentType (editiert bessere Lösung)

Beitrag von Faar »

Hier gibt es ein Crop-Tool auf jQuery Basis.
http://www.croppic.net/
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: [BUG] Teaser_ContentType (editiert bessere Lösung)

Beitrag von rethus »

frederic.schneider_4fb hat geschrieben: Du erzeugst so zwar ein proportionales Bild, aber nicht das, was der Nutzer eingestellt hat. In CONTENIDO verfolgen wir (in dem Punkt) die Philosophie der Eigenverantwortung des Redakteurs. Generell sollte man hier aber mittelfristig Abhilfe schaffen, z. B. mit einem richtigen Crop-Tool. Wir werden uns mit der Problematik beschäftigen!
Das ist richtig, und auch Eure Entscheidung ist an der Stelle richtig. Meine Umsetzung ist lediglich ein Fingerzeig in die richtige Richtung, da ich aus Zeitgründen eine umfangreichere Implementierung nicht vornehmen kann.

Hier mal eine einfache Idee zur Umsetzung:

In den Teasereinstellungen macht Ihr vor dem Bereich wo man höhe und breite angeben kann 3 radiobuttons.

1) Feste Größe
2) Festes Seitenverrhältnis zur Breite
3) Festes Seitenverhältnis zur Höhe.

Wird 2 oder 3 gewählt wird nur breite oder höhe als Eingabefeld angezeigt.
In der Programmierung (so wie von mir bereits für die Breite implementiert) testen, ob höhe 0 is, wenn ja, die aspect-ratio-Funktion mit dem "Real-Crop" ausführen.

Währe also lediglich 3 radiobuttons mehr, ein wenig JS um Eingabefelder auszublenden und die Implementierung der zweiten Abfrage nach width=0
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
Antworten