Author Topic: anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??  (Read 2348 times)

Offline oschi

  • Posts: 27
anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??
« on: December 08, 2011, 11:16:19 AM »
Wie erreiche ich, dass ich nicht den gesamten Inhalt meines {CONTENT_SHORT} anzeigen lasse,
sondern nur die Bilder oder auch nur das erste Bild?

Vielen Dank für eure Hilfe
« Last Edit: December 08, 2011, 12:47:26 PM by oschi »

Offline badknight

  • Moderator
  • **
  • Posts: 813
    • pinzweb
Re: anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??
« Reply #1 on: December 14, 2011, 03:13:32 PM »
Hallo!

Anynews bietet die Funktion "allowed_tags" dort schreib einfach <img> rein und sonst nichts.

Schon wird nur noch ein IMG Tag zugelassen. Zusätzlich musst du dafür sorgen, dass dein Content-Short  in einem Element ist (<div> etc.).

Dannach sollte nurnoch ein Bild rauskommen.
Ich würde gern die Welt verändern, doch Gott gibt mir den Quellcode nicht...

Offline oschi

  • Posts: 27
Re: anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??
« Reply #2 on: December 20, 2011, 02:55:04 PM »
Danke für deine Antwort.

"allowed_tags" funktioniert anders. Es belässt diese angegebenen Tags aus dem Content_Short.
D.h. alle anderen Tags werden abgesteift und nur den Text im Inneren der Text bleibt übrig.

Das ist also keine Filterfunktion.



Offline BlackBird

  • Posts: 2525
Re: anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??
« Reply #3 on: December 21, 2011, 11:06:08 AM »
Könnte mit nem regulären Ausdruck funktionieren. Sowas wie:

Code: [Select]
preg_match( '~<img[^>].+?/>~i', $row['content_short'], $match );

Danach sollte Dein Image in $match[0] stehen. Ungetestet und ohne Garantie. ;)

Edit: Wenn Deine Image-Tags nicht XHTML-konform sind, vielleicht noch das / am Ende optional machen.

Code: [Select]
preg_match( '~<img[^>].+?/?>~i', $row['content_short'], $match );

Offline BlackBird

  • Posts: 2525
Re: anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??
« Reply #4 on: December 21, 2011, 11:21:28 AM »
Das hier funktioniert bei mir mit WB 2.8.2.

Datei include.php

SUCHE
Code: [Select]
/**
* fetch custom placeholders from short/long text fields and replace template placeholders with values
*/
$custom_vars_short_text = getCustomOutputVariables($row['content_short'], $custom_placeholder, 'SHORT');
$custom_vars_long_text = getCustomOutputVariables($row['content_long'], $custom_placeholder, 'LONG');
$custom_vars = array_merge($custom_vars_short_text, $custom_vars_long_text);

DAHINTER

Code: [Select]
// match first image in short text
$first_image = NULL;
preg_match( '~<img[^>].+?/?>~i', $row['content_short'], $match );
if ( is_array($match) && isset($match[0]) ) {
$first_image = $match[0];
}

SUCHE

Code: [Select]
// replace the news article dependend template placeholders
$tpl->set_var(array(
'WB_URL'       => WB_URL,
'GROUP_IMAGE'     => $image,
'NEWS_ID'     => $news_counter,

DAHINTER

Code: [Select]
'FIRST_IMAGE' => $first_image,
Dann noch in Dein Ausgabetemplate an gewünschter Stelle den Platzhalter {FIRST_IMAGE} eintragen und fertig.

Offline flipi

  • Posts: 6
Re: anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??
« Reply #5 on: January 10, 2012, 12:30:40 AM »
Hi!

Ist das ganze so ähnlich auch mit dem Newsmodul möglich?

Also das wenn ein bild im content long ist das ich dann einen placeholder bekomme der mir einfach nur ja oder nein sagt.

vielen dank und
Lg Timo

Offline BlackBird

  • Posts: 2525
Re: anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??
« Reply #6 on: January 10, 2012, 10:45:39 AM »
Bestimmt. :-D

Offline flipi

  • Posts: 6
Re: anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??
« Reply #7 on: January 10, 2012, 03:13:32 PM »
Ok, funktioniert der oben genannte weg auch in dem Newsmodul?

weil finde die schlagwörter nicht.

Gesucht wurde in der view.php

Lg Timo
« Last Edit: January 10, 2012, 03:39:32 PM by flipi »

Offline BlackBird

  • Posts: 2525
Re: anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??
« Reply #8 on: January 10, 2012, 04:27:33 PM »
Grundsätzlich funktioniert der Weg, aber nicht durch schlichtes Copy&Paste. Die Frage war ja "funktioniert der Weg", nicht "funktioniert DIESER Code". ;)

Offline flipi

  • Posts: 6
Re: anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??
« Reply #9 on: January 10, 2012, 04:48:48 PM »
Hmm.. ich drück mich mal anders aus. Welchen code müsste ich en welchen dateien ergänzen.

Lg Timo

Offline cwsoft

  • Posts: 584
Re: anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??
« Reply #10 on: March 29, 2012, 06:53:32 PM »
Hi,

wenn ich es nicht falsch verstanden habe, lässt sich das mit Anynews Parameter $custom_placeholder realisieren. Dazu muss im Anynews Funktionsaufruf der Parameter $custom_placeholder wie folgt gesetzt werden:

Code: [Select]
  $custom_placeholder = array('FIRST_IMAGE' => '%img%'),

Sind im Kurz- oder Langtext Bilder enthalten, können diese an der gewünschten Stelle im Template über den mittels $custom_placeholder definierten Variablennamen (FIRST_IMAGE) ausgegeben werden:

Code: [Select]
 {SHORT_FIRST_IMAGE_1}
  {LONG_FIRST_IMAGE_1}

Der Prefix SHORT spricht dabei nur Bilder an, die aus dem Shorttext extrahiert wurden, der PREFIX LONG die aus dem Longtext. Sind mehrere Bilder enthalten, kann man über {SHORT_FIRST_IMAGE_X} darauf zugreifen. Allerdings sollte dann der Name des Platzhalters nicht FIRST_IMAGE sondern besser MY_IMAGE oder so heissen :wink:

Sind keine Bilder vorhanden, bleiben die Variablen leer und werden bei der Ausgabe des Templates entfernt.

cwsoft
« Last Edit: March 29, 2012, 07:00:18 PM by cwsoft »

Offline BlackBird

  • Posts: 2525
Re: anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??
« Reply #11 on: March 30, 2012, 11:44:01 AM »
Funktioniert. :)

Wäre nur die Frage, wie man es hinkriegt, daß, wenn in SHORT kein Bild vorhanden ist, als Fallback LONG verwendet wird?

Offline cwsoft

  • Posts: 584
Re: anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??
« Reply #12 on: March 30, 2012, 07:09:51 PM »
Hi,

Quote
Wäre nur die Frage, wie man es hinkriegt, daß, wenn in SHORT kein Bild vorhanden ist, als Fallback LONG verwendet wird?
Wenn man sicherstellen kann, dass es nur ein Bild im Shorttext ODER im Langtext gibt, einfach beide Platzhalter verwenden, der nicht belegte fliegt dann raus. Optional per CSS das zweite Bild innerhalb eines Divs ausblenden, oder beide Bilder per CSS ausblenden und das gewünschte dann mittels jQuery einblenden ... Denke aber die erste Variante sollte die meisten Usecases abdecken.

Diese Funktion gibt es übrigens seit Anynews 1.1.0, welche am 31. März 2009 veröffentlicht wurde. Feiert also morgen seinen dritten Geburtstag  :-D Die Beschreibung dazu findet man im Abschnitt Anynews Parameter der README

@blackbird: Denke ich kann Deinen Pullrequest auf GitHub damit schließen oder?

cwsoft
« Last Edit: March 31, 2012, 07:28:24 AM by cwsoft »

Offline BlackBird

  • Posts: 2525
Re: anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??
« Reply #13 on: April 02, 2012, 09:05:35 AM »
Jo.

Vermutlich hat's keiner genutzt, weil die Beschreibung zu unklar ist. ;) Ich hab sie ja auch nicht begriffen.

Offline cwsoft

  • Posts: 584
Re: anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??
« Reply #14 on: April 02, 2012, 11:07:36 AM »
Hi,

ich denke eher das das vom User angefragte Feature nicht allzu häufig benötigt wird. Das gleiche gilt für die Option custom_placeholder. Kenne zumindest nicht allzuviele Forenpost die sich damit beschäftigen  :wink:

Die Beschreibung auf Github wurde mit v2.0.0 aber geändert, schaun wir mal ... Werde dann den Pullrequest schliessen.

Quote
$custom_placeholder: create own placeholders for usage in template files
Example: $custom_placeholder = array('MY_IMG' => '%img%', 'MY_TAG' => '%author%', 'MY_REGEX' => '#(test)#i')

Stores all image URLs, all text inside <author></author> tags and all matches of "test" in placeholders: {PREFIX_MY_IMG_#}, {PREFIX_MY_TAG_#}, {PREFIX_MY_REGEX_#}, where PREFIX is either "SHORT" or "LONG", depending if the match was found in the short/long news text and # is a number between 1 and the number of matches found

Gruss

Offline BlackBird

  • Posts: 2525
Re: anynews - nur Bilder von {CONTENT_SHORT} anzeigen lassen??
« Reply #15 on: April 02, 2012, 11:19:03 AM »
Naja, hier gab es schon mehrere zu diesem Thema. Vielleicht nimmst Du einfach mal ein konkrete(re)s Beispiel in die Doku auf.

Quote
Example: You wish to show the first image of CONTENT_SHORT in your news block

Use

$custom_placeholder = array( 'MY_IMG', '%img%' );

in your AnyNews call and

{SHORT_MY_IMG_1}

as placeholder in your output template.