Mit EFG tl_news aus dem FE verwalten
Hallo zusammen,
ich schreibe mit dem EFG Daten in die tl_news (db-select für die tl_news_archive.id als pid)
Das funktioniert alles auch soweit und ich kriege die Daten bis ins BE an die richtige Stelle. Sinngemäß sollte erst aus dem BE nach einer Benachrichtigung via mail an den Admin der Eintrag veröffentlicht werden. Auch das funktioniert.
Folgendes Problem tritt aber dann auf:
Anstatt der tatsächlichen url z.B. your-domain.de/news/items/test.html
wird für Überschrift und "weiterlesen"-Link die Url der aktuellen Seite generiert (also wenn sich die newslist auf der Seite your-domain.de/startseite.html befindet, so erscheint auch dies im o.g. Link)
ich habe mir die tl_news und die tl_news_archive angesehen und keinen Unterschied zu den jeweils anderen Feldern entdeckt welche direkt über das BE eingetragen wurden (hier funktionierts)
Ich bin bereits einige Zeit auf der Suche im Forum und habe hier noch nicht wirklich einen Stichpunkt gefunden der mir weiterhilft.
Für jede Hilfe wäre ich echt dankbar
hab noch was ähnliches gefunden - hilft aber nicht weiter
https://community.contao.org/de/showthread.php?t=2027?
Allerdings gibt es da nicht wirklich Antworten auf die Frage...
Wäre also dennoch für jede Hilfe Dankbar
Schade hat mich nicht weiter gebracht...
:( - Hat jemand eine Idee?...
Keine Lösung im Forum? Bitte um kommerzielle Hilfe
Hallo, da es vermutlich im Forum keine Lösung für mein Problem gibt, bitte ich um ein Angebot für die kommerzielle (bezahlte) Lösung des Problems - wie man es laut Forenregeln ja anfordern kann...
GELÖST >>> Feld Source muß mit übergeben werden.
Alles klar nach einiger Zeit hat es sich nun geklärt:
Datenbankfeld Source muss als verstecktes Feld mit dem Wert default übergeben werden...
Liste der Anhänge anzeigen (Anzahl: 5)
Hier die Lösung
1.) Erstelle mit dem EFG ein neues Formular mit folgenden Eigenschaften:
a)Formulardaten speichern: Zieltabelle: tl_news
b)Übertragungsmethode: Post
2.) Erstelle folgende Felder in diesem Formular:
pid, source, headline, subheadline, text (Detailbeschreibung bitte aus den beigefügten Bildern entnehmen)
https://community.contao.org/de/atta...1&d=1265569108
https://community.contao.org/de/atta...1&d=1265569108
https://community.contao.org/de/atta...1&d=1265569108
https://community.contao.org/de/atta...1&d=1265569108
https://community.contao.org/de/atta...1&d=1265569108
Du kannst das ganze dann je nach installierter Erweiterung und den übrigen Feldern in der tl_news noch ausbauen (alias / twitter / dw_keywords / dw_description usw.+ Session-Formulare und Bestätigungs-emails etc.)
>>> schau Dir hierzu zum einen einfach mal in der Datenbank die Feldnamen in der tl_news an und zum Andern die von Dir verwendeten Erweiterungen...
>>> Achte darauf, dass das Feld Source auch mit abgespeichert wird
3.) Beachte, dass der Benutzer unbedingt angemeldet sein sollte um einen Zugriff auf dieses Formular zu haben!
4.) Wenn Du o.G. Formular abspeicherst, hast Du es dann im Backend und du wirst es unter dem Nachrichtenarchiv finden welches mit der pid ausgewählt wurde.
5.) Nun kannst Du den Eintrag bequem aus dem BE veröffentlichen...
6.) Achte darauf, dass Du im BE auf alle Fälle das richtige Datum hinzufügst sonst bist Du im Jahr 1970 :)
Ich hoffe das hilft Dir weiter...
Gruß Wilder Waidla
Problem mit date in Mysql
Danke vielmals für die Anleitung!!! Super!
Ich habe nach diesem Beispiel ein Formular zum erstellen eines Events gemacht, was auch funktioniert.
Nun will ich, aber dass der neue Event sofort zu sehen ist. Dazu habe ich ein Verstecktes Feld published mit dem Wert 1 hinzugefügt, somit ist es auch veröffentlicht.
Mein Problem ist es nun, ein Start und Enddatum hinzuzufügen!
Ich hab mal in der Datenbank nachgeschaut, da wird ein Datum z.B. 12.04.2010 als "1271030400" abgespeichert!
Nun meine Frage, wie krieg ich es hin, dass ich von einem normalen datum, welches mit der Erweiterung Calendar Field (also z.B. 2010-04-12) eingegeben wird zu diesem Zahlenwert???
Ist das irgendwie möglich?
--- Bemerkung----
Wenn ich mit ein Feld Kalenderfield erstelle und dieses als startDate abspeichere, wird der Wert "2010-04-12" in die Mysql Datenbank geschrieben und natürlich nicht im Kalender angezeigt (Da falsches Datum).
Lustigerweise ist es so, dass wenn ich anschliessend den Event im Backend öffne werden die daten normal in die Felder übernommen (startDate "2010-04-12") und wenn ich den Event dann neu speichere, werden sie als "1271030400" in die Mysql Datenbank geschrieben!
Da ich auch nach längerem Suchen im Forum auf nichts gestossen bin hoffe ich hier auf eine Antwort zu treffen.
Grüsse Unearth
timestamp über insert-tag
Ich bin zwar derzeit nicht mehr so in der Materie was den efg betrifft - aber ich glaube über den Inserttag kriegt man das Datum/den timestamp in die Session eines Formulars.
Vielleicht hilft es weiter...
Liste der Anhänge anzeigen (Anzahl: 2)
Feldname?
Hallo Maik,
ich verwende das Ganze wie gesagt bei den News - aber normal müsse das ja auch bei den Events klappen.
Ich schreib mal kurz meine Vorgehensweise bezgl. des tstamp - evtl. hilft Dir das:
1. Ich erstelle ein verstecktes Feld mit dem Feldnamen "stamp" und dem Standard-Wert (in meinem Falle hänge ich an den Standard-Wert noch dran)
2. Ich hole mir im nächsten Formular unter einem beliebigen Feldnamen (in meinem Fall "alias") den Wert in Form von Ich hoffe das hilft Gruß
Wilder Waidla
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo Andreas,
vorneweg: ich verwende das auch in den News ...
Ich hänge hier mal mein Formular dran:
Anhang 1674
Anhang 1673
Ich habe das gerade nochmals versucht, als Erstellungsdatum gibt er mir den 13.12.1901 20:45 aus.
Hier das Ergebnis im Nachrichten-Archiv:
Anhang 1675
Liste der Anhänge anzeigen (Anzahl: 1)
Problem mit date in Mysql
Hi Leute
Danke für die vielen Antworten..
doch ich hab irgendwie das Gefühl, dass vielleicht meine Frage zu ungenau war:
Also ist es möglich mit dem Efg ein Feld zu haben, in das ein Datum im Format 2010-04-03 eingegeben wird und dieses dann im Format 1271030400 gespeichert wird?
(Also quasi, ein Feld mit derselben funktion wie das Feld Startdatum beim erstellen von Events im Backend)
Falls ja wie?
Sorry, aber ich habe noch nicht viel mit php mysql und typolight am hut, ist meine erste Website mit typolight also die Antworten möglichst einfach und konkret?!
Grüsse Unearth
Im Anhang, der Hauptteil meines Formulars...
Problem mit date in Mysql
Hi Torben,
danke für die Antwort.
Also ich versuche im Moment, die Extension [calendarfield] Kalender-Feld zu verändern.
Durch dieses Feld versuche ich nämlich auch, das Datum ind die Mysql Datenbank zu schreiben!
Wäre das eine Gute Idee:
Der PHP Code zum Feld sieht wiefolgt aus:
PHP-Code:
class FormCalendarField extends FormTextField
{
public function __construct($arrAttributes=false)
{
parent::__construct($arrAttributes);
$this->rgxp = 'date';
$this->maxlength = '10';
}
public function generate()
{
$strBuffer = parent::generate();
if ($this->readonly || $this->disabled)
return $strBuffer;
if (version_compare(VERSION.'.'.BUILD, '2.7.6', '>'))
{
$GLOBALS['TL_CSS'][] = 'plugins/calendar/css/calendar.css';
$GLOBALS['TL_JAVASCRIPT'][] = 'plugins/calendar/js/calendar.js';
}
else
{
$GLOBALS['TL_CSS'][] = 'plugins/calendar/calendar.css';
$GLOBALS['TL_JAVASCRIPT'][] = 'plugins/calendar/calendar.js';
}
$dateFormat = strlen($this->dateFormat) ? $this->dateFormat : $GLOBALS['TL_CONFIG']['dateFormat'];
$dateDirection = strlen($this->dateDirection) ? $this->dateDirection : '0';
$strBuffer .= "<script type=\"text/javascript\"><!--//--><![CDATA[//><!--
window.addEvent('" . (strlen($this->jsevent) ? $this->jsevent : 'domready') . "', function() { new Calendar({ ctrl_" . $this->strId . ": '" . $dateFormat . "' }, { navigation: 2, days: ['" . implode("','", $GLOBALS['TL_LANG']['DAYS']) . "'], months: ['" . implode("','", $GLOBALS['TL_LANG']['MONTHS']) . "'], offset: ". intval($GLOBALS['TL_LANG']['MSC']['weekOffset']) . ", titleFormat: '" . $GLOBALS['TL_LANG']['MSC']['titleFormat'] . "', direction: " . $dateDirection . " }); });
//--><!]]></script>";
return $strBuffer;
}
public function validator($varInput)
{
if (strlen($this->dateFormat))
{
// Disable regular date validation
$this->rgxp = '';
if (strlen($varInput) && !preg_match('/'. $this->getRegexp($this->dateFormat) .'/i', $varInput))
{
$objDate = new Date();
$this->addError(sprintf($GLOBALS['TL_LANG']['ERR']['date'], $objDate->getInputFormat($this->dateFormat)));
}
}
return parent::validator($varInput);
}
/**
* Return a regular expression that matches a particular date format
* @param string
* @param string
* @return string
*/
private function getRegexp($strFormat=false, $strRegexpSyntax='perl')
{
if (!$strFormat)
{
$strFormat = $GLOBALS['TL_CONFIG']['dateFormat'];
}
if (preg_match('/[BbCcDEeFfIJKkLlMNOoPpQqRrSTtUuVvWwXxZz]+/', $strFormat))
{
throw new Exception(sprintf('Invalid date format "%s"', $strFormat));
}
$arrRegexp = array();
$arrCharacters = str_split($strFormat);
foreach ($arrCharacters as $strCharacter)
{
switch ($strCharacter)
{
// Patch day: allow 01 - 31
case 'd':
$arrRegexp[$strFormat]['perl'] .= '(0[1-9]|[12][0-9]|3[01])';
$arrRegexp[$strFormat]['posix'] .= '(0[1-9]|[12][0-9]|3[01])';
break;
// Patch month: allow 01 - 12
case 'm':
$arrRegexp[$strFormat]['perl'] .= '(0[1-9]|1[012])';
$arrRegexp[$strFormat]['posix'] .= '(0[1-9]|1[012])';
break;
// Patch year: allow 1900 - 2099
case 'Y':
$arrRegexp[$strFormat]['perl'] .= '(19|20)[0-9]{2,2}';
$arrRegexp[$strFormat]['posix'] .= '(19|20)[[:digit:]]{2}';
break;
case 'a':
case 'A':
$arrRegexp[$strFormat]['perl'] .= '[apmAPM]{2,2}';
$arrRegexp[$strFormat]['posix'] .= '[apmAPM]{2}';
break;
case 'y':
case 'h':
case 'H':
case 'i':
case 's':
$arrRegexp[$strFormat]['perl'] .= '[0-9]{2,2}';
$arrRegexp[$strFormat]['posix'] .= '[[:digit:]]{2}';
break;
case 'j':
case 'n':
case 'g':
case 'G':
$arrRegexp[$strFormat]['perl'] .= '[0-9]{1,2}';
$arrRegexp[$strFormat]['posix'] .= '[[:digit:]]{1,2}';
break;
default:
$arrRegexp[$strFormat]['perl'] .= preg_quote($strCharacter, '/');
$arrRegexp[$strFormat]['posix'] .= preg_quote($strCharacter, '/');
break;
}
}
return $arrRegexp[$strFormat][$strRegexpSyntax];
}
}
Ok, ich bin mal ganz ehrlich, ich kann kein PHP! Däfür aber etwas C++, womit ich glaube zu verstehen, was in etwa gemacht wird. Damit rate ich mal, dass das Datum mit diesem Code abgespeichert und formatiert wird:
PHP-Code:
public function __construct($arrAttributes=false)
{
parent::__construct($arrAttributes);
$this->rgxp = 'date';
$this->maxlength = '10';
}
sprich ich müsste das $this->rgxp = 'date'; abändern?!
Bin ich da auf dem Richtigen Weg oder liege ich völlig falsch?
Grüsse Unearth