Konditionale Menüausgabe

Fragen zur Implementierung und/oder Anpassung von ConPresso 4 werden in diesem Forum diskutiert.
Antworten
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Konditionale Menüausgabe

Beitrag von Mr. Magpie »

Ich suche eine Möglichkeit, um zu erreichen, dass ein Menüeintrag - Menü wird über printnavigation() von CPO 4.0.12 erzeugt - erst im Frontend sichtbar wird, wenn ein Artikel in der entsprechenden Rubrik veröffentlicht wurde.
Irgendwelche Tricks bekannt/möglich?
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Das müsste man schon programmieren.
Alle Artikel nach Rubrik-ID gruppiert und als Anzahl auslesen.
Diese ID mit der in getNavigation gespeicherten verknüpfen und nur >0 ausgeben lassen.
Aber... es gibt Rubriken, die niemals Artikel beinhalten werden, wie mod_search, ggf. mod_form und andere Module mit Frontendausgaben und natürlich alle externen Links. Ist also eher was sehr spezifisches, was Du da vorhast :wink:
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Das habe ich mir schon gedacht.

Die Ermittlung der Artikelanzahl habe ich mir schon 2008 einmal eingebaut, allerdings nicht mit Wirkung auf das Menü. Und das Allerschnellste dürfte eine solche Lösung auch nicht sein.

Im Grunde geht's mir ja auch nur darum, einem Redakteur auch ohne "höhere Rechte" zu ermöglichen, einen Menüpunkt sichtbar zu schalten, indem er einen Artikel in der dem Menüpunkt entspr. Rubrik schreibt und freigibt.
Günther Ludwig
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Es würde auch schon ausreichen, wenn ich einem "Chefredakteur" erlauben könnte, den Haken wegzunehmen, der eine Geschlossene Rubrik "schließt".
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Must ja nur die Rechte runterschrauben.
In _views/rubrics_list.inc.php würde ich in der Zeile nach
// Manage
eben ROLE_CHIEFEDITOR benutzen, dann sollte der auch drankommen.

Das mit den Anzahlen hätte man mittels
SELECT `rubric_id`, count(`nr`) AS anzahl FROM `cpo4_news` GROUP BY `rubric_id`
einmal auslesen können und dann eben in printNavigation() eine bedingte Ausgabe erstellt. Man kann ja auch bei Rubriken, die gar keine Artikel brauchen zumindest einen Alibi-Artikel einstellen...
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Ich habe mich jetzt für die Änderung an _views/rubrics_list.inc.php entschieden. Allerdings blieb es bei mir nicht bei der bloßen Änderung von ROLE_SUPERUSER nach ROLE_CHIEFEDITOR, da ich nur die Rubrikeinstellungen, nicht aber auch die Rubrikrechtevergabe und das Rubriklöschen öffnen wollte.

Das Ergebnis kam beim Kunden gut an und habe ich gezippt angehängt. Die Datei enthält an den geänderten Stellen entsprechende Kommentare.
Dateianhänge
rubrics_list.inc.php.zip
(4.55 KiB) 402-mal heruntergeladen
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Ich habe jetzt mal versucht, die ursprüngliche Idee umzusetzen.

dafür habe ich in _include/printnavigation.inc.php folgende Funktion erstellt:

Code: Alles auswählen

function getArticleCount() {
	global $cpoSystem;
	$query = "SELECT rubric_id, count(nr) AS anzahl "
			."FROM ".CPO_NEWS." "
			."WHERE " . ( $cpoSystem['release'] ? "artikel_archiv<2 AND freigabe=" . STATE_RELEASED : "artikel_archiv<1 "
			."AND freigabe!=" . STATE_BLOCKED ) . " AND pub_datum<='" . date('Y-m-d H:i:s', time()) . "' AND verfallsdatum>='".date('Y-m-d H:i:s', time())."' "
			."GROUP BY rubric_id ";
	$db = new DB;
	$db->query($query);
	$countarray = array();
	while ($db->next_record()) {
		$countarray[$db->v('rubric_id')] = $db->v('anzahl');
	}
	return $countarray;
}
in der gleichen Datei habe ich dann in der Funktion printNavigation noch folgendes ergänzt:

die Zeile

Code: Alles auswählen

foreach ($navi as $k=>$v) {
wird ergänzt zu

Code: Alles auswählen

$countarray = getArticleCount();
foreach ($navi as $k=>$v) {
	if ($countarray[$v['rubric']['id']]<1) continue;
also eine Zeile davor und eine dahinter gesetzt.

Das ist aber wie schon geschrieben ein Problem für Rubriken, die gar keine Artikel enthalten sollten, dort sollte man dann also einen Alibi-Artikel einstellen.

Und bitte beachten: Die Unterpunkte einer leeren Rubrik werden NICHT ausgegeben, egal ob sie Inhalte haben.
Dateianhänge
printnavigation.inc.zip
(2.19 KiB) 407-mal heruntergeladen
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

MarkusR hat geschrieben:Das ist aber wie schon geschrieben ein Problem für Rubriken, die gar keine Artikel enthalten sollten, dort sollte man dann also einen Alibi-Artikel einstellen.
Das ließe sich ggf. handeln, wenn es nicht auch für externe Links gilt. Wie sieht's dbzgl. aus?
MarkusR hat geschrieben:Und bitte beachten: Die Unterpunkte einer leeren Rubrik werden NICHT ausgegeben, egal ob sie Inhalte haben.
Klingt ja nur logisch und konsequent.
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Mr. Magpie hat geschrieben:Das ließe sich ggf. handeln, wenn es nicht auch für externe Links gilt. Wie sieht's dbzgl. aus?
Für externe Links muß die letzte Zeile noch etwas ergänzt werden:

Code: Alles auswählen

if ($countarray[$v['rubric']['id']]<1 && !$v['navigation']['externalURL']) continue;
allerdings funktioniert dann das Highlighting mittels class=active nicht, da externe Links nicht als zu highlightend angenommen werden.

Das einfachste wäre die entsprechenden Rubriken jeweils mittels

Code: Alles auswählen

$countarray[x]=1;
quasi "anzuschalten". (wobei x für die Nummer der Rubrik steht und die Zeile entsprechend oft wiederholt wird).
Oder eben einen Alibi-Artikel...
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Externe Links wurden gehighlighted? Muss ich gleich mal gucken, denn das wäre mir neu
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Mr. Magpie hat geschrieben:Externe Links wurden gehighlighted? Muss ich gleich mal gucken, denn das wäre mir neu
Hä? Nix da!
Wenn Du normale Rubriken, z.B. Modulrubriken als externe Links einhängst, dann werden sie nicht gehighlightet, zumindest nicht bei printNavigation, bei mod_menu schon.
Ich bin davon ausgegangen, daß Deine Fragestellung sowas als Idee zugrunde legt (externe Links für leere (Modul-)Rubriken).
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

Das Highlighten von externen Links hast ja DU ins Spiel gebracht.
ICH brauche keine gehighlighteten externe Links, auch nicht auf (leere) Modulrubriken.
Günther Ludwig
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Wenn sich
Das ließe sich ggf. handeln
als Zustimmung zum Einstellen von Alibi-Artikeln zu werten ist, dann habe ich Dich falsch verstanden. Die sofort angrenzende Frage nach externen Links lies die Vermutung aufkommen, daß Du externe Links benutzen willst.
Wenn dem nicht so ist, dann habe ich nichts weiter gesagt, behaupte das Gegenteil und das auch nur unter Vorbehalt sowie ohne Gewähr.
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Mr. Magpie
ConPresso-Profi
Beiträge: 1004
Registriert: 01.01.1970 01:00
Wohnort: Wuppertal
Hat sich bedankt: 274 Mal
Danksagung erhalten: 59 Mal

Beitrag von Mr. Magpie »

MarkusR hat geschrieben:Das müsste man schon programmieren.
Alle Artikel nach Rubrik-ID gruppiert und als Anzahl auslesen.
Diese ID mit der in getNavigation gespeicherten verknüpfen und nur >0 ausgeben lassen.
Aber... es gibt Rubriken, die niemals Artikel beinhalten werden, wie mod_search, ggf. mod_form und andere Module mit Frontendausgaben und natürlich alle externen Links. Ist also eher was sehr spezifisches, was Du da vorhast :wink:
Nur deshalb kam ich überhaupt auf das Thema externe Links - was wahrscheinlich gar kein Thema für mich ist und war.
Günther Ludwig
Antworten