+ Antworten
Ergebnis 1 bis 7 von 7

Thema: Joomla 1.6b4 - Kategorien über Datenbank anlegen

  1. #1
    Neu an Board Avatar von WorldRacer
    Registriert seit
    08.07.2010
    Beiträge
    51
    Bedankte sich
    10
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Daumen hoch Joomla 1.6b4 - Kategorien über Datenbank anlegen

    Hallo

    erstmal dickes Lob an die Entwickler! Ist richtig gut geworden bis jetzt, die 1.6er.

    Folgendes Szenario liegt vor: Habe meine Eltern überzeugt, auf Joomla umzuziehen, sobald 1.6 draußen ist. Nun versuche ich schonmal Import-Skripte zu schreiben, die dann nurnoch mit einem Feinschliff zu versehen sind, sobald 1.6 stable ist.

    Als allererstes hab ich mich an den Kategorien versucht. Importiert habe ich die soweit schon. Pfad wird generiert (d.h. Umlaute aus dem Titel entfernt, Leerzeichen durch "-" ersetzt) der Alias gesetzt, alles in Ordnung. Dann habe ich gesehen, dass ich die Felder rgt und lft in die Datenbank eingeschlichen haben. Was sind das für Felder?!

    Ich weiss, dass so lang, wie die Kategorie keine Unterkategorien hat, lft gleich dem letzten rgt +1 ist und rgt = lft+1 ist. Ausserdem fängt der lft des ersten Elements bei 1 an (ROOT ausgenommen) und der rgt von ROOT dem rgt+1 der letzten Kategorie in der Tabelle entspricht. Warum?! Keine Ahnung, das ist die erste Frage an euch!

    Beispiel:

    ......id......|......parent.......|......titel.... ..|......lft......|......rgt......
    ......0.......|.........0......|......ROOT....|... .0.........|......5......
    ......1.......|......0.......|......KAT 1....|....1.........|......2......
    ......2.......|.....0.......|......KAT 2....|....3.........|......4......


    Dann zweite Frage:

    Was hat es mit der Tabelle jos_assets auf sich? ich bin hingegangen und hab für jede Kategorie ein Query in etwa dieser Form ausgeführt:

    Code:
    INSERT INTO `beta2joom`.`jos_assets` (
    `id` ,
    `parent_id` ,
    `lft` ,
    `rgt` ,
    `level` ,
    `name` ,
    `title` ,
    `rules`
    )
    VALUES (
    '31', '8', '81', '82', '2', 'com_content.category.16', 'Agatha Christie', '{"core.create":[],"core.delete":[],"core.edit":[],"core.edit.state":[]}'
    )
    Klar, jedes mal die Kategorie-ID geändert, aber 'rules' und soweiter bleiben ja gleich.
    mit rgt und lft bin ich genauso verfahren wie bei den categories auch.

    Dritte und letzte Frage:
    Wenn ich das so gemacht habe und einer der importierten Kategorien ein Content-Item zugewiesen habe, bekam ich folgenden Error:

    Fatal error: Call to a member function getPath() on a non-object in /var/www/vhosts/joombeta2.de/httpdocs/libraries/joomla/application/categories.php on line 398
    Wenn ich allerdings eine Kategorie über das Interface angelegt habe, ging alles glatt.

    Danke im Vorraus für eure Unterstützung!

    Marco
    Geändert von WorldRacer (08.07.2010 um 16:23 Uhr)

  2. #2
    Joomla! Core Developer
    Registriert seit
    30.08.2006
    Beiträge
    160
    Bedankte sich
    8
    Erhielt 106 Danksagungen
    in 53 Beiträgen

    Standard

    Die Kategorie Tabelle ist nach dem nested Set model geschrieben. Einfach mal googlen. Der asset table ist für die Rechteverwaltung und wahrscheinlich musst du dort nichtmal zwangsläufig etwas eintragen. Die Fehlermeldung resultiert aus defekten Daten in der Kategorien Tabelle.
    Ex-Joomla! Core Developer

    Ich gebe keinen Individualsupport. Mails, PMs, etc. mit Supportanfragen werden ignoriert.

  3. Erhielt Danksagungen von:


  4. #3
    Hat hier eine Zweitwohnung Avatar von progandy
    Registriert seit
    25.06.2007
    Beiträge
    1.932
    Bedankte sich
    13
    Erhielt 634 Danksagungen
    in 571 Beiträgen

    Standard

    Kannst du nicht versuchen, die Datenbank-Models aus den Joomla-Komponenten anzusprechen? Dann musst du sie nicht nachprogrammieren.
    Du musst den Importer dann aber als Joomla-Komponente erstellen oder mit einer PHP-include Komponente ausführen.
    (Die Models findest du in \administrator\components\com_categories\models)
    Geändert von progandy (08.07.2010 um 15:04 Uhr)
    Suche und FAQ helfen bei Problemen oft weiter!

  5. Erhielt Danksagungen von:


  6. #4
    Neu an Board Avatar von WorldRacer
    Registriert seit
    08.07.2010
    Beiträge
    51
    Bedankte sich
    10
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    Hey zusammen,

    danke schonmal für eure Antworten. Das mit dem nested Set model hatte ich ja schon oben beschrieben Jetzt kenn ich wenigstens den Begriff für das System *g*.

    @propagandy: Würde ich gern machen, nur hab ich bis jetzt nicht den Durchblick, was das category-model angeht, weil ich noch die Stelle suche, wo der Aufbau des Parameters $data beschrieben wird.

    Code:
    		//[administrator/components/com_categories/models/category.php:253ff]
    
    	/**
    	 * Method to save the form data.
    	 *
    	 * @param	array	The form data.
    	 * @return	boolean	True on success.
    	 * @since	1.6
    	 */
    	public function save($data)
    	{
    		// [...]
    	}
    //edit: Steht die $data-Beschreibung zufällig in administrator/components/com_categories/models/forms/category.xml ??
    Grüße

    Marco
    Geändert von WorldRacer (08.07.2010 um 15:42 Uhr)

  7. #5
    Hat hier eine Zweitwohnung Avatar von progandy
    Registriert seit
    25.06.2007
    Beiträge
    1.932
    Bedankte sich
    13
    Erhielt 634 Danksagungen
    in 571 Beiträgen

    Standard

    Ich denke, $data sind die POST-Daten, die über das Erstellen/Bearbeiten-Formular abgeschickt werden. Dieses Formular wird vermutlich aus der forms/category.xml erstellt.
    So ungefähr wird es wohl sein, eventuell sind noch ein paar umwandlungen drin. Schau dir bitte auch mal die Funktionen add(), edit() und save() in dieser Datei an:
    administrator\components\com_categories\controller s\category.php
    Weiter bin ich auch noch nicht durchgestiegen.
    Suche und FAQ helfen bei Problemen oft weiter!

  8. Erhielt Danksagungen von:


  9. #6
    Neu an Board Avatar von WorldRacer
    Registriert seit
    08.07.2010
    Beiträge
    51
    Bedankte sich
    10
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    Hi,

    jo, danke, jetzt versteh ich so langsam den Sinn hinter den Klassen.

    Ich werd mich mal versuchen, da was zu basteln.

  10. #7
    Neu an Board Avatar von WorldRacer
    Registriert seit
    08.07.2010
    Beiträge
    51
    Bedankte sich
    10
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    Omfg.....Ich habs rausgefunden. Hab ja oben schön beschrieben, dass der rgt von ROOT hinterher der rgt vom letzten Element +1 ist. Aber aktualisiert hab ichs in der Datenbank nicht. Jetzt läufts ohne den Error.
    Geändert von WorldRacer (08.07.2010 um 16:14 Uhr)

+ Antworten

Lesezeichen

Berechtigungen

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