+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Einzelnen Modulparameter in DB überschreiben

  1. #1
    Neu an Board
    Registriert seit
    27.08.2005
    Ort
    Hannover
    Beiträge
    92
    Bedankte sich
    16
    Erhielt 15 Danksagungen
    in 14 Beiträgen

    Frage Einzelnen Modulparameter in DB überschreiben

    Hallo,

    ich möchte aus einem Modul heraus einen einzelnen Parameter des selben Moduls in der Datenbank überschreiben.

    Wie heißt die Anweisung um in meinem Fall "cache_file_del=1" auf "cache_file_del=0" zu setzen, ohne die anderen Parameter dabei zu löschen?

    $params->set('cache_file_del','0'); verändert ja nichts in der Datenbank und $query = "UPDATE #__modules SET params=REPLACE(params, 'cache_file_del=0') WHERE (id=$modid)"; löscht mir leider die anderen Parameter des betreffenden Moduls in der DB.

    Kann mir jemand weiterhelfen?

  2. #2
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    Alle Parameter holen, verändern und alle wieder speichern.

  3. #3
    Neu an Board
    Registriert seit
    27.08.2005
    Ort
    Hannover
    Beiträge
    92
    Bedankte sich
    16
    Erhielt 15 Danksagungen
    in 14 Beiträgen

    Standard

    Hallo ecomeback,

    danke für Deinen Hinweis, aber genau damit habe ich ja Probleme. Unter J!1.0 lief es bisher problemlos, unter J!1.5 eben nicht. Irgendwie raff ich es nicht.

    Unter J!1.0 hatte ich es so gelöst, auch wenn es wahrscheinlich eleganter geht :
    PHP-Code:
        // ***** Modulparameter aus CFG in Datenbank schreiben
        
    if (file_exists($copyright_file_cfg)) {
            
    $OpenFile fopen($copyright_file_cfg"r");
            if (
    $OpenFile != false) {
                
    $filedaten fread($OpenFile10000);
                
    fclose($OpenFile);
                
    $copyright_file_cfg_array = array();
                
    $copyright_file_cfg_array explode'|'$filedaten );
                
    $dummy "";
                
    $los_params $params->render();
                
    $dummy preg_replace"/cache_file_del=(.*)\n/" "cache_file_del=0\n"$los_params);
                
    $dummy preg_replace"/copyright_file_neu=(.*)\n/" "copyright_file_neu=0\n"$dummy);
                
    $dummy preg_replace"/copyright_width=(.*)\n/" "copyright_width=$copyright_file_cfg_array[0]\n"$dummy);
                
    $dummy preg_replace"/copyright_height=(.*)\n/" "copyright_height=$copyright_file_cfg_array[1]\n"$dummy);
                
    $dummy preg_replace"/templatecss_on=(.*)\n/" "templatecss_on=$copyright_file_cfg_array[2]\n"$dummy);

                
    $zeilenweg str_replace("\n""<b>"$copyright_file_cfg_array[3]); // Zeilenumbruch umwandeln, werden mit strip_tags() anschließend gelöscht
                
    $dummy preg_replace"/copyright_css=(.*)<\/textarea>/" "copyright_css=$zeilenweg</textarea>"$dummy);

                
    $dummy strip_tags($dummy);

                
    $query "UPDATE #__modules SET params='$dummy' WHERE (id=$modid)";
                
    $database->setQuery($query);
                
    $database->query();
            }
        } 
    Wenn ich dort bei J!1.0 unter "$los_params = $params->render();" dann "echo $los_params;" eingebe, erhalte ich die erwarteten params in einer textarea. Unter J!1.5 liefert ...render() aber nix; schreibt das Nix aber sauber in die Parameterliste der DB.

    Vielleicht bin ich ja auch zu blöd zum suchen, aber ich hab mir schon 'nen Wolf gesucht, finde im Netz aber nix, weil wahrscheinlich die wenigsten Modulscripte während der Laufzeit in die Parameterliste schreiben.

    Da ich aber schon einige Useranfragen habe, die das Modul unter J!1.5 ohne Legacy-Aktivierung nutzen möchten, wäre ich für eine hilfreiche Antwort dankbar.

    Lieben Gruß
    Dietmar

  4. #4
    Neu an Board
    Registriert seit
    27.08.2005
    Ort
    Hannover
    Beiträge
    92
    Bedankte sich
    16
    Erhielt 15 Danksagungen
    in 14 Beiträgen

    Lächeln Gelöst

    Hallo,

    Leider kam ja keine weitere Hilfe , so musste ich mir eben einige Stunden ans Bein hängen, um es selbst zu lösen.

    Vielleicht hat ja jemand ein ähnliches Problem und kommt mit dieser Lösung weiter:

    PHP-Code:
        if ($los_cache_file_del == "1" or $copyright_file_neu == "1") {

    $dummy "los_cache_file_on="           .  $params->get('los_cache_file_on') .
             
    "\nlos_cache_file_del="        .  "0" .
             
    "\nlosungspfad="               .  $params->get('losungspfad') .
             
    "\nchar_set="                  .  $params->get('char_set') .
             
    "\ndatum_on="                  .  $params->get('datum_on') .
             
    "\ndatumselect="               .  $params->get('datumselect') .
    cut *
             
    "\npfeil_align="               .  $params->get('pfeil_align') .
             
    "\nlosung_css="                .  str_replace("\n""\r"$params->get('losung_css')) .
             
    "\ncopyright_file_neu="        .  "0" .
             
    "\nyoo_rel_info_on="           .  $params->get('yoo_rel_info_on') .
             
    "\ntemplatecss_on="            .  $params->get('templatecss_on') .
             
    "\ncopyright_css="             .  str_replace("\n""\r"$params->get('copyright_css'));

            
    $dummy strip_tags($dummy);

            
    $db = & JFactory::getDBO(); // J!1.5
            
    $query "UPDATE #__modules SET params='$dummy' WHERE (id=$module->id;)";
            
    $db->setQuery($query);
            
    $db->query();

            echo 
    "<small>Parameter aktualisiert<br></small>\n";

        } 
    * cut * muss natürlich weg; wollte nur nicht über 40 params posten.

    Lieben Gruß
    Dietmar

  5. #5
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    so musste ich mir eben einige Stunden ans Bein hängen, um es selbst zu lösen.
    Was ja auch wohl der richtige Weg ist. Normalerweise arbeitet man erst selbst daran
    und stellt dann im "Notfall" eine Frage. Heißt also, du warst durchaus in der Lage es selbst
    zu lösen, hast aber gedacht mit dem Forum kann man sich Arbeit sparen. Ob das die
    richtige Einstellung dazu ist? Allerdings vielen Dank für die Lösung.

    Allerdings kann ich mit deinem Posting ehrlich gesagt überhaupt nichts anfangen, da ich
    schon den Kontext nicht verstehe bzw. du ihn gar nicht beschreibst.

  6. #6
    Neu an Board
    Registriert seit
    27.08.2005
    Ort
    Hannover
    Beiträge
    92
    Bedankte sich
    16
    Erhielt 15 Danksagungen
    in 14 Beiträgen

    Unglücklich recht heavy

    Hallo ecomeback,

    Zitat Zitat von ecomeback Beitrag anzeigen
    Normalerweise arbeitet man erst selbst daran
    und stellt dann im "Notfall" eine Frage.
    Ehrlich gesagt, bin ich etwas angefressen, was Du mir hier unterstellst. Wenn Du die Uhrzeit meines 1. Postings betrachtest, hättest Du vielleicht daraus schon interpretieren können, dass es sich evtl. um einen Notfall handeln könnte.

    Zitat Zitat von ecomeback Beitrag anzeigen
    ... hast aber gedacht mit dem Forum kann man sich Arbeit sparen. Ob das die richtige Einstellung dazu ist?
    Bevor ich hier im Forum eine Frage stelle, vergehen grundsätzlich erst mal Stunden der Eigeninitiative. Erst wenn ich mit Testen-, Forumssuche-, googlen usw. nicht mehr weiterkomme, melde ich mich hier! Ich bin nun mal kein gelernter Programmierer oder studierter Informatiker, sondern ein "Hobbybastler", der versucht sich die ganze Materie autodidaktisch rein zuziehen, was mir mit meinen 53 Lenzen nicht besonders leicht fällt. Und das, was dann endlich funzt, biete ich auf meiner eigens dafür erstellten HP zum Download an. Da ist die Frage meiner Einstellung zur Arbeit schon recht heavy.

    But by the way: Ist es illegitim, hier Hilfe und Arbeitszeitersparnis zu erwarten?

    Zitat Zitat von ecomeback Beitrag anzeigen
    Allerdings kann ich mit deinem Posting ehrlich gesagt überhaupt nichts anfangen ...
    Dann verstehe ich aber diese Aussage nicht:
    Zitat Zitat von ecomeback Beitrag anzeigen
    Alle Parameter holen, verändern und alle wieder speichern.
    Das war genau die Lösung, die ich suchte. Ein Link zum Nachlesen hätte durchaus gereicht.

    Übrigens ist es mir immer noch ein Rätsel, weshalb "$los_params = $params->render();", unter 1.5 einen leeren String liefert.

    Lieben Gruß
    Dietmar

  7. #7
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    Du darfst das gar nicht als Angriff auf dich sehen, sondern kannst diese Fragen einfach
    allgemein stehen lassen. Mir geht es nur darum, dass man sich mit einem Problem selbst
    beschäftigt. Wenn du das getan hast, ist doch alles in Ordnung und demzufolge musst du
    dir den Schuh auch nicht anziehen. Die Erfahrung im Forum ist halt global eine andere.

    Was deine Frage betrifft, so habe ich schon verstanden, das du Parameter von irgendwo
    wieder in die Datenbank schreiben möchtest, aber es wird überhaupt nicht klar in welchem
    Zusammenhang das passieren soll. Woher kommen die Parameter, um welchen Fall
    geht es, was ist der globale Kontext? Was sind das überhaupt für Parameter?

    Dass man dann natürlich keine konkrete Antwort bekommt, liegt dann fast in der Natur
    der Sache.

  8. #8
    Neu an Board
    Registriert seit
    27.08.2005
    Ort
    Hannover
    Beiträge
    92
    Bedankte sich
    16
    Erhielt 15 Danksagungen
    in 14 Beiträgen

    Standard

    Hallo ecomeback,

    Zitat Zitat von ecomeback Beitrag anzeigen
    Du darfst das gar nicht als Angriff auf dich sehen, sondern kannst diese Fragen einfach allgemein stehen lassen.
    Sorry, aber in Deinem Posting von 7:38 Uhr war NICHTS allgemein! Der Adressat war eindeutig ICH.

    Aber vergessen wir das.

    Lieben Gruß
    Dietmar

  9. #9
    Joomla Guru Avatar von elkuku
    Registriert seit
    14.06.2006
    Ort
    Guayaquil - Südamerika
    Beiträge
    1.689
    Bedankte sich
    74
    Erhielt 517 Danksagungen
    in 397 Beiträgen

    Standard

    Zitat Zitat von DIsenbart Beitrag anzeigen
    ...Leider kam ja keine weitere Hilfe , so musste ich mir eben einige Stunden ans Bein hängen, um es selbst zu lösen. ...
    Im Gegensatz dazu "adressierst" Du nicht eine einzelne Person, sondern alle die hier versuchen ein wenig zu helfen....

    Sei's drum

    Zurück zu den Parametern
    Du bekommst doch im Modul gleich alle Parameter sauber serviert wie sie in der Datenbank stehen.. schon mal ein print_r($params) in einem Modul probiert?
    Da gibt es dann einen String der heisst $params->_raw welcher genau das beinhaltet was du mit den ->get's zusammenbastelst...

    Des weiteren empfehle ich Dir die "Lektüre" der Datei parameter.php im Ordner JROOT/libraries/joomla/html und dort die Funktion render()..
    Auch wenn sie Dir scheinbar nur einen leeren String zurückliefert, könnte sie in Deinem speziellen Fall auch im Frontend nützlich sein (falls ich Dein Problem denn richtig verstehe).

    Wie werden die Parameter eigentlich geändert? einfach so 'hardcoded' ?

    So.. jetzt darfst Du Dir wieder selbst ein paar Stunden 'ans Bein hägen'
    Gruß,
    Nikolai
    Hilf mit: Deutsche Joomla! Dokumentation Help testing: EasyCreator Noch Fragen ? Forum.Joomla-Nafu.de

  10. Erhielt Danksagungen von:


  11. #10
    Neu an Board
    Registriert seit
    27.08.2005
    Ort
    Hannover
    Beiträge
    92
    Bedankte sich
    16
    Erhielt 15 Danksagungen
    in 14 Beiträgen

    Daumen hoch

    Hallo elkuku,

    Zitat Zitat von ;722722
    ... die "Lektüre" der Datei parameter.php ...
    Danke für die Empfehlung, hat schon ein wenig Klick gemacht.

    Zitat Zitat von ;722722
    So.. jetzt darfst Du Dir wieder selbst ein paar Stunden 'ans Bein hägen'
    Brauch ich ja nun nicht mehr; Problem ist ja gelöst.

    Lieben Gruß
    Dietmar

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein