WBCE CMS – Way Better Content Editing.
You are not logged in.
Moin!
Das NWI-Modul kann man für verschiedene Zwecke verwenden. Z.B. Produktverzeichnisse erstellen.
Wie kann ich es machen, dass beim fehlenden Produktbild ein vordefiniertes Bild (z.B. Nophoto) gezeigt wird?
Es muss aber nur für eine NWI-Seite wirken, nicht für alle.
Kann man bei der Einstellungen der NWI-Section etwas (im Prinzip eine IF-Bedingung) eingeben, damit es funktioniert?
Last edited by kleo (13.04.2025 18:25:11)
Offline
Das macht NWI schon. Wenn's kein Bild gibt, wird ein transparentes PNG ausgegeben (nopic.png).
https://github.com/WBCE/News-with-Image … .php#L1490
Wenn das auf bestimmten NWI-Seiten anders aussehen soll, müsste da dann noch eine Abfrage der Page-ID drumherumgestrickt werden.
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Ich habe es folgender Weise gelöst:
in der Zeile ca. 1451:
function mod_nwi_post_process($post,$section_id,$users)
{
global $MOD_NEWS_IMG, $TEXT, $admin;
durch
function mod_nwi_post_process($post,$section_id,$users)
{
global $MOD_NEWS_IMG, $TEXT, $admin, $page_id;
ergänzt.
Und in der Zeile ca. 1489
// posting (preview) image
if ($post['image'] != "") {
$imgdata = mod_nwi_img_get($post['image']);
$post_img = "<img src='".WB_URL.MEDIA_DIRECTORY.'/.news_img/'.$post['image']."' alt='".htmlspecialchars($post['title'], ENT_QUOTES | ENT_HTML401)."' />";
} else {
$post_img = "<img src='".WB_URL."/modules/news_img/images/nopic.png' alt='empty placeholder' style='width:".$previewwidth."px;' />";
}
$post['post_img'] = $post_img;
so angepasst:
// posting (preview) image
if ($post['image'] != "") {
$imgdata = mod_nwi_img_get($post['image']);
$post_img = "<img src='".WB_URL.MEDIA_DIRECTORY.'/.news_img/'.$post['image']."' alt='".htmlspecialchars($post['title'], ENT_QUOTES | ENT_HTML401)."' />";
} else {
$custom_img_path = WB_PATH.MEDIA_DIRECTORY.'/.news_img/noimage/'.$page_id.'.jpg';
if (file_exists($custom_img_path)) {
$post_img = "<img src='".WB_URL.MEDIA_DIRECTORY."/.news_img/noimage/".$page_id.".jpg' alt='no image for page ".$page_id."' style='width:".$previewwidth."px;' />";
} else {
$post_img = "<img src='".WB_URL."/modules/news_img/images/nopic.png' alt='empty placeholder' style='width:".$previewwidth."px;' />";
}
}
$post['post_img'] = $post_img;
Im Verzeichniss /media/.news_img/ einen neuen Ordner namens noimage angelegt und dorthin eine JPG-Datei mit dem Namen der PageID gelegt.
Es scheint zu funktionieren.
Vielleicht kann man es standardmäß für die nächste Version des NWI-Moduls einfügen.
Offline
florian
Prima, dass du selbst eine Lösung entwickelt hast.
An sich könnte das so übernommen werden. Einziger Wermutstropfen ist, dass das Verzeichnis /media/.news_img bewusst bzw. gewollt nicht in der Medienverwaltung im Backend angezeigt wird, deshalb wäre zu überlegen, die Platzhalterbilder auch unter modules/news_img/images zu speichern. Da könnten sie dann zumindest mit dem AFE hochgeladen/gelöscht werden.
Oder halt außerhalb von .news_img, also direkt unter media und dann als placeholder_42.jpg o.ä.
(Die beste Lösung wäre natürlich, direkt bei den NWI-Seiteneinstellungen einen Custom-Placeholder-Upload zu haben...)
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Da bei den NWI Einstellungen nicht nur die Breite, sondern auch die Höhe der preview-Bilder angegeben wird, wäre es sinnvoll die Platzhalterbilder genauso zu behandeln wie die "normale" Bilder.
Deshalb kann der Code so angepasst werden:
$post_img = "<img src='".WB_URL.MEDIA_DIRECTORY."/.news_img/noimage/".$page_id.".jpg' alt='image for page ".$page_id."' style='max-width:".$previewwidth."px; max-height:".$previewheight."px; height:auto; width:auto;' />";
Offline