WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 30.01.2018 19:51:07

mave
Mitglied

Topics: Undefined variable: picture_dir ...

Hallo Leute,

1. ich habe eine Seite WBCE 1.3.1. Das Modul Topics wird angezeugt als Version 0.9.4.2 angezeigt.

Unter "Optionen" (bei eingestellter Auto-Archivierung) wird mir angezeigt (egal, welches exisitierende Picture-Verzeichnis ich einstelle):

Notice: Undefined variable: picture_dir in /var/www/k5181-4/htdocs/gfgr_TEST/modules/topics/modify_settings.php on line 355

Worin kann das begründet liegen?

2. Auto-Archivierung: Innerhalb eines Topics-Elements kann ich für betroffene Einträge "nur" ein bestimmtes anderes Topic einstellen (?)
Es ist nicht vorgesehen, dass der eine Eintrag nach Topic "Blubb" und ein anderer nach Topic "Blabb" automatsich verschoben wird, oder? (Manuell geht das ja.)

Gruss
Markus

Offline

#2 30.01.2018 20:28:37

florian
Administrator

Re: Topics: Undefined variable: picture_dir ...

Zu 1)
Ergänze in der /modules/topics/modify_settings.php vor

$theothersq = "SELECT section_title, section_id, page_id FROM ".TABLE_PREFIX."mod_".$tablename."_settings WHERE section_id > '0' ORDER BY section_id ASC";

die folgende Zeile:

$picture_dir = ''.$settings_fetch['picture_dir']; //Auch wenn es leer ist

Zu 2)
Nein, das ist so von Haus aus nicht vorgesehen. Das Archivierungsvoodoo ist in der view.list.php, so um die Zeile 190 herum. Mit etwas fortgeschrittenerem als meinem PHP- bzw. mySQL-Sachverstand ist es wahrscheinlich möglich, da anhand bestimmter Kriterien unterschiedliche Ziel-Sections zu definieren. Wonach würde sich das denn richten, also was ist das Blubb- und was das Blabb-Kriterium?


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#3 30.01.2018 22:19:10

mave
Mitglied

Re: Topics: Undefined variable: picture_dir ...

Hallo Florian,

vielen Dank für den Code.-Schnipsel. Der Fehler wurde aber schon aber ein paar Zeilen vorher (355)  generiert:

$theq = "SELECT section_id FROM ".TABLE_PREFIX."mod_".$mod_dir."_settings WHERE section_id > '0' AND picture_dir = '".$picture_dir."'";

Egal, entscheidend  das Handling der leeren $picture_dir.

florian schrieb:

Wonach würde sich das denn richten, also was ist das Blubb- und was das Blabb-Kriterium?

Ausgangspunkt war einen ProCalender durch Topics/Eventkalender zu ersetzen, dass sich dann so erweiterte:

Wir haben eine Homepage, auf der nach Möglichkeit Verschiedenes mit Termin-/Startdatum erscheinen sollen: Termine, Ereignisse, Ankündigungen, Beiträge verschiedener Autoren, Beiträge zu unterschiedlichen Themen (Kategorien, die dann auch wieder durch WBCE-Unterseiten abgebildet werden), etc. Das ganze ist dynamisch d.h. Blubbs und Blabbs können dazu kommen ... Wichtig: ALLE haben ein "Verfallsdatum", weil die Einträge danach - im Idealfall - automatisiert dorthin wandern sollen, wo sie nach gewisser Zeit auch hingehören.

Daher dieser Gedanke, um bei der Verwaltung der Inhalte fein raus zu sein. Beispiele:

  • Autor X/Y schreibt einen Beitrag. Der soll ab xx.xx.xxxx auf der Startseite aufgelistet werden und ab dem yy.yy.yyyy rutscht der auf die Autorenseite (eine Topics-Komponente nur für den Autoren).

  • Derselbe Autor nimmt an einer Podiumsdiskussion teil. Nachdem deren WBCE-Verfallsdatum soll diese auf eine Unterseite verschioben sein, die ein passendes (thematisches) Topics enthält.

  • Einfache Termine/Veranstaltungen sollen nach Ablauf in ein Kalender-Archiv wandern ...

  • Pressemitteilung des Seitenbetreibers (Verein), die nach gewisser Zeit in die Unterseite "Veröffentlichungen" oder so, umzieht ...

  • Beitrag zu einem der Hauptthemen der Seite: Nachdem sie einige Zeit auf der Startseite Aufmerksamkeit erregt hat (hoffentlich), erscheint sie auf der dazugehörigen WBCE-Unterseite

Grundgedanke: ein und dieselbe (!) Topics-Auflistung, aus der die Einträgen automatisiert heraus wandern, keine verschiedenen Listen, da die Vielfalt der unterschiedlichen Bereiche so auf der Startseite nicht abgebildet werden können.

Das alles mit dem schönen Nebeneffekt: Ein Topics-Eintrag mit Bildchen, Kurz- und Langtext-Möglichkeit reicht völlig aus, um Inhalte so ziemlich aller Art darzustellen. Unterm Strich wäre dieser Mechanismus geradezu genial und würde elendiges roll manuelles Eingreifen und Anpassen erheblich reduzieren bzw. überflüssig machen.

Aber vielleicht gibt's da ja eine Möglichkeit oder noch ein anderes "Schweizer Taschenmodul" ?

Offline

#4 30.01.2018 22:53:40

florian
Administrator

Re: Topics: Undefined variable: picture_dir ...

Puuuuh.... also, out-of-the-box gibt es da definitiv nichts. Und ich bezweifele auch, dass sich eine derartig komplexe Anforderung zufriedenstellend automatisieren ließe. Neben dem Aufbohren der Auto-Archiv-Funktion könnte vielleicht noch Topics-Master ein Ansatz sein  (First In-First-Out-Prinzip, oder auch anhand de Aktualitätslevel), aber das braucht alles individuelle Anpassung und lässt sich beileibe nicht aus dem Ärmel schütteln.

Die Schweizer-Taschenmesser-Module sind OneForAll und wbProfiles, aber beide erfordern ein gerüttelt Maß an Einarbeitung. Um damit die geschilderten Anforderungen umzusetzen, müssten aber ebenfalls individuelle Anpassungen programmiert werden. Und das ist alles andere als trivial.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#5 28.05.2018 09:00:29

mave
Mitglied

Re: Topics: Undefined variable: picture_dir ...

Hallo florian,

Dank auch für obige Ausführungen!

Ich versuche mit den Topics-(Master)-Bordmitteln eine Variante abzubilden, die paßt. Dazu aber:

Gehe ich recht in der Annahme, dass die Presets-Einträge (z.B. bei Übersicht-Seite/Schleife) 1zu1 übernommen und die Platzhalter ersetzt werden? Bzw. anders:

Ist eine bedingte Ausgabe an dieser Stelle in den Presets zu bewerkstelligen?  Hintergrund ist eine angepaßte Ausgabe, konkret: ein anderes Topics "liefern" die Eintrage zu Start-Datum aber evt. kein End-Datum oder(und Uhrzeiten. Deren Ausgabe hätte ich gerne im Master-Topics abhängig von Ihrer Existenz gemacht, sprich: Beinhaltet [EVENT_STOP_DATE] einen String wird ausgegeben:

"[EVENT_START_DATE] bis [EVENT_STOP_DATE]" ansonsten nur "[EVENT_START_DATE]" (evt. gleiche Behandlung mit Uhrzeiten). Wenn ein Platzhalter eh leer ist, wäre es kein Problem, nicht jedoch, wenn dann Ergänzungen wie "bis" o.ä. dazu müssen ...

Vermutlich aber, sind solche bedingten Ausgaben an anderer Stelle zu implementieren, oder?

Offline

#6 29.05.2018 09:01:41

florian
Administrator

Re: Topics: Undefined variable: picture_dir ...

Die Darstellung in einem Topics-Master kann individuell angepasst werden, ist also unabhängig von der Darstellung der einzelnen Topics-Übersichtsseiten, von denen nach bestimmten Kriterien die Inhalte übernommen werden.

Die bedingte Ausgabe ist von Haus aus nicht vorhanden, aber einfach nachzurüsten. Dazu sind in der /modules/topics/view list.php nur einige Ergänzungen ab ca. Zeile 356 erforderlich:

if ($eventplaceholders == true) {			
			$the_startdate = explode('.',gmdate("d.m.Y.D.M.w.n",$topic['published_when']));
			if (isset($MOD_TOPICS['EVENT_DAYNAMES'])) {$the_startdate[3] = $MOD_TOPICS['EVENT_DAYNAMES'][$the_startdate[5]]; }
			if (isset($MOD_TOPICS['EVENT_MONTHNAMES'])) {$the_startdate[4] = $MOD_TOPICS['EVENT_MONTHNAMES'][$the_startdate[6]]; }		
			
			$thetp =  $topic['published_until'];	
			if ($thetp == 0 OR $thetp == $topic['published_when'] ) {			
				$the_stopdate= array('','','','','','','','');
				$the_stopdatetime = '';
				$the_stopdatetf = '';
				$event_until =''; //NEU
			} else {			
				$the_stopdate= explode('.',gmdate("d.m.Y.D.M.w.n",$thetp));
				if (isset($MOD_TOPICS['EVENT_DAYNAMES'])) {$the_stopdate[3] = $MOD_TOPICS['EVENT_DAYNAMES'][$the_stopdate[5]]; }
				if (isset($MOD_TOPICS['EVENT_MONTHNAMES'])) {$the_stopdate[4] = $MOD_TOPICS['EVENT_MONTHNAMES'][$the_stopdate[6]]; }			
				
				$the_stopdatetf = gmdate(DATE_FORMAT, $thetp);
				$the_stopdatetime = gmdate("H:i",$thetp);
				$event_until =' bis ';  //NEU
			}			
				
			$vars = array('[EVENT_START_DATE]', '[EVENT_STOP_DATE]','[EVENT_START_DAY]', '[EVENT_START_MONTH]', '[EVENT_START_YEAR]', '[EVENT_START_DAYNAME]', '[EVENT_START_MONTHNAME]', '[EVENT_START_TIME]','[EVENT_STOP_DAY]', '[EVENT_STOP_MONTH]', '[EVENT_STOP_YEAR]', '[EVENT_STOP_DAYNAME]', '[EVENT_STOP_MONTHNAME]', '[EVENT_STOP_TIME]','[EVENT_UNTIL]'); // ','[EVENT_UNTIL]' angefügt
			$values = array($posted_publ_date, $the_stopdatetf, $the_startdate[0], $the_startdate[1], $the_startdate[2], $the_startdate[3], $the_startdate[4], $posted_publ_time, $the_stopdate[0], $the_stopdate[1], $the_stopdate[2], $the_stopdate[3], $the_stopdate[4], $the_stopdatetime, $event_until); // $event_until angefügt
			$listrow = str_replace($vars, $values, $listrow);
		}

In der oberen if-Abfrage wird die Variable $event_until entweder als Leerstring oder mit dem Wert " bis " definiert.
Darunter erfolgt dann die von bekannte Platzhalter-mit-Wert-Füllung. Dort muss dann einfach nur noch analog zu den vorhandenen Platzhaltern bei $vars der neue Platzhalter EVENT_UNTIL ergänzt und bei $values die Variable $event_until ergänzt werden.

In der Ausgabeschleife wird nun die Vorgabe
[EVENT_START_DATE][EVENT_UNTIL][EVENT_STOP_DATE]
ersetzt durch
28.05.2018 bis 29.05.2018
wenn es ein Stopdatum gibt, und wenn nicht, erscheint dort nur
28.05.2018


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Fußzeile des Forums

up