Seite 1 von 2

P-Tag in CMS_HTMLHEAD

Verfasst: Mi 27. Apr 2016, 14:45
von ImmoF
Nach dem Update von der 4.8.x auf 4.9.x wird offenbar in den Editor bei den Modulen, die diesen Inhalt haben:

Code: Alles auswählen

<?php echo "<h1>CMS_HTMLHEAD[5]</h1>"; ?>
immer ein p-Tag mit angefügt. Wie bekomme ich den p-Tag raus?

Re: P-Tag in CMS_HTMLHEAD

Verfasst: Mi 27. Apr 2016, 16:31
von Faar
Bei TinyMCE steht folgendes: http://archive.tinymce.com/wiki.php/Con ... root_block

Also man muss forced_root_block auf false setzen.
Das macht man meistens in den Mandanteneinstellungen.
Typ = tinymce
Name = forced_root_block
Wert = false

Ich habe das auch mit einem leeren Feld am laufen und dort funktioniert es so auch.
Aber ich habe dort auch den wysiwyg mit cleanup und cleanup_on_startup auf false gesetzt.

Re: P-Tag in CMS_HTMLHEAD

Verfasst: Do 28. Apr 2016, 08:11
von ImmoF
Das ist bereits eingestellt. In der 4.9.x ist es offenbar leider im HTML_HEAD-Element nicht die Loesung.

Man muss ja auch die vorher gesetzten P-Tags entfernen können. Wenn man da den Editor aufruft, gibt es keine Toolbar fuer HTML-Ansicht. Ich habe jetzt mal einige Menu dem WYSIWYG-Editor hinzugefügt, auch das Element code - dennoch erscheint kein Umschalter zum Quelltext.

Re: P-Tag in CMS_HTMLHEAD

Verfasst: Do 28. Apr 2016, 10:06
von McHubi
1) Wie sehen denn Deine Mandanteneinstellungen zum Tiny aus?
2) Bei einer "uralten" Contenido-Version lag's mit dem <p> mal daran, dass es im Modultemplate hardcodiert drin stand. Ist aber im aktuellen Demomandanten der 4.9.9 nicht der Fall. Und "davor" müssten eigentlich alle Tags durch

Code: Alles auswählen

$header = strip_tags($header);
rausgekickt werden...
Lass dir mal den Inhalt von $header im Frontend über die Modulausgabe vor dem strip_tags auswerfen und danach nochmal über das Template. Gibt's da nen Unterschied?

Re: P-Tag in CMS_HTMLHEAD

Verfasst: Do 28. Apr 2016, 10:21
von ImmoF
Der Inhalt des Moduls ist nur

Code: Alles auswählen

<?php echo "<h1>CMS_HTMLHEAD[5]</h1>"; ?>
Der Inline-Editor fuegt hier definitiv ein p-Tag hinzu und ich kann im Editor den p-Tag nicht manuell entfernen, weil es keine HTML-Ansicht gibt, auch nicht in der Vollansicht.

Wenn ich mich richtig erinnere, ist das ein uraltes-Problem von contenido, was von Version zu Version immer wieder da war. Warum man das nicht endlich dauerhaft entfernt, ist mir ein Raetsel.

Re: P-Tag in CMS_HTMLHEAD

Verfasst: Do 28. Apr 2016, 10:30
von McHubi
:?:
Dann ist das aber nicht das Standard-Modul "content_header_first". Da sieht der Output nämlich so aus:

Code: Alles auswählen

<?php

/**
 * description: standard first header (H1)
 * Header will not be output if no or an empty text is given.
 *
 * @package Module
 * @subpackage ContentHeaderFirst
 * @version SVN Revision $Rev:$
 *
 * @author marcus.gnass@4fb.de
 * @copyright four for business AG <www.4fb.de>
 * @license http://www.contenido.org/license/LIZENZ.txt
 * @link http://www.4fb.de
 * @link http://www.contenido.org
 */

// assert framework initialization
defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.');

// get header from content type HTMLHEAD with index 1
$header = "CMS_HTMLHEAD[1]";

// When in backend edit mode add a label so the author
// knows what to type in the shown field.
// When not in backend edit mode any tags are removed
// for the template is responsible for displaying the
// given text as a header.
if (cRegistry::isBackendEditMode()) {
    $label = mi18n("LABEL_HEADER_FIRST");
} else {
    $label = NULL;
    $header = str_replace('&nbsp;', ' ', $header);
    $header = strip_tags($header);
    $header = trim($header);
}

// use smarty template to output header text
$tpl = cSmartyFrontend::getInstance();
$tpl->assign('label', $label);
$tpl->assign('header', $header);
$tpl->display('get.tpl');

?>
und das Modul-Template so:

Code: Alles auswählen

<!-- content_header_first -->

{if 0 lt $label|strlen}
    <label class="content_type_label">{$label|escape}</label>
{/if}

{if 0 lt $header|strlen}
    <h1>{$header}</h1>
{/if}

<!-- /content_header_first -->
Verwende doch mal das Standardmodul und schau, ob dann das Problem immer noch da ist...
Warum man das nicht endlich dauerhaft entfernt, ist mir ein Raetsel.
Das Problem taucht bei keiner meiner Installationen auf. Du scheinst der berühmte "Einzelfall" zu sein... :wink:

Re: P-Tag in CMS_HTMLHEAD

Verfasst: Do 28. Apr 2016, 10:35
von ImmoF
Das Modul duerfte bei jeder Installation auftauchen, welche aus 4.8.x upgedatet worden ist oder frueher.

Die Frage ist ja nur, wo kann ich den Mist abschalten, dass der Editor den p-Tag nicht setzt. Der kommt definitiv aus dem Editor. Der Eintrag oben in den Mandanteneinstellungen hat wohl frueher geholfen, in der aktuellen 4.9x. geht das nicht mehr.

Re: P-Tag in CMS_HTMLHEAD

Verfasst: Do 28. Apr 2016, 13:18
von Faar
ImmoF hat geschrieben:Der Inhalt des Moduls ist nur

Code: Alles auswählen

<?php echo "<h1>CMS_HTMLHEAD[5]</h1>"; ?>
Probier mal

Code: Alles auswählen

<?php echo '<h1>'.strip_tags("CMS_HTMLHEAD[5]").'</h1>'; ?>
strip_tags() entfernt HTML und PHP Tags, so wie <p>.
Ansonsten kannst du auch CMS_TEXT[5] nehmen, weil für diese Überschrift den Wysiwyg Editor gar nicht brauchst, oder möchtest du diese mit Bildern, Tabellen, Formatierungen und Absätzen gestalten?

Re: P-Tag in CMS_HTMLHEAD

Verfasst: Do 28. Apr 2016, 14:26
von ImmoF
Danke.

Die einfachsten Lösungen sind manchmal die besten!

Re: P-Tag in CMS_HTMLHEAD

Verfasst: Do 28. Apr 2016, 16:02
von McHubi
Dann hast Du meinen ersten Post wohl nur überflogen. Der Hinweis auf "strip_tags" war da schon drin... Stichel... :wink:

Re: P-Tag in CMS_HTMLHEAD

Verfasst: Do 28. Apr 2016, 16:20
von Faar
McHubi hat geschrieben:Der Hinweis auf "strip_tags" war da schon drin... Stichel... :wink:
:twisted:

Re: P-Tag in CMS_HTMLHEAD

Verfasst: Di 17. Mai 2016, 11:33
von ImmoF
Ich muss leider hier noch mal einsteigen. Nachdem der cache geloescht ist, entfernt diese Zeile den kompletten Container beim Inline-Editing im Contenido-Backend:

Code: Alles auswählen

<?php echo '<h1>'.strip_tags("CMS_HTMLHEAD[5]").'</h1>'; ?>
Die Ausgabe ist richtig und p-Tags werden gefiltert. Das hilft mir an der Stelle leider nicht weiter, weil ich im Backend die Überschrift nun nicht mehr eingeben kann. Offenbar sorgt der Befehl dafür, dass auch die Tags vom Editor im Adminbereich entfernt werden.

Was kann ich tun? Es muss an sich nur

Code: Alles auswählen

<p></p>
entfernt werden.

Re: P-Tag in CMS_HTMLHEAD

Verfasst: Di 17. Mai 2016, 13:39
von Faar

Code: Alles auswählen

$header = str_replace('<p>', '', $header);
$header =  str_replace('</p>', '', $header);

Re: P-Tag in CMS_HTMLHEAD

Verfasst: Di 17. Mai 2016, 14:39
von ImmoF
Wie kann denn ein einfaches Headline-Elemente mit h1 in Contenido nun aussehen?

Wenn ich str_replace einsetze, funktioniert zwar die Ausgabe im Frontend, im Backend ist der Artikel jedoch nicht mehr aufrufbar.

Re: P-Tag in CMS_HTMLHEAD

Verfasst: Di 17. Mai 2016, 14:47
von homtata
Hallo ImmoF,
McHubi hat dir oben eigentlich den perfekten Code geliefert - damit kannst du den alten 4.8er Code ersetzen. Das von ihm gelieferte Smarty-Template im Modul ebenalls anlegen.
Du musst nur im Modulcode noch folgende Änderung machen:

Code: Alles auswählen

CMS_HTMLHEAD[1]
in

Code: Alles auswählen

CMS_HTMLHEAD[5]
ändern, um auf deine bisherigen Überschriften zugreifen zu können. Der Rest müsste eigentlich klappen.