Vererbung

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Vererbung

Beitrag von Spider IT » Di 12. Mär 2013, 19:05

Der vererbte Inhalt wird ganz normal gespeichert, wie anderer Inhalt auch.
Wenn aber kein Inhalt da ist, und die Vererbung nicht ausgeschaltet, schaut die Vererbung beim Startartikel der eigenen Kategorie, dann beim Startartikel der übergeordneten Kategorie usw. bis Inhalt da ist oder der Baum zuende ist.
Es wird aber nichts zusätzlich gespeichert.

Gruß
René

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Vererbung

Beitrag von derSteffen » Di 12. Mär 2013, 19:36

Hallo René,

ich glaube auch ich habe gerade einen Gedankenfehler gehabt.

In einem weiteren Modul wollte ich auf den Inhalt zugreifen und platzieren (ich wollte auch einige Textmanipulationen vornehmen, da dies als css-Klasse dienen soll). Das klappt im gleichen Artikel auch wunderbar (siehe Code-Schnipsel), da wo ich meinen Vererbungstext eingegeben haben, aber leider nicht in den Artikel der vererbten Unterkategorie, obwohl der "verebte Text" an sich bei dem Vererbungsmodul angezeigt wird.

Das ist nur ein Versuch gewesen

Code: Alles auswählen

$text = "CMS_HTML[3]";
$art = new Article($idart, $client, $lang);
echo $text ;
Lösung:
Ich habe das nun so gelöst, dass ich das Verebungsmodul mit dem gleichen Index noch einmal einsetze (also in meinem zweiten Modul an anderer Stelle). Bestimmt nicht so elegant aber klappt :-)

Also hier noch kurz mein Code:
Ziel war es für mich im Verebungstext eine Branche anzugeben "Handwerker". Dieser Text wird dann immer über der Überschrift angezeigt.
Jetzt wollte ich aber per CSS die Branchen etwas verschieden stylen und wollte die Branchennamen alss CSS-Klasse gleich nutzen. Habe also ein Modul gemacht und das im Template z.B. als DIV gleich nach dem Bodytag eingesetzt (schließenden div natütlich nicht vergessen) ... oder als CSS in einen berits bestehenden umschließende DIV.
Da ich ja im Vorfeld meine Branche kenne, kann ich als auch schon die CSS-Klassen "bauen". Allerdings sollen diese keine Umlaute, Sonderzeichen und Leerzeichen haben und kleingeschrieben sein, sowie nicht zu lang werden (also max. 20 Zeichen), somit kam dieses kleine Modul zustande, welches die Verebung nutzt. Somit wird z.B. aus Ärzte & Gesundheit = aertztegesundheit.

Code: Alles auswählen

<?php 
cInclude("frontend", "includes/class.vererbung.php");
$index = 3;
$type = 'CMS_HTML';
$vererbung = new Vererbung();
$text = $vererbung->Vererbe($index, $type);
$textincss = $text;

$ersetzemaldas = array("ü", "ä", "ö", "Ä", "Ö", "Ü", "ß", "&uuml;", "&auml;", "&ouml;", "&Uuml;", "&Auml;", "&Ouml;", "&szlig;", " ", "&nbsp;", "&", "&ndash;", "&mdash;", "?", "!", "", """, "'", "\"");
$mitdem=  array("ue", "ae", "oe", "ue", "ae", "oe", "ss", "ue" ,"ae", "oe", "ue" ,"ae", "oe", "ss", "", "", "", "", "", "", "", "", "", "", "");
$textincss = ltrim($textincss, "&nbsp;");
$textincss = html_entity_decode(strip_tags(str_replace($ersetzemaldas, $mitdem, urldecode($textincss))));
$textincss = strtolower($textincss);
$textincss = substr($textincss, 0, 20);
echo $textincss;
?>
MfG Steffen
Zuletzt geändert von derSteffen am Mi 13. Mär 2013, 08:41, insgesamt 5-mal geändert.

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Vererbung

Beitrag von Spider IT » Di 12. Mär 2013, 23:50

derSteffen hat geschrieben:Bestimmt nicht so elegant aber klappt :-)
Die einzige Möglichkeit, egal ob elegant ;)

Gruß
René

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Vererbung

Beitrag von derSteffen » Mi 13. Mär 2013, 18:51

Ach,

jetzt muss ich noch ne Frage loswerden.

Um meinenen verbtenText wird ein P-Tag ausgegeben was ja auch richtig ist, da dass ja der Tiny macht und so soll es auch sein. Nun möchte ich aber p-Tags entfernen, aber ander HTML-Tags sollen drin bleiben.

Code: Alles auswählen

<?php
if (!isset($tpl) || !is_object($tpl)) {
    $tpl = new Template();
}
$tpl->reset();
cInclude("frontend", "includes/class.vererbung.php");
$index = 3;
$type = 'CMS_HTML';
$vererbung = new Vererbung();
$text = $vererbung->Vererbe($index, $type);

$text = ltrim($text, "&nbsp;");
$art = new Article($idart, $client, $lang);

if ($edit) {
echo "<span class=\"beinfo\">Branche</span><br /><u>Vererbter Inhalt: </u>";
$tpl->set('s', 'text', "$text");
$tpl->generate('templates/text_blanko.html');
} else {
if ($text != "") {
	echo "Branche: ";
$ersetzedas = array("<p>", "</p>");
$mitdem = array("", "");
// $text= str_replace($text, $ersetzedas, $mitdem);
$tpl->set('s', 'text', str_replace($text, $ersetzedas, $mitdem));
// $tpl->set('s', 'text', "$text");
$tpl->generate('templates/text_blanko.html');
} else {
	echo "";
	}
}
?>
Aber bei diesem Code wird dann nur Array ausgegeben. Wornan liegt das?

Lösung 1:

Code: Alles auswählen

<?php
if (!isset($tpl) || !is_object($tpl)) {
    $tpl = new Template();
}
$tpl->reset();
cInclude("frontend", "includes/class.vererbung.php");
$index = 3;
$type = 'CMS_HTML';
$vererbung = new Vererbung();
$text = $vererbung->Vererbe($index, $type);

$text = ltrim($text, "&nbsp;");
$art = new Article($idart, $client, $lang);

if ($edit) {
echo "<span class=\"beinfo\">Branche</span><br /><u>Vererbter Inhalt: </u>";
$tpl->set('s', 'text', "$text");
$tpl->generate('templates/text_blanko.html');
} else {
if ($text != "") {
	echo "Branche: ";
$ersetzedas = array("<p>", "</p>");
$mitdem = array("", "");
$tpl->set('s', 'text', str_replace($ersetzedas, $mitdem, $text, ));
$tpl->generate('templates/text_blanko.html');
} else {
	echo "";
	}
}
?>


Lösung 2:

Code: Alles auswählen

<?php

if (!isset($tpl) || !is_object($tpl)) {
    $tpl = new Template();
}

$tpl->reset();

cInclude("frontend", "includes/class.vererbung.php");
$index = 3;
$type = 'CMS_HTML';
$vererbung = new Vererbung();
$text = $vererbung->Vererbe($index, $type);
$text = ltrim($text, "&nbsp;");
$art = new Article($idart, $client, $lang);

if ($edit) {
echo "<span class=\"beinfo\">Branche</span><br /><u>Vererbter Inhalt: </u>";
$tpl->set('s', 'text', "$text");
$tpl->generate('templates/text_blanko.html');
} else {
if ($text != "") {
	echo "Branche: ";
$text = str_replace("<p>", "", $text);
$text = str_replace("</p>", "", $text);
$tpl->set('s', 'text', "$text");
$tpl->generate('templates/text_blanko.html');
} else { echo "";	}
}
?>


Vielen Dank.

MfG Steffen
Zuletzt geändert von derSteffen am Mi 13. Mär 2013, 20:07, insgesamt 1-mal geändert.

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Vererbung

Beitrag von Spider IT » Mi 13. Mär 2013, 19:40

Hallo Steffen,

schau dir mal die Beschreibung der Funktion str_replace() an und achte vor allem auf die Reihenfolge der Parameter ;)
http://de.php.net/manual/de/function.str-replace.php

Gruß
René

PS: Den Rest habe ich nur überflogen.

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Vererbung

Beitrag von derSteffen » Mi 13. Mär 2013, 20:05

Oh NEIN!

Es hätte ansatt dem:

Code: Alles auswählen

$tpl->set('s', 'text', str_replace($text, $ersetzedas, $mitdem));
So aussehen müssen:

Code: Alles auswählen

$tpl->set('s', 'text', str_replace($ersetzedas, $mitdem, $text));
Ich habe das mal oben in Lösung1 verbessert!

Danke René!

MfG Steffen

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Vererbung

Beitrag von Spider IT » Mi 13. Mär 2013, 20:41

Hmmm, beide Lösungen sehen richtig aus.
Generell gilt: um die P-Tags zu entfernen kannst du

Code: Alles auswählen

$text = str_replace(array('<p>', '</p>'), '', $text);
machen.
Wenn das nicht funktioniert, lass mich das mir bitte ansehen.

Gruß
René

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Vererbung

Beitrag von derSteffen » Mi 13. Mär 2013, 21:49

Hallo René,

meine beiden Lösungsvorschläge, wie auch Dein Tipp, gehen auch :-)

MfG und Danke

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Vererbung

Beitrag von derSteffen » Do 14. Mär 2013, 09:26

Tipp:

Wenn es mal auf einmal nicht mehr funktioeren sollte - die Vererbung - und man eine Stunde verzweifel das Problem sucht, kann es daran liegen, dass in der Baumstruktur kein Startsrtikel mehr existiert, welche ja notwendig ist :-)

MfG

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Vererbung

Beitrag von derSteffen » Do 14. Mär 2013, 09:30

Hallo René,

bei deinem Code:

Code: Alles auswählen

    <?php
    cInclude("frontend", "includes/class.vererbung.php");
    $vererbung = new Vererbung();
    if ($edit) {
        echo "<span class=\"beinfo\">Logofade zuweisen, wenn gew&uuml;nscht!</span><br />";
        echo $vererbung->Vererbe(5, 'CMS_IMGEDIT');
    } else {
        $img = $vererbung->Vererbe(5, 'CMS_IMG');
        if (strlen($img)) {   
            echo '<div class="logofadebild" style="background-image:url(' . $img . ')"></div>';
            echo $vererbung->Vererbe(5, 'CMS_IMGTITLE');
        }
    }
    ?>
KLappt alles wunderbar, aber ich kann bei diesem die Vererbung nicht abschalten. Wenn ich ein anderes bild auswähle wird es auch genommen, wie gewünscht. Aber wenn ich bei einem Artikel nicht das Bild anziegen lassen möchte, kann ich das nicht abschalten - anders wie bei Texten. Da kann ich ja die Vererbung "deaktivieren" und dann wird auch nichts angezeigt! Ich habe natürlich schon versucht rumzutesten aber ich habe noch keine Lösung gefunden.

Vielen Dank

MfG Steffen

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Vererbung

Beitrag von Spider IT » Do 14. Mär 2013, 09:48

Hallo Steffen und alle anderen,

ich habe soeben die neue Version 2.3 hochgeladen, die behebt die folgenden Fehler:
  • Ausschalten der Vererbung z.B. bei CMS_IMG über CMS_IMGEDIT hat nicht funktioniert
  • Ausschalten der Vererbung hat den CMS_Typ nicht berücksichtigt
Die Änderungen sind in der include-Datei gemacht, also muss nur diese ausgetauscht werden.

Gruß
René

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Vererbung

Beitrag von derSteffen » Sa 29. Jun 2013, 12:35

Hallo,

ist es möglich, dass eine Vererbung generell aktiv ist, wenn eine vorhanden ist ohne, dass man die Vererbung per Klick im Editor aktivieren muss?

Vielen Dank

MfG Steffen

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Vererbung

Beitrag von Spider IT » Sa 29. Jun 2013, 14:34

Hallo Steffen,

das sollte eigentlich der Standard sein.
Hast du vielleicht mal eine spezielle Version von mir gekriegt, oder ist das jetzt so der Fall?
Ich schaue mir das parallel aber auch nochmal an.

Gruß
René

derSteffen
Beiträge: 847
Registriert: Mi 14. Dez 2005, 16:15
Wohnort: Königs Wusterhausen bei Berlin
Kontaktdaten:

Re: Vererbung

Beitrag von derSteffen » Sa 29. Jun 2013, 14:42

Hallo René,

mhm ... also bei mir ist das so der Fall und eine extra Version binich mir ehrlich gesagt nicht sicher. Fakt ist, bei mir steuere ich die Vererbung über den Startartikel in der Kategorie und alle anderen Artikel in dieser Kategorie, kann ich per Klick sagen ... übernehme die Vererbuung. Ist das eine Spezial-Verion, weil es innerhalb einer "Ebene" greift?!

Vielen Dank

MfG Steffen

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Vererbung

Beitrag von Spider IT » Sa 29. Jun 2013, 15:04

Habs gefunden.
In der class.vererbung.php (aktuelle Version Zeile 69) steht:

Code: Alles auswählen

                $sitKeineVererbung[$type][$field] = 1;
Dass muss geändert werden in:

Code: Alles auswählen

                $sitKeineVererbung[$type][$field] = 0;
Damit ist dann wieder standardmäßig die Vererbung eingeschaltet.

Gruß
René

Gesperrt