we:write Dateiname, Title usw.

Fragen zum Erstellen von Templates für webEdition.
wellend
Junior Member
Beiträge: 19
Registriert: Sa 27. Nov 2010, 16:34

we:write Dateiname, Title usw.

Beitragvon wellend » Di 7. Dez 2010, 22:54

Hallo zusammen,

Ich hoffe ihr könnt mir weiterhelfen. Und zwar will ich im Frontend per Formular neue Seiten anlegen. Das funktioniert auch alles wunderbar. Ich hab ein Template mit dem Formular und ein Template, welches die Daten per we:write speichert. Diese neu angelegten Dateien haben leider keinen Titel und auch der Dateiname ist die webEdition-ID. Wie kann ich diese Felder beim speichern setzen? Zum Beispiel soll der Titel gleich der Überschrift sein. Ich habe schon gesehen, dass dies wohl mit Php lösbar ist, jedoch weiß ich nicht genau wie ich es bei we:create einbauen kann.

Vielen Dank im Voraus für eure Hilfe :)
Zuletzt geändert von wellend am Mi 8. Dez 2010, 20:22, insgesamt 2-mal geändert.

Benutzeravatar
haydi
Senior Member
Beiträge: 645
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Hirschberg
Kontaktdaten:

Re: we:create Dateiname, Title usw.

Beitragvon haydi » Mi 8. Dez 2010, 14:10

Oha, scheint wohl ein neues we-Tag zu sein? Steht nicht in der Doku...
Heidi Wetzel
Internet-Applikationen & Webseiten-Erstellung
https://www.heidi-wetzel.de

wellend
Junior Member
Beiträge: 19
Registriert: Sa 27. Nov 2010, 16:34

Re: we:create Dateiname, Title usw.

Beitragvon wellend » Mi 8. Dez 2010, 16:10

oh :D

Da hab ich das wohl mit we:write verwechselt! Sorry!

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: we:write Dateiname, Title usw.

Beitragvon WBTMagnum » Mi 8. Dez 2010, 22:21

Hallo wellend,

Mit we:write erzeugte Dokumente kannst du z.B. so umbenennen:

Code: Alles auswählen

  <we:write type="document" doctype="...." /> 
  <we:ifWritten type="document">
<?php
      $file_id = $GLOBALS['we_document']['we_global_form']->ID;
      $new_filename = "<gewuenschter dokumentname>";
      
      /* Sanitize new filename */
      $suchmuster = array('/ü/','/ä/','/ö/','/Ü/','/Ä/','/Ö/','/ß/','/ /','([\40])','([^a-zA-Z0-9-])','(-{2,})');
      $ersetzungen = array('/ue/','/ae/','/oe/','/Ue/','/Ae/','/Oe/','/ss/','-','-','','-');
      $new_filename = strtolower(preg_replace($suchmuster, $ersetzungen, $new_filename));
      
      /* Change filename. */
      $query="UPDATE tblFile
              SET
                Text = REPLACE(Text, '" . $file_id . "', '" . $new_filename . "'),
                Path = REPLACE(Text, '" . $file_id . "', '" . $new_filename . "'),
                Filename = REPLACE(Text, '" . $file_id . "', '" . $new_filename . "')
              WHERE
                ID='" . $file_id . "'";
      $result = mysql_query($query);
?> 

Den Title des Dokuments kannst du so setzen:

Code: Alles auswählen

<?php
  $_REQUEST['we_ui_we_global_form']['Title'] = "<gewuenschter dokumentitel>";
?> 
  <we:write type="document" doctype="...." /> 

HTH,
Sascha

wellend
Junior Member
Beiträge: 19
Registriert: Sa 27. Nov 2010, 16:34

Re: we:write Dateiname, Title usw.

Beitragvon wellend » Do 9. Dez 2010, 01:55

Hallo Sascha, vielen Dank für deine Antwort!

Leider funktioniert das Ganze bei mir nicht :/ Wie ich das verstanden habe muss der PHP Code so eingefügt werden. Hier ist der Quellcode aus meinem Template, welches das Dokument speichert.

Code: Alles auswählen

<we:include type="template" id="45" />
<we:include type="template" id="46" />

<div id="content">

  <?php $_REQUEST['we_ui_we_global_form']['Title'] = "Test Test"; ?> 

  <we:write type="document" formname="News" publish="true" admin="Administrator" doctype="News - Eintrag" />
      
      <we:ifWritten type="document">
          <div class="hinweis_success">Das Dokument wurde gespeichert.</div>
      </we:ifWritten>

      <we:ifNotWritten type="document">
          <div class="hinweis_fail">Das Dokument wurde nicht gespeichert.</div>
      </we:ifNotWritten>

</div>
Grüße,
David

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: we:write Dateiname, Title usw.

Beitragvon WBTMagnum » Do 9. Dez 2010, 02:03

Leider funktioniert das Ganze bei mir nicht
Kannst du etwas konkreter werden?

LG,
Sascha

Benutzeravatar
haydi
Senior Member
Beiträge: 645
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Hirschberg
Kontaktdaten:

Re: we:write Dateiname, Title usw.

Beitragvon haydi » Do 9. Dez 2010, 09:13

Wow, Sascha, bin begeistert über deine Hilfestellung/Antwort; das lässt ja keine Wünsche mehr übrig.

@David: Der PHP-Code bzgl. Dateiname muss zwischen die Tags <we:ifWritten type="document">[...]</we:ifWritten>
Falls es bei dir nicht funktionieren sollte -> was genau funktioniert denn nicht? Fehlermeldung(en)?
Heidi Wetzel
Internet-Applikationen & Webseiten-Erstellung
https://www.heidi-wetzel.de

Creutzburg
Senior Member
Beiträge: 425
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Dresden
Kontaktdaten:

Re: we:write Dateiname, Title usw.

Beitragvon Creutzburg » Do 9. Dez 2010, 11:07

Allerdings ändert sich bei Saschas Lösung der Name nur in der Datenbank - im Dateisystem müsste er auch noch geändert werden, denn die PHP-Datei wird ja bereits durch das <we:write> mit ihrem automatisch generierten Namen im Dateisystem abgelegt.

Gruß,
Alex
http://www.xport.de – Internet-Agentur für Hotels
http://www.domainpreisvergleich.de – Domain-Preisvergleich inkl. Verfügbarkeits-Check – ist meine Wunschdomain noch frei, und wo registriere ich sie am günstigsten?

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: we:write Dateiname, Title usw.

Beitragvon WBTMagnum » Do 9. Dez 2010, 13:44

Creutzburg hat geschrieben:Allerdings ändert sich bei Saschas Lösung der Name nur in der Datenbank - im Dateisystem müsste er auch noch geändert werden, denn die PHP-Datei wird ja bereits durch das <we:write> mit ihrem automatisch generierten Namen im Dateisystem abgelegt.
Korrekt! Danke für den Hinweis. Das ist bei unseren Lösungen noch nicht notwendig gewesen, da wir die Dokumente nicht gleich veröffentlichen lassen. Das erfolgt dann durch eine RedakteurIn. Wie man einen erneutes write triggern kann, kann ich auf die Schnelle leider auch nicht beantworten. Vielleicht findet sich dazu etwas im Forum.

Und weil es mir gerade wieder einfällt! Seit ein paar Versionen gibt es für <we:write /> ein paar zusätzliche Attribute:
  • name .... Der zu setzende Dokument-/Objektname.
  • onpredefinedname [appendto, infrontof, overwrite]: Um zu bestimmen wie mit vordefinierten Namen umgegangen werden soll.
  • onduplicate [abort, overwrite, increment]: Um zu bestimmen wie mit Duplikaten umgegangen werden soll.
Das ist vermutlich die solidere Lösung für dein Problem. Vorausgesetzt du verwendest eine aktuelle webEdition Verion (> 6.1.0.0 IIRC).


HTH,
Sascha

wellend
Junior Member
Beiträge: 19
Registriert: Sa 27. Nov 2010, 16:34

Re: we:write Dateiname, Title usw.

Beitragvon wellend » Do 9. Dez 2010, 17:24

WBTMagnum hat geschrieben:
Leider funktioniert das Ganze bei mir nicht
Kannst du etwas konkreter werden?

LG,
Sascha
Also er speichert die Datei ganz normal, aber der Titel ändert sich nicht. Ich bekomme auch keine Fehlermeldungen...
Ich habe testweise bei we:write publish="false" gesetzt. Der Titel wurde leider auch nicht gespeichert.

Lässt sich der Titel vielleicht über setElements('Title') schreiben?
Und weil es mir gerade wieder einfällt! Seit ein paar Versionen gibt es für <we:write /> ein paar zusätzliche Attribute:

* name .... Der zu setzende Dokument-/Objektname.
* onpredefinedname [appendto, infrontof, overwrite]: Um zu bestimmen wie mit vordefinierten Namen umgegangen werden soll.
* onduplicate [abort, overwrite, increment]: Um zu bestimmen wie mit Duplikaten umgegangen werden soll.
Die Änderung wäre sehr interessant. Sie wurde aber nur für type="object" vorgenommen :x

Vielen Dank für eure Hilfe!!!
Grüße David

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: we:write Dateiname, Title usw.

Beitragvon WBTMagnum » Do 9. Dez 2010, 21:35

bzgl. dem Dateinamen:
Das kann natürlich sein, dass das nur für Objekte gilt. Hab mir das nur kurz im Source angeschaut und gedacht, dass das Attribut "name" auch bei Dokumenten berücksichtigt wird.

bzgl. dem Dokumenttitel:
Hat dein <we:form /> das name Attribut gesetzt? Falls ja, dann musst du anstelle von "we_ui_we_global_form" den Wert "we_ui_<formname>" verwenden.


HTH,
Sascha

wellend
Junior Member
Beiträge: 19
Registriert: Sa 27. Nov 2010, 16:34

Re: we:write Dateiname, Title usw.

Beitragvon wellend » Fr 10. Dez 2010, 11:07

Wow, perfekt! Jetzt setzt er mir den Titel und nach ein bisschen gebastel ändert er auch den Dateinamen :)

Leider musste ich feststellen, dass nach einer Umbenennung des Dateinamens webEdition etwas verwirrt ist. Öffne ich das Dokument dann im Backend und veröffentliche es noch einmal, dann ist alles wunderbar. Kann man einen Rebuild per Php aufrufen? Taucht dieser Fehler auch bei euch auf?

Danke!
Grüße,
David

wellend
Junior Member
Beiträge: 19
Registriert: Sa 27. Nov 2010, 16:34

Re: we:write Dateiname, Title usw.

Beitragvon wellend » Mo 13. Dez 2010, 14:57

So ich habe es nun endlich hinbekommen :D

Und zwar trigger ich hiermit, dass das gerade erstellte Dokument nocheinmal gespeichert und veröffentlicht wird. Bei der Veröffentlichung beseitigt webEdition sein Linkchaos!

Code: Alles auswählen

<?php
  // PHP-Klassen von webEdition zum Arbeiten mit webEdition-Seiten einbinden
  include_once $_SERVER['DOCUMENT_ROOT'].'/webEdition/we/include/we.inc.php';
  include_once $_SERVER['DOCUMENT_ROOT'].'/webEdition/we/include/we_classes/we_webEditionDocument.inc.php';
 
  // Neues Objekt für eine webEdition-Seite erzeugen
  $doc = new we_webEditionDocument();
 
  // webEdition-Seite mit einer bestimmten ID (hier: 667) initialisieren
  $doc->initByID($fileid);
 
  // webEdition-Seite speichern
  $doc->we_save();
 
  // webEdition-Seite veröffentlichen
  $doc->we_publish();
?>
Vielen Dank für eure Hilfe!!!
Das zeigt wieder einmal, dass die webEdition-Community sehr stark ist!
Grüße David


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 65 Gäste