Zum Inhalt springen

xhtml div<->p

Erstellt am 21. April 2005 · 11 Antworten · letzte Antwort am 25. April 2005

Tags: Frage

just2b ·

Hallo,

ich mache meine Seite gerade xhtml trans 1.0 valide und kämpfe mit der ee_blog Extension und ich bekomm 2 Fehler nicht weg.

1. ein normaler content wird in ein <p></p> gewrappt und die ext. stellt nun dort ein div hinein, und das ist nicht valide. Ich hab 2 Möglichkeiten: Bei der ext. beim pi_wrapInBaseClass vorher das </p> und nachher wieder aufmachen

function main($content, $conf) {
			$this->orig_templateCode = $this->cObj->fileResource($conf['templateFile']);
			 
			if (isset($this->piVars['showUid'])) {
				return $this->pi_wrapInBaseClass($this->view('singleView.', $content, $conf));
			} else {
				return $this->pi_wrapInBaseClass($this->view('listView.', $content, $conf));
			}
			 
		}

oder ich bastle an dem Template-Setup/Constants

2. Problem: non SGML character number => Wo/wie beheb ich das? Im RTE händisch nachbessern oder gibts da was anderes?

Template-Constants:

#clear.gif's entfernen 
content.headerSpace = 0|0 
content.space = 0|0
styles.content.typo3_powered.number = 
PAGE_TARGET = _self
content.pageFrameObj = _self
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.nonWrappedTag = 

##### Linksplit
styles.content.imgtext.captionSplit = 1
styles.content.imgtext.comment_CSL-LinkList =
# Bad Massage bei Formularen
styles.content.mailform.badMess = Bitte füllen Sie noch folgende(s) Feld(er) aus:

styles.content.imgtext.maxW = 610
styles.content.imgtext.colSpace = 10
styles.content.imgtext.textMargin = 10
styles.content.imgtext.rowSpace = 10
plugin.meta.author = Georg Ringer
plugin.meta.copyright = Georg Ringer
plugin.meta.email = mail-et-ringerge.org
#content.wrap.header = |
content.wrap.header1 = <span class="ueberschrift">|</span>
content.wrap.header = <br />|
styles.content.bulletlist.altWrap =

Setup:

age = PAGE
page {
	config.doctype = xhtml_trans
	config.xhtml_cleaning = all
	config.language=de
}

page.typeNum = 0
page.config.removeDefaultJS = 1 
page.config.admPanel = 1

page.10 = TEMPLATE
page.10 {
template = FILE
template.file = fileadmin/ringergeorg/template1.htm
workOnSubpart = DOCUMENT_BODY


# Entfernung der CLEAR.gif's
tt_content.image.20.spaceBelowAbove = 0
#tt_content.header.stdWrap.space = 0|0
tt_content.stdWrap.space = 0|0
tt_content.stdWrap.spaceBefore = 0
tt_content.stdWrap.spaceAfter = 10
lib.stdheader.stdWrap.space = 0|0
#tt_content.textpic.20.noStretchAndMarginCells = 1
#tt_content.image.20.noStretchAndMarginCells = 1


# Hier wird das CLEAR.GIF hinter den Überschriften rausgenommen
tt_content.text.20.parseFunc.tags.typohead.stdWrap.space = 0|0

# Folgender Code löscht das Margin 0 0 0 0 aus dem P Tag
tt_content.text.20.parseFunc.nonTypoTagStdWrap.encapsLines.addAttributes {
	P.style=
}

# schwarzer Rahmen weg rund um PopUp-Bilder weg
tt_content.image.20{
	1.imageLinkWrap = 1
	1.imageLinkWrap {
		enable = 1
		title = ?
	bodyTag = <BODY bgColor="white" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
		wrap = <A href="javascript:close();"> | </A>
		JSwindow = 1
		JSwindow.newWindow = 1
		JSwindow.expand = 0,0
	}
}
#tt_content.image.20.1.imageLinkWrap {
#bodyTag = <BODY bgColor="#ffffff" leftmargin="0" topmargin="0"
#marginwidth="0" marginheight="0">
#}

tt_content.image.20.1.imageLinkWrap {
bodyTag = <BODY bgColor="#cccccc" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
width = 960m
title = Bild von www.ringerge.org
JSwindow.expand = 0,20
wrap = <A href="javascript:close();"> | </a><br /><table align="right"><tr><td><font face="verdana,arial,helvetica,sans-serif" size="2" color="#666666">&copy; Georg Ringer 2005 </font></td></tr></table>
}

lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.nonWrappedTag =

# CSS-Angaben für p-tags bereinigen
tt_content.text.20.parseFunc.nonTypoTagStdWrap.encapsLines.addAttributes {
P.style=
PRE.style=;
}

###### <<< CLEANING ENDE >>> ######

# Table-tags korrekt auflösen
tt_content.text.20.parseFunc.externalBlocks=table
tt_content.text.20.parseFunc.externalBlocks.table.stdWrap.HTMLparser=1
tt_content.text.20.parseFunc.externalBlocks.table.stdWrap.HTMLparser.keepNonMatchedTags=1

# Mehrfach Bildbeschriftung/Bild-Link
tt_content.image.20.captionSplit = 1
tt_content.image.20.caption >
tt_content.textpic.20.captionSplit = 1
tt_content.textpic.20.caption >

# Formular: Error & Bestätigung
tt_content.mailform.20.goodmess = Vielen Dank für Ihre Anfrage
tt_content.mailform.20.goodmess = Fehler!!


tt_content.text.20.parseFunc.tags.typolist.default.split.1.wrap = <li>|</li>
tt_content.text.20.parseFunc.tags.typolist.default.wrap = |

# RTE-EINSTELLUNGEN
#no wrapping of RTE lines
tt_content.text.20.parseFunc {
	nonTypoTagStdWrap.encapsLines.nonWrappedTag >
	#nonTypoTagStdWrap.encapsLines.wrapNonWrappedLines = <p>|</p>
nonTypoTagStdWrap.encapsLines.wrapNonWrappedLines = <br />|<br />

}
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class >

###### <<< DIV. EINSTELLUNGEN ENDE >>> ######

Ich sag mal schon herzlichen Dank für jede Hilfe!!!
georg

jenses ·
function main($content, $conf) {
         $this->orig_templateCode = $this->cObj->fileResource($conf['templateFile']);
         
         if (isset($this->piVars['showUid'])) {
            return $this->view('singleView.', $content, $conf);
         } else {
            return $this->view('listView.', $content, $conf);
         }
         
      }
[quote]
Damit ist der DIV-Tag weg.

Dein anderes Problem verstehe ich nicht.

jenses[/quote]
just2b ·

Hallo jenses,

danke für deine bemühungen, aber so funktioniert das leider nicht, denn => Struktur jetzt:

<p> <div 1> div2> ERWEITERUNG </div2> </div1> </p>

der Hauptcontent steht zwischen den p-Tags, was ja nicht valide ist. es nutzt mir leider nichts, das wrapInBaseClass (=div1) wegzulöschen, da von der Ext. noch genug andere divs angelegt werden.. :/

Hier kannst du dir das live anschauen => http://82.165.8.199/typo3cms_georg/homepage/index.php?id=644 und hier der Validator dazu: http://validator.w3.org/check?verbose=1&uri=http%3A//82.165.8.199/typo3cms_georg/homepage/index.php%3Fid%3D644

Problem 2 müsste hier auch ersichtlich sein

DANKE

Unbekannter Benutzer ·

Komme erst jetzt zu antworten.
Der Code sieht ja mittlerweile etwas anders aus.
Meine Codeänderung hätte genau ein DIV entfernt,
aber dadurch wird dein Code nicht valide, der Fehler steckt auch nicht in der Blog-Extension.
In Zeile 75 öffnest du einen p-Tag, ohne ihn wieder zu schließen :

<p><a name="1046"></a><br /><img src="typo3temp/GB/9205e9b793.gif" width="194" height="30" border="0" alt="Anzeige nach Kategorien" title="Anzeige nach Kategorien" />

Danach kommt der Extension-Code mit einem öffnenden Div, klar, daß der Validator da meckert ;-).

jenses

just2b ·
Anonymous schrieb

Komme erst jetzt zu antworten.
Der Code sieht ja mittlerweile etwas anders aus.
Meine Codeänderung hätte genau ein DIV entfernt,
aber dadurch wird dein Code nicht valide, der Fehler steckt auch nicht in der Blog-Extension.
In Zeile 75 öffnest du einen p-Tag, ohne ihn wieder zu schließen :

<p><a name="1046"></a><br /><img src="typo3temp/GB/9205e9b793.gif" width="194" height="30" border="0" alt="Anzeige nach Kategorien" title="Anzeige nach Kategorien" />

Danach kommt der Extension-Code mit einem öffnenden Div, klar, daß der Validator da meckert ;-).

jenses

ja mir ist ja e klar, warum es nicht stimmt.. unklar ist mir "nur" wie ich das ändern kann.. und da gibts eben die 2 varianten:
a) in der ext. vorher das <p> zu schließen
b) template/setup so gestalten, dass kein <p>... nur wie gehts?

jenses ·

Aber laut Quelltext wird das p-tag doch schon vor der Extension gesetzt,
der Fehler muß also woanders stecken.

jenses

just2b ·
jenses schrieb

Aber laut Quelltext wird das p-tag doch schon vor der Extension gesetzt,
der Fehler muß also woanders stecken.

jenses

ja das ist mir schon klar, dass der Fehler vom restlichen Typo kommt... aber beseitigen kann ich die Fehlermeldung auch so, dass ich in der ext. die <p>-Tags einsetze.... nur wie???

jenses ·

Versuch's mal hiermit :

function main($content, $conf) {
         $this->orig_templateCode = $this->cObj->fileResource($conf['templateFile']);
         
         if (isset($this->piVars['showUid'])) {
            return '</p>'.$this->pi_wrapInBaseClass($this->view('singleView.', $content, $conf)).'<p>';
         } else {
            return '</p>'.$this->pi_wrapInBaseClass($this->view('listView.', $content, $conf)).'<p>';
         }
         
      }

jenses

just2b ·

Hallo Jenses,

danke, es hat nun endlich funktioniert!!

hab nicht gewusst, dass es hier noch eine class.tx_eeblog_pi2.php gibt....

lg georg

just2b ·
jenses schrieb

Hast du es mit dem Code von oben hinbekommen ?

der code hat für die class.tx_eeblog_pi2.php gepasst, in der class.tx_eeblog_pi1.php hab ich es dann mit folgendem angepasst:

		function main($content, $conf) {
			$this->orig_templateCode = $this->cObj->fileResource($conf['templateFile']);

			switch((string)$conf['CMD']) {
				case 'singleView':
				list($t) = explode(':', $this->cObj->currentRecord);
				$this->internal['currentTable'] = $t;
				$this->internal['currentRow'] = $this->cObj->data;
				return '</p>'.$this->pi_wrapInBaseClass($this->singleView($content, $conf)).'<p>';
				break;
				default:
				if (strstr($this->cObj->currentRecord, 'tt_content')) {
					$conf['pidList'] = $this->cObj->data['pages'];
					$conf['recursive'] = $this->cObj->data['recursive'];
				}

				return '</p>'.$this->pi_wrapInBaseClass($this->listView($content, $conf)).'<p>';;
				break;
			}
		}