ok, ich hab's:
Der Page-Type "Skript" ist nur verfügbar, wenn die Extension "CSS Styled Content" *nicht* aktiv ist.
Sehr dämlich :-(
ok, ich hab's:
Der Page-Type "Skript" ist nur verfügbar, wenn die Extension "CSS Styled Content" *nicht* aktiv ist.
Sehr dämlich :-(
Ich habe mit Hilfe der Tips in diesem Thread meine alten PHP Skripte soweit integriert, die Datenbankabfragen funktionieren, die Ausgabe ist auch ok. Dafür schon mal vielen Dank.
Ich habe aber noch folgendes Problem: Manche dieser Skripte bearbeiten Eingaben des Benutzers weiter, dass heißt, es muss wiederholt aufgerufen werden und Eingaben aus einem Formular auslesen. Leider wird aber immer die Startseite aufgerufen und nicht die Seite mit dem Skript wiederaufgerufen.
Wie kann ich dieses Verhalten verändern?
Vielen Dank schon mal für alle Hinweise
Hendrik
Du kannst die CSS Style content auch aktiviert lassen.
Damit du dann SCRIPT als Contentelement angezeigt bekommst öffne die Datei .. ypo3extcss_styled_contentpageTSconfig.txt und kommentiere folgendes aus "CType.removeItems = script, rte".
Um Benutzereingaben weiter zu nutzen musst du für die Unterseite eine erweitertes Template anlegen.
Da schreibst dann folgendes rein:
tt_content.script = CASE
tt_content.script {
key.field = select_key
registration_form= PHP_SCRIPT_EXT
registration_form.file = fileadmin/deinOrdner/registration_form.php
}
Dann musst du jeweils in deinen Php-Scripten die Pfade anpassen und eine neuen Pagecontent SCRIPT auf der gewünschten Seite erstellen.
Dort im Feld CODE dann registration_form rein und dein Script wird aufgerufen.Wenn du nun von dem auf ein andere PhpSeite willst machst dasselbe wie oben und in dem ersten PhpScript dann:
include('fileadmin/dummy/registration_save.php')
bei mir gehts einwadfrei
Hallo zusammen,
ich würde gerne wissen, ob / wie es möglich ist für ein eigenes PHP-Include daten an die Typo3-URL zu hängen?
Beispiel
http://meinhost.de/index.php?id=1&meinedaten=test
Ich experimentiere zur Zeit mit einem dynamisch per PHP-Include eingefügten "extra" Menü. Die Menülinks sollen jedoch auf die selbe Seiten-ID verlinken, jedoch separate Parameter übermitteln, was bisher nicht klappt.
Zur Zeit verwende ich folgende Funktion in Typoscript
test.userFunc = user_functions->MeinMenu()
[...]
menu {
special = directory
special.value = 63
1 = TMENU
1.itemArrayProcFunc = user_functions->MeinMenu
1.NO = 1
1.NO.linkWrap= |<br>
}
Im Skript kann ich dann auf das Typo3-Menüarray zugreifen und dieses Modifizieren.
Ich habe zwar schon einiges probiert, jedoch noch nichts geschafft, was zum gewünschten Erfolg führt...
Hat jemand eine Idee?
Greets
Gabriel
Vielen Dank für das Tutorial, hab hier echt einen halben Tag verzweifelt gesessen #angry#
Danke 😃
peay schriebSo jetzt bitte nochmal für die die etwas länger brauchen o.O
Zu meinem Root-Template erstelle ich ein extension Template
Sorry,- ich blicks net ?
Ich habe version 3.8.0, und im Template kann ich KEIN "Extension-Template" erstellen.
Wo sollte das denn sein ?
Wieso ist das ausser mir noch niemandem aufgefallen ?
:o
Gruß,
M.Friedrichs
*grmbl*
"tt_content.script"
heisst doch, dass ich diese Erweiterung haben muss, oder ?
- leider ist sie nicht in der Liste der verfügbaren Erweiterungen !
Vom Online-Repository kann ich ebenfalls nichts installieren, jedenfalls habe ich nicht rausfinden können WIE ?
(Google ist mein Freund)
Es ist zwar schön und gut, wenn an manchen Stellen darauf hingewiesen wird, dass Typo3 für Administratoren entwickelt wurde und nicht für Heimanwender, aber es ärgert sehr, dass das Feature "php-Skripte einzubinden" doch schon Vielen gelungen sein muss aber unter Google nichts zu finden ist.
Die Frage wurde schon öfters hier im Forum gestellt und ist eigentlich bei der täglichen Arbeit mit Typo3 unerlässlich.
Gibt es NIEMAND der da mal 1 AUSSAGEKRÄFTIGE und konstruktive Zeile zu posten könnte, die über das obligatorische:" Toll Danke, jetzt hat es bei mir auch geklappt" hinaus geht ??
-> Ich habe Typo3.8 und das Quickstart Paket.
M.Friedrichs
Hallo!
Mein Problem ist noch ein bisschen anders!
Verzeiht bitte, wenn das dumm ist oder so, bin ncoh ziemlicher anfänger!
Ich habe in meinem template php-bereiche, um die Seite an verschiedene Auflösungen anpassen zu können. Es ist also auch ein Formular auf der Seite, was per post je nach der auflösung einen wert wie 1024 sendet. php wertet das im template aus und berechnet so bei fixen angaben für jede auflösung einen anderen wert. wenn ich die php-datei aber als template in typo3 einbinde, dann wird der php-code einfach nicht ausgewertet ... was muss ich machen, damit das funktioniert???
mfg niklas
Ich habe in meinem template php-bereiche
Tja, Schnabel.
Du könntest mir jetzt sagen, wie es geht, denn Du hast es ja scheinbar geschafft, wonach ich frage.
Trotzdem behälst Du es für Dich.
So läufts hier leider.
Aber ich will mal nicht neidisch sein:
Du kannst die Bildschirmauflösung mit einer Extension auslesen. Dann wird es auch keine Probleme mit der Variablenübergabe geben.
Hier-> http://typo3.org/extensions/repository/search/cc_screenres/details/
Der aufmerksame Leser wird jetzt feststellen, dass ich inzwischen herausgefunden wo und wie ich Extensions downloade und installiere. Ich kann Allen versichern, es war niemand aus diesem oder einem anderen Forum. Es war noch nicht mal jemand über das Internet.
Ist das nicht ein Jammer ?
M.Friedrichs
[edit]
Falls Du jetzt doch noch verraten möchtest, wie Du es gemacht hast, wäre das für mich nur interessant, wenn Du mir deinen Marker nennst (wenn es einen gibt) und aus dem Setup-Text die Page-Definition (Kopfbereich), sowie die Passage in der das mit dem php steht. Danke.[/edit]
tut mir leid, du überschätzt mich total!
Ich glaub ich habe mich etwas falsch ausgedrückt mit php-bereiche in meinem template meinte ich die vorlage, aus der das template entstehen soll ... ich meinte damit die html-vorlage (template ;-)) aus der das template per auto-parser etc. entstehen soll, darin hab ich php-bereiche, die ja leider nicht verarbeitet werden, wenn ich die vorlage in typo3 einbinde! Also muss das jetzt irgendwie anders gehen, nur wie?
Oh.
Sorry.
Dann habe ich das falsch aufgefasst.
Es ärgert mich halt sehr, dass PHP-Skripte einbinden
"bei der täglichen Arbeit mit Typo3 unerlässlich"
ist (Original-Ton/ Threadstarter),- es folglich schon sehr Viele geschafft haben müssen,- diese aber nicht über ihre individuellen Lösungen berichten.
Da fragt man sich, warum das hier laut Mund-Propaganda
das beste Typo3-Forum sein soll, wenn hier kein Austausch über "Essentials" stattfindet, sondern die Moderatoren und Skilled-User vor sich hin monologisieren müssen.
Das ist ja wie ein Kaffeekränzchen bei dem nur der Gastgeber redet ?
Da würde ja auch eine FAQ reichen...
Also, nachdem ich jetzt klüger bin (Wiederum durch ein Gespräch im RL 😉 ), kann ich dazu folgendes sagen:
Unter dem o.g. Link findet sich im Repositorium die Extension "PHP_CONTENT" (oder so ähnlich).
Wenn die installiert ist (besser mal im Extensionmanager überprüfen) lässt sich als Seiteninhalt "Plugin" anwählen und im dann im unteren Drop-Down Menü die Option "PHP SKRIPT" anwählen. Daraufhin erhält man eein Eingabe Fenster in dem PHP Code eintragen kann, der dann - hoffentlich- auch geparst/ ausgeführt wird.
Dein Template darf nur HTML enthalten und an den entsprechenden Stellen ein paar spezielle Marker.
Mein Setup sieht folgendermassen aus:
# Setting up 'page' to be the default PAGE object (type=0)
lib.stdheader.10.stdWrap.wrap =
tt_content.stdWrap.dataWrap = <a name="{field:uid}"></a>
page = PAGE
page.typeNum = 0
page.stylesheet = fileadmin/css/example.css
page.bodyTag = <body background="fileadmin/Image_Archive/friedrichs_online/back.gif" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
page.1 = TEMPLATE
page.1.marks.PAGE_UID = TEXT
page.1.marks.PAGE_UID.field = uid
page.1 {
template = FILE
template.file = fileadmin/templates/fo/main.htm
subparts.CONTENT_LEFT < styles.content.getLeft
subparts.CONTENT_RIGHT < styles.content.getRight
subparts.CONTENT_BORDER < styles.content.getBorder
subparts.CONTENT < styles.content.get
}
# Top Navigation
############################################
page.1.marks.NAVIGATION= HMENU
page.1.marks.NAVIGATION.1 = TMENU
page.1.marks.NAVIGATION.1.NO {
allWrap =<td><span class="navtext"> :: |
</td>
}
page.1.marks.NAVIGATION.1.ACT = 1
page.1.marks.NAVIGATION.1.ACT{
allWrap = <td><span class="navtext"> :: |
</td>
}
page.1.marks.NAVIGATION.2 = TMENU
page.1.marks.NAVIGATION.2.NO {
allWrap = <td><span class="navtext"> :: |
</td>
}
page.1.marks.NAVIGATION.2.ACT = 1
page.1.marks.NAVIGATION.2.ACT{
allWrap = <td><span class="navtext"> :: |
</td>
}
# Second Navigation
############################################
page.1.marks.NAVIGATION_2= HMENU
page.1.marks.NAVIGATION_2.entryLevel=1
page.1.marks.NAVIGATION_2.1 = TMENU
page.1.marks.NAVIGATION_2.1.NO {
allWrap =<td><span class="navtext2"> :: |
</td>
}
page.1.marks.NAVIGATION_2.1.ACT = 1
page.1.marks.NAVIGATION_2.1.ACT{
allWrap = <td><span class="navtext2"> :: |
</td>
}
page.1.marks.NAVIGATION_2.2 = TMENU
page.1.marks.NAVIGATION_2.2.NO {
allWrap = <td><span class="navtext2"> :: |
</td>
}
page.1.marks.NAVIGATION_2.2.ACT = 1
page.1.marks.NAVIGATION_2.2.ACT{
allWrap = <td><span class="navtext2"> :: |
</td>
}
# Rootline Menü
page.1.marks.ROOTLINE=HMENU
page.1.marks.ROOTLINE.special=rootline
page.1.marks.ROOTLINE.entryLevel=0
page.1.marks.ROOTLINE.special.range= 0 | -1
page.1.marks.ROOTLINE.1=TMENU
page.1.marks.ROOTLINE.1.NO.allWrap= | / |*| | / |*| |
# Enabling the admin panel for the 'page' PAGE object:
page.config.admPanel=1
# Spam Protection for Email
config {
spamProtectEmailAddresses = 2
spamProtectEmailAddresses_atSubst = (at)
}
# Set up PATH_INFO:
config.simulateStaticDocuments = PATH_INFO
config.simulateStaticDocuments_addTitle = 30
# Don't forget to add CSet Stylesheet for P margins to work properly!
Ich kann nicht beurteilen, ob das alles so richtig ist- aber es funktioniert !
-> Never change a running system, - das gilt natürlich auch hier..
Ich habe meine Grafiken (Background, etc) im fileadmin /Image_Archive/<name_der_seite> abgelegt und das Template im fileadmin/template/<name_der_seite>
, um Überblick zu behalten.
Ausserdem habe ich dort 2 menüs eingebaut (NAVIGATION). Das 2. Menü wird aber erst in der 2. Ebene aktiviert:
page.1.marks.NAVIGATION_2.entryLevel=1
Bei "Include static" habe ich eigentlich nichts, und bei "Include static (from extensions): CSS Styled Content" eingetragen.
Damit sollte bei Dir auch alles klappen.
Für Dich gilt es dann, den im HTML Template enthaltenen PHP-Code als Seiteninhalt in das o.g. Auswahlfenster zu kopieren.
Ich wünschte, so ausführliche Dialoge gäbe es hier öfter, dann käme ich auch schneller voran.
[edit]
Achja:
Den Setup Text könntest Du eigentlich so kopieren, wenn Du noch keine besondern Inhalte in Deiner Seite hast, dann sparst Du Dir viel Arbeit.
Meine Marker sind:
<!-- ###CONTENT_LEFT### -->
<!-- ###CONTENT_RIGHT### -->
<!-- ###CONTENT_BORDER### -->
<!-- ###CONTENT### -->
###NAVIGATION###
###NAVIGATION2###
(Selbsterklärend, oder ?)
[/edit]
Gruß,
M.Friedrichs
erst einmal vielen dank für die sehr ausführliche antwort!
wenn ich das nicht falsch verstanden habe, dann ermöglicht die extension, dass man php als contents einfügen kann.
Allerdings müsste ich dann doch den code bei jeder seite einzelnd einfügen und das ist ja keine zufriedenstellende lösung.
außerdem ist viel vom php in meinem stylesheet ... eigentlich besteht mein stylesheet aus php, ich hab per require style.php in den head eingebunden. in dieser datei wird per echo der stylebereich wiedergegeben und an den stellen, die sich an die auflösung anpassen müssen wird der richtige wert eben berechnet und dann auch per echo ausgegeben.
also ist diese lösung für mich wohl nicht so gut geeignet :-(
aber ich denke, dass das vielen leuten eine hilfe sein wird!
mr.schnabel schriebwenn ich das nicht falsch verstanden habe, dann ermöglicht die extension, dass man php als contents einfügen kann.
Richtig
mr.schnabel schriebAllerdings müsste ich dann doch den code bei jeder seite einzelnd einfügen und das ist ja keine zufriedenstellende lösung.
Nein, da das php durch die extension geparsed wird, kann man komplexe skripte einach mit <? include("DATEI")?> einbinden (www.php.org für Infos und Beispiele zu php-Befehlen).
mr.schnabel schriebaußerdem ist viel vom php in meinem stylesheet ... eigentlich besteht mein stylesheet aus php, ich hab per require style.php in den head eingebunden. in dieser datei wird per echo der stylebereich wiedergegeben und an den stellen, die sich an die auflösung anpassen müssen wird der richtige wert eben berechnet und dann auch per echo ausgegeben.
-Typo3 verwaltet dein Stylesheet für alle/oder spezielle Seiten, wenn du es angibts (Siehe Setup/oben).
-"require" kann mit PHP_CONTENT ebenfalls ausgeführt werden wie <include>.
Wenn das komplette Template und evtl auch die Unterseiten aus reinem php sind:
Warum dann Typo3 ?
Typo3 bietet eine gewisse Sicherheit eben dadurch dass der php-Code nur begrenzt ausgeführt wird (Ganz wichtiges Feature)
Du solltest in Erwägung ziehen, die php-Geschichten "gesichert" in den Seiten einzubinden und dein Template auf Html zu begrenzen. Ansonsten hast Du ja gar keinen Vorteil durch typo3, was möchtest du denn mit typo3 verbessern ?
Gruß,
M.Friedrichs
Ts.
Jetzt habe ich evtl. die Lösung für dich.
Ist aber ungeprüft:
Beim Laden der Seite wird doch die index.php im Hauptverzeichnis angesprochen.
Ich hab jetzt noch nicht reingeguckt aber die wird wohl nur als Vorlage dort liegen und den Rest nachladen.
Wenn du DIE editierst, kannst Du globale Einstellungen mit php vornehmen,- denn DIE wird sicherlich auch geparst/geparsed/wie_auch_immer
Gruß,
M.F.
Hallo mal wieder!
Find ich echt toll, dass du mir so viel hilfst, ich hab schon vor typo3 erfahrung mit vielen foren gemacht und finde auch, dass dieses hier (natürlich nicht auf alle bezogen!!) da nicht so gut abschneidet!
Aber na ja, ich habe das mit der index.php ausprobiert und verstehe kaum ein wort in der datei 😉
Ich hab auch über das, was du mit php meintest nachgedacht und php jetzt vollkommen aus meinem template gestrichen. hab jetzt einfach drei stylesheets, die je nach auflösung kommen sollen.
Ich versuche gerade die "screen resolution detection" extension zum laufen zu bringen ... klappt aber nicht ... ich poste mal den code, vll weiß ja jemand wie das geht:
# Default PAGE object:
page = PAGE
page.typeNum = 0
# page.config.disableAllHeaderCode=1
page.10 =< plugin.tx_automaketemplate_pi1
# Configuring the Auto-Parser:
plugin.tx_automaketemplate_pi1 {
# Read the template file:
content = FILE
content.file = fileadmin/template/main/template1.html
# Here we define which elements in the HTML that
# should be wrapped in subpart-comments:
elements {
BODY.all = 1
BODY.all.subpartMarker = DOCUMENT_BODY
HEAD.all = 1
HEAD.all.subpartMarker = DOCUMENT_HEADER
HEAD.rmTagSections = title
}
# Prefix all relative paths with this value:
relPathPrefix = fileadmin/template/main/
}
# [userFunc= tx_ccscreenres_match(0)]
// screen res detection
page.1 < plugin.tx_ccscreenres_pi1
[userFunc= tx_ccscreenres_match(<0)]
page.stylesheet = fileadmin/template/main/800.css
[userFunc= tx_ccscreenres_match(<900)]
page.stylesheet = fileadmin/template/main/1024.css
[userFunc= tx_ccscreenres_match(<1100)]
page.stylesheet = fileadmin/template/main/1280.css
Alternativ wäre es auch toll, wenn jemand wüsste, wie man je nachdem, welchen wert $_post hat einen anderen stylesheet verwendet!
vielen dank und mfg niklas
Hi Mr.Schnabel.
Leider kann ich Dir nur soweit helfen, wie ich es selber
schon verstanden habe.
Was die index.php betrifft:
Hier werden jede Menge libraries und Code-Schnipsel "ge-includet". Dort etwas mit PHP einzutragen lohnt sich speziell dann, wenn es für alle seiten gelten soll und der PHP-Code innerhalb der Seite verarbeitet werden kann.
Also sowas, wie eine Uhrzeitangabe, eine Counterfunktion oder die versteckte Übergabe von Parametern/ Variablen/ Informationen über den Benutzer..
Das könnte man dann im "versuch-und-Irrtum"-Prinzip irgendwo in die index.php reinsetzen, bis es an der gewünschten Stelle auftaucht.
Die Erweiterung sagt folgendes:
The extension includes JavaScript in the HTML header which call the current or another page with the screen resolution as GET parameter:
www.test.net/index.php?id=21&tx_ccscreenres_pi1[res]=1024
Die extension included Javascript, welches die aktuelle oder eine weitere Seite mit der Bildschirmauflösung als Parameter aufruft.
__________________________________________
Das hier muss in das HTML-Template (ich glaube in den header) , wo es als typoscript auch verarbeitet/geparsed wird:
<!-- This extension is meant to be used inside a TypoScript template. Therefore there's no easy click and run. See in the next section for example code.
detectionType = cooperative-select Here's a TypoScript example for "cooperative-select". -->plugin.tx_ccscreenres_pi1.detectionType = cooperative-select
[userFunc= tx_ccscreenres_match(0)]
// screen res detection
page.100 < plugin.tx_ccscreenres_pi1
[userFunc= tx_ccscreenres_match(>0)]
// template code used for 800 pixel (or smaller) screens
page.100 >
page.100 = TEXT
page.100.value = this is a 800 pixel screen
[userFunc= tx_ccscreenres_match(>800)]
// used for screens bigger than 800 pixel
page.100 >
page.100 = TEXT
page.100.value = this is a 1024 pixel screen, but maybe it's bigger
[global]
Das hier kommt in der Template Sektion in das Constants-Feld:
#At CONSTANT, put a condition like this:
******************************************
screenres = 800
[userFunc= tx_ccscreenres_match(1024)]
screenres = 1024
[global]
******************************************
Und das hier in den Setup-Bereich:
#At SETUP, like this:
******************************************
[treeLevel = 0]
plugin.tx_automaketemplate_pi1.content.file = fileadmin/templates/template_HOME_{$screenres}.htm
[global]
[treeLevel = 1]
plugin.tx_automaketemplate_pi1.content.file = fileadmin/templates/template_SUBHOME_{$screenres}.htm
[global]
Dann musst Du verschiedene Templates erstellen, welche den namen der Auflösung haben:
800.htm; 1152.htm; 1200.htm; etc..
(template_SUBHOME_{$screenres}.htm)
So, you put two sets of templates, at your fileadmin directory, one ending on 800.htm, the other ending on 1024.htm, and TYPO3 will do the work!
Im Beispiel werden die Auflösungen für 800x600 und für 1024x768 gelenkt.
Gruß,
M.Friedrichs
Hey :-)
Um hier nochmal sozusagen "Back to Topic" zu kommen...
Ich habe auch ein Problem und hoffe ihr könnt mir helfen, da mein Freund Google mir leider nix dazu sagen konnte und ich daher hoffe dass das Ganze leicht zu lösen ist:
Ich habe im Moment mein SeitenLayout (ohne Frames) mit TemplaVoila eingebunden, das geht auch ganz toll.
Nun möchte ich habe auf ein paar Seiten meine PHP-Scripts einbinden, diese haben z.B. eine Eingabemaske mit "Submit"-Button, also ein Form. Es soll dann das "Ergebnis" wieder auf der Seite durch das PHP-Script angezeigt werden. Ich verwende im Moment dieses PHP-Parser-Extra, wo man direkt den Code eingeben kann (also kein spezielles "Extension Template" weil ich das so praktischer finde (wenn's denn mal geht *g*)). Dort habe ich einfach mit "include_once" die entspr. PHP-Datei "aufgerufen".
Problem ist nun: Wenn ich als "action" der Form dies hier angebe:
"htmlspecialchars(t3lib_div::getIndpEnv('REQUEST_URI'))" dann komme ich
zwar wieder wunderbar auf die gleiche Seite, aber es wurden keine Variablen übergeben :-(
Wenn ich hingegen wie früher $PHP_SELF eingebe, dann kommt eben nur mein Script und meine "Restseite" aus Typo ist weg...
Also wie schaffe ich es denn dann mit der 1.Lösung, auf die per POST übergebenen Variablen zuzugreifen?
Hier ist einfach mal ein kleines Demo-PHP-File, das nimmt einfach einen Text entgegen und soll den dann wieder ausgeben:
<?php
define('PATH_t3lib', '../../../t3lib/');
require_once(PATH_t3lib.'class.t3lib_div.php');
require_once(PATH_t3lib.'class.t3lib_extmgm.php');
// *******************************
// Set error reporting
// *******************************
error_reporting (E_ALL ^ E_NOTICE);
if ($_POST['textErg'] != "")
printf("Text war: ".$_POST['textErg']);
else
{
$actionThing = htmlspecialchars(t3lib_div::getIndpEnv('REQUEST_URI'));
printf("
<form name="\" form1="" method="\" post="" action="\" actionthing="">
<p> <b>Text:<input type="\" text="" name="\" texterg="" maxlength="\" 10="" size="\" />
<input type="\" submit="" name="\" button_send="" /></b> </p>
</form>
");
}
?>
Also wie Ihr seht, ein QuickAndDirty Beispiel...
Irgendwie muss des doch gehen oder?
Ich bin für jede Hilfe dankbar!!!
Danke schonmal im Vorraus für Eure Hilfe und Mühe!
Ganz liebe Grüße,
Chris[/b]
Hallo,
habe alles gelesen und auch alles überblättert.
Hier ein Ansatz, der Dich vielleicht weiter bringt.
http://hdh-soft.de/cms/index.php?id=73
Gruß
Hille
Hey, Hille!
Super, vielen Dank für den Link ich werde das sofort austesten :p
Liebe Grüße,
Chris