Kategorie mit Image
Kategorie mit Image
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
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
Notwendige Änderungen - Kategorien mit Images
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.
Ü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) (Bei mir Zeile 64+)
AFTER ADD
SUCHE if ( $perm->have_perm_area_action($area) ) {
Das SQL-Statement wie folgt erweitern:
SUCHE while ($db->next_record())
AFTER ADD
SUCHE
AFTER ADD
Das war's für diese Datei, speichern und schließen. Vorher Sicherungskopie gemacht???
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:
So, das war's. Jetzt könnt Ihr in Eurer Navigation auf das Feld 'image' zurückgreifen. Will jemand ein Beispiel haben?
Gruß, Bianka
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;
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'];
AFTER ADD
Code: Alles auswählen
// IMAGE HACK
$newItem->custom['image'] = $item['image'];
// END HACK
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";
Code: Alles auswählen
$entry['public'] = $db->f("public");
$entry['idtplcfg'] = $db->f("idtplcfg");
Code: Alles auswählen
// IMAGE HACK
$entry['image'] = $db->f("image");
// END HACK
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>
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 -->
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);
Gruß, Bianka
Ups, doch noch was vergessen...
In Script functions.str.php muß natürlich das SQL-Statement erweitert werden:
So, das war's jetzt aber.
Gruß, Bianka
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 {
Gruß, Bianka
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...
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...
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.
Gruß, Bianka
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.
Gruß, Bianka
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
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
bei der methode musst du einfach nur dein template bzw dein modul änderndelicart 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
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