Kategorie mit Image

Gesperrt
WebBird
Beiträge: 12
Registriert: Di 18. Nov 2003, 11:42
Kontaktdaten:

Kategorie mit Image

Beitrag von WebBird » Do 20. Nov 2003, 18:57

Hallo zusammen,

ich habe die Tabelle cat_lang um ein Feld 'image' erweitert, wo ich einfach die URL eines Bildes ablege. Eine angepaßte Service Navigation benutzt dann dieses Feld und zeigt das Image als Link an. (Ist kein Image vorhanden, wird ein Textlink angezeigt.)

Da es ziemlich lästig ist, die URL immer direkt in die DB einzutragen, wüßte ich gern, welches Script geändert werden müßte, damit man die URL unter Content -> Kategorien eintragen kann. Z. B. einfach als zusätzliches Feld, wenn ich den Namen der Kategorie bearbeite. Eh ich nun lange suche - kann mir das jemand verraten? :)

Gruß, Bianka

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Do 20. Nov 2003, 21:14

Die Datei "include.str_overview.php". Denk aber dran, daß die Änderungen bei einem Upgrade verloren gehen.

WebBird
Beiträge: 12
Registriert: Di 18. Nov 2003, 11:42
Kontaktdaten:

Beitrag von WebBird » Fr 21. Nov 2003, 09:55

Hallo timo,

danke für die Hinweise. :-) Ich werde dran denken. Ist es okay, wenn ich das Ergebnis als Mod poste, wenn ich es am Laufen habe? Grafische Menüs sind ja immer wieder mal ein Thema, vielleicht kann ja auch der eine oder andere was damit anfangen. :wink:

Gruß, Bianka

WebBird
Beiträge: 12
Registriert: Di 18. Nov 2003, 11:42
Kontaktdaten:

Notwendige Änderungen - Kategorien mit Images

Beitrag von WebBird » Fr 21. Nov 2003, 11:37

Hallo zusammen,

also hier nun der Hack.

WICHTIG!!!
Bevor Ihr irgendwas ändert, macht eine Sicherung der Datenbank und eine Sicherungskopie der geänderten Scripten! Und bedenkt, dass bei einem Update von Contenido diese Änderungen verloren gehen!

Alle Angaben sind ohne Gewähr. Bei mir funktioniert es so, aber ich übernehme natürlich keine Garantie. Ihr macht die Änderungen auf eigene Gefahr! Also möglichst nicht gleich in einer Produktivumgebung ausprobieren!

So, jetzt aber zur Sache.

Zunächst muß die Tabelle um ein Feld 'image' erweitert werden. Ich speichere dort die URL einer Grafik.

Code: Alles auswählen

ALTER TABLE <prefix>_cat_lang ADD COLUMN image tinytext NULL;
Über den Spaltentyp kann man sicher diskutieren, für meine Zwecke reicht tinytext, weil ich nur relative Pfade eintrage. (Also z. B. images/bla.gif)

Als nächstes muß man nun das Script includes/include.str_overview.php anpassen.

SUCHE function buildTree (&$rootItem, &$items)

Code: Alles auswählen

		$newItem->custom['idtplcfg'] = $item['idtplcfg'];
		$newItem->custom['public'] = $item['public'];
(Bei mir Zeile 64+)

AFTER ADD

Code: Alles auswählen

// IMAGE HACK
   $newItem->custom['image'] = $item['image'];
// END HACK
SUCHE if ( $perm->have_perm_area_action($area) ) {

Das SQL-Statement wie folgt erweitern:

Code: Alles auswählen

// IMAGE HACK - ADD 'image' IN SELECT
    $sql = "SELECT
                idtree, A.idcat, level, name, parentid, preid, postid, visible, public, idtplcfg, image
            FROM
                ".$cfg["tab"]["cat_tree"]." AS A,
                ".$cfg["tab"]["cat"]." AS B,
                ".$cfg["tab"]["cat_lang"]." AS C
            WHERE
                A.idcat     = B.idcat AND
                B.idcat     = C.idcat AND
                C.idlang    = '".$lang."' AND
                B.idclient  = '".$client."'
            ORDER BY
                idtree";

SUCHE while ($db->next_record())

Code: Alles auswählen

		$entry['public'] = $db->f("public");
		$entry['idtplcfg'] = $db->f("idtplcfg");
AFTER ADD

Code: Alles auswählen

// IMAGE HACK
   $entry['image'] = $db->f("image");
// END HACK
SUCHE

Code: Alles auswählen

} else {

                        $html = '<a name="renamethis">
                                    <table cellspacing="0" cellpaddin="0" border="0">
                                    
                                        <form name="renamecategory" method="post" action="'.$sess->url("main.php?frame=$frame").'">

                                        <input type="hidden" name="contenido" value="'.$sess->id.'" />
                                        <input type="hidden" name="action" value="str_renamecat" />
                                        <input type="hidden" name="idcat" value="'.$idcat.'" />

                                        <tr>
                                            <td class="text_medium"><input class="text_medium" type="text" name="newcategoryname" value="'.$value->name.'"></td>
AFTER ADD

Code: Alles auswählen

<!-- IMAGE HACK -->
                                            <td CLASS="text_medium">Bild: <input class="text_medium" type="text" name="newcatimage" value="'.$value->custom['image'].'"></td>
<!-- END HACK -->
Das war's für diese Datei, speichern und schließen. Vorher Sicherungskopie gemacht??? :wink:

Jetzt muß noch das Script angepaßt werden, das die Änderung in die Datenbank einträgt. Das ist includes/functions.str.php.

SUCHE function strRenameCategory ($idcat, $lang, $newcategoryname) {

ERSETZE DURCH
function strRenameCategory ($idcat, $lang, $newcategoryname, $newcatimage) {

In der Datenbank steht in der Tabelle <prefix>_actions der obige Funktionsaufruf drin. ID 11, Name str_renamecat. Dort muß im Feld 'code' der richtige Aufruf eingetragen werden:

Code: Alles auswählen

strRenameCategory($idcat, $lang, $newcategoryname, $newcatimage);
So, das war's. Jetzt könnt Ihr in Eurer Navigation auf das Feld 'image' zurückgreifen. :-) Will jemand ein Beispiel haben?

Gruß, Bianka

WebBird
Beiträge: 12
Registriert: Di 18. Nov 2003, 11:42
Kontaktdaten:

Beitrag von WebBird » Fr 21. Nov 2003, 11:39

Ups, doch noch was vergessen...

In Script functions.str.php muß natürlich das SQL-Statement erweitert werden:

Code: Alles auswählen

function strRenameCategory ($idcat, $lang, $newcategoryname, $newcatimage) {
        global $db;
        global $cfg;
		// Flag to rebuild the category table
		global $remakeCatTable;
		global $remakeStrTable;
		$remakeCatTable = true;
		$remakeStrTable = true;


        if ($newcategoryname != "") {

// IMAGE HACK
//                $sql = "UPDATE ".$cfg["tab"]["cat_lang"]." SET name='$newcategoryname' WHERE idcat='$idcat' AND idlang='$lang' ";
$sql = "UPDATE ".$cfg["tab"]["cat_lang"]." SET name='$newcategoryname', image='$newcatimage' WHERE idcat='$idcat' AND idlang='$lang' ";
// END HACK
                $db->query($sql);

        } else {
So, das war's jetzt aber. :)

Gruß, Bianka

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 21. Nov 2003, 13:06

ganz verstehe ich diese änderungen nicht... (da nur ein gfx image vorhanden wäre)
ich würd dies über ein template(für den navigationspunkt) lösen mit gfx_std, gfx_over, gfx_down, gfx_activ und das gfx entspricht einfach meinem link namen (lowercase)

hat für mich den vorteil das ich die db struktur nicht ändern muss und ich bei einer gfx navigation sofort sehe welche gfx ich noch erzeugen muss...

ob ich eine grafische navigation haben möchte oder nicht würde ich über CMS_VALUE lösen... (damit bin ich schön variabel)

nur so als denk ansatz gedacht...

WebBird
Beiträge: 12
Registriert: Di 18. Nov 2003, 11:42
Kontaktdaten:

Beitrag von WebBird » Fr 21. Nov 2003, 13:34

Moin,

die Lösung über Templates hat den Nachteil, dass ich beim Benennen der Grafiken eingeschränkt werde. Wenn ich einer Kategorie einfach ein beliebiges Bild zuweisen kann, bin ich viel flexibler.

Die Lösung über das Template hat eine Reihe Nachteile. Heißt meine Kategorie z. B. "Übermorgen will ich noch...", müßte das Bild ja "Übermorgen will ich noch....gif" heißen. :shock:

Gruß, Bianka

mtealc
Beiträge: 22
Registriert: Sa 29. Nov 2003, 03:22
Kontaktdaten:

Beitrag von mtealc » Di 2. Dez 2003, 18:40

hi,

hmmm da sind viel änderungen nötig und bei einem update gugst du in röhre!

lass dir doch über die gd2 bibliothek einfach nen button generieren ist viel einfacher und du hast nicht soviel arbeit!
Kannst dir auch über Php noch nen flash button generien!


Warum umstänlich wenn einfach auch geht!


gruss micha

zwiebel
Beiträge: 67
Registriert: Fr 17. Okt 2003, 20:54
Kontaktdaten:

Beitrag von zwiebel » Do 4. Dez 2003, 19:35

Hallo Mctealc,
kannst du mal, für blöde wie mich erklären, wie du das einbinden würdest?? Ich suche nach der Möglichkeit, die Servicenavigation mit einem Gif oer jpg zu hinterlegen. Bin am verzweifeln

mfg Delicart

WebBird
Beiträge: 12
Registriert: Di 18. Nov 2003, 11:42
Kontaktdaten:

Beitrag von WebBird » Fr 5. Dez 2003, 14:52

Moin,

ich find's nicht umständlich, und die Änderungen sind fix gemacht, wenn sie vernünftig dokumentiert sind. Du hast wohl auch noch nicht das phpBB modifiziert, was? ;)

Gruß, Bianka

mtealc
Beiträge: 22
Registriert: Sa 29. Nov 2003, 03:22
Kontaktdaten:

Beitrag von mtealc » Fr 5. Dez 2003, 17:41

delicart hat geschrieben:Hallo Mctealc,
kannst du mal, für blöde wie mich erklären, wie du das einbinden würdest?? Ich suche nach der Möglichkeit, die Servicenavigation mit einem Gif oer jpg zu hinterlegen. Bin am verzweifeln

mfg Delicart
bei der methode musst du einfach nur dein template bzw dein modul ändern


DEIN TEMPLATE ODER MODUL

Code: Alles auswählen

<!-- BEGIN:BLOCK -->

<tr>
  <td   align="left" class="combgcolor7" ><a class="weiss" href="{HREF}"  target="{TARGET}" >
    <input name="imageField" type="image" src="image.php?name={NAME}" width="16" height="16" border="0"> // hier wird image.php der name für den text übergeben
  </a>  </td>
</tr>
<!-- END:BLOCK -->

code von image.php

Code: Alles auswählen

<?php
header ("Content-type: image/jpeg");
//$name wird vom Template übergeben!

$hex_text="A4162C";
$rgb=HexzuDeC($hex);
$rgbH=HexzuDeC($hex_text);
$rgbs=HexzuDec("000000");
$font="EARTH.TTF";
$bild=$name .'.jpg';

 If(!file_exists($bild))
 {
        $x=150;
        $y=22;
        $image = imagecreate($x,$y);
        $farbe_body=imagecolorallocate($image,$rgb[0],$rgb[1],$rgb[2]);
        $font_c = imagecolorallocate($image,$rgbH[0],$rgbH[1],$rgbH[2]);
        $font_schwarz=imagecolorallocate($image,$rgbs[0],$rgbs[1],$rgbs[2]);

        //Imagettftext($image, 8, 0, 5, 17, $font_schwarz, $font, "$name");
        Imagettftext($image, 10, 0, 4, 16, $font_c, $font, "$name");
        Imagejpeg($image,$bild,100);
        Imagejpeg($image);
}
else
        {
            $im     = imagecreatefromjpeg($bild);
            Imagejpeg($im);
        }

function HexzuDeC ($hex)
{
 $rgb[0]=hexdec(substr($hex,-6,2)) ;
 $rgb[1]=hexdec(substr($hex,-4,2));
 $rgb[2]=hexdec(substr($hex,-2,2));
return $rgb;
}

?>

code is noch nicht 100% da ich gerade die SWF variante teste

gruss micah

Gesperrt