Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 31. Oktober 2013 11:50

rednose
probiert CMS/ms aus
Registriert: 28. März 2011
Beiträge: 63

[GELÖST] section image

ich brauche für eine Seite bei jeder Parent im menu ein eigenes Bild, welche die zugehörige Unterseiten dann auch automatisch haben.
Ich weiss, ich kann dass auch in ein global block erreichen mit eine if abfrage. ( wäre mein notfall lösung)
Einfacher für der Kunde wäre allerdings das gebrauch vom plugin sectionimage, wo mann nur ein Bild in ein Verzeichnis muss hochladen, mit der gleiche Name als der alias vom Parent.

Nun bekomme ich das plugin aber leider nicht ganz zum laufen. Es steht allerdings bei der letzte Version, es war für 1.10.x optimiert und ich habe 1.11.9

hier folgt erst mal der code vom plugin

function smarty_cms_function_sectionimage($params, &$smarty)
{
	$db = cmsms()->GetDb();
	
	$levels = 			isset($params["levels"]) ? $params["levels"] : 1 ;
	$imgpath = 			isset($params["image_path"]) ? $params["image_path"] : '/uploads/images' ;
	$extension = 		isset($params["extension"]) ? $params["extension"] : 'jpg' ;
	$byname = 			isset($params["byname"]) ? $params["byname"] : 1 ;
	$lowercase = 		isset($params["lowercase"]) ? $params["lowercase"] : 1 ;
	$getdim = 			isset($params["get_dimensions"]) ? $params["get_dimensions"] : 0 ;
	$default_image = 	isset($params["default_image"]) ? $params["default_image"] : '' ;
	$url_only = 		isset($params["url_only"]) ? true : false ;
			
	// figure out the details of the current page and where it fits in
	// the content hierarchy
	$curHierarchy = cmsms()->variables['pageinfo']->content_hierarchy.'.';
	$theLevels = explode (".",$curHierarchy);
	$imSpec = $imgpath . "/";
	$depth = substr_count($curHierarchy,'.');

	if ($levels < $depth) {
	
		$depth = $levels;
	}
	
	if ($byname) {
	
		$hierCode = "";
		for ($j=0;$j<$depth;$j++) {
		
			$hierCode .= substr("00000",0,5-strlen($theLevels[$j])) . $theLevels[$j] . ".";
		}
		
		$hierCode = rtrim($hierCode,".");
		
		$query = "SELECT content_alias, content_name FROM " . cms_db_prefix(). "content WHERE hierarchy=?";
		$row = $db->GetRow($query, array($hierCode));
		
		if ($row) {
		
			if ($lowercase) {
			
				$imSpec .= strtolower($row["content_alias"]). ".";
			} else {
			
				$imSpec .= $row["content_alias"]. ".";
				$imText = $row["content_name"];
			}
		}
		
	} else {
	
		for ($j=0;$j<$depth;$j++) {
		
			$imSpec .= $theLevels[$j] . ".";
		}
	}
	
	if(!file_exists($imSpec.$extension)) {
		
		$default_image = explode('.',$default_image);
		$imSpec = $imgpath . "/" . $default_image[0] . ".";
	}

		
	if($getdim) {
	
		list($imWidth,$imHeight) = getimagesize($imSpec.$extension);
		$imDimensions = " width=\"$imWidth\" height=\"$imHeight\"";
	}

	if($url_only) {
	
		return $imSpec.$extension;
	}
		
    return "<img src=\"${imSpec}${extension}\" alt=\"${imText}\" title=\"${imText}\"${imDimensions} />";
}

Im Template: {sectionimage default_image="header.jpg" image_path="/uploads/images/layout"}
Mein default image stellt er da, aber ein image im gleichen Verzeichnis mit genau der name als ein alias funktioniert nicht.


Meine leise Hoffung ist, dass einer vielleicht auf Anhieb sieht, wieso der Code hieroben vielleicht nicht mehr ganz wirkt.

es liabes gruesli aus der schweiz

Offline

#2 31. Oktober 2013 12:36

RafaelCzernek
probiert CMS/ms aus
Registriert: 20. November 2012
Beiträge: 47

Re: [GELÖST] section image

Mal eine andere Idee!? Das ist doch viel zu kompliziert für den Kunden.

So wie ich das verstehe, willst du im Menü, sofern diese "parent" ist ein Bild ausgeben, richtig? Dazu habe ich folgenden Ansatz für dich. Erstell doch einfach in deinem Template einen neuen Inhalts-Block: {content_image block="menu-parent" label="Menü Aktiv" urlonly="true" [...]}. Wenn du das dann noch mit dem Modul GBFilePicker machst, ist das noch einfacher für den Kunden mit dem hochladen.

Dann holst du dir noch das Modul ToolBox und gibst folgendes in deinem Menü-Template ein z. B.:

[...]
{elseif $node->children_exist == true and $node->depth < $number_of_levels and $node->type != 'sectionheader' and $node->type != 'separator'}

<li class="parent">

<a class="parent" href="{$node->url}">
<img src="{tbtools::getPageContent('{$node->alias}','menu-parent','bild')}{eval var=$bild}" />
{$node->menutext}

</a>
[...]

Ich hoffe das ist soweit verständlich, ansonsten Helfe ich dir gerne innerhalb deines System.

Gruß Rafi

Offline

#3 31. Oktober 2013 14:05

rednose
probiert CMS/ms aus
Registriert: 28. März 2011
Beiträge: 63

Re: [GELÖST] section image

ich habe mich leider nicht genug klar ausgedruckt. Es geht nicht um ein Bild im menu selber. Aber alle siblings sollen das gleiche headerbild haben wie der parent.

Nun finde ich aber der Ansazt mit der smarty und toolbox sehr sympatisch und habe schon angefangen damit weiter zu arbeiten.

ich hadere allerdings noch ein wenig mit der Syntax:


{content_image block="menu-parent" label="Bild Menü Aktiv" dir='images/layout' assign="bild"}
{$bild}
{tbtools::getParentAlias("","getParent")}
{if !empty($getParent)}{tbtools::getPageContent('{$getParent}','menu-parent','bild2')}{$bild2}{/if}

teil 1 ist ja io, der parent zeigt ein Bild
Teil 2, wäre mein Idee, wenn ich ein Parent habe, dann hole mir der inhalt von block menu-parent.
Meine Syntax funktioniert noch nicht, ich vermute es hat mir der $alias zu tun {$getParent}?

Offline

#4 31. Oktober 2013 14:23

nockenfell
Moderator
Ort: Gontenschwil, Schweiz
Registriert: 09. November 2010
Beiträge: 2.935
Webseite

Re: [GELÖST] section image

Leider habe ich gerade keine Zeit eine schlaue Demo zu machen. Mit GBFilepicker und ToolBox müsste sich sowas sehr gut umsetzen lassen. So kann auch das Bild einfach gewählt werden.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#5 31. Oktober 2013 21:24

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Re: [GELÖST] section image

Moinsen!

Hab grad leider keine Zeit deinen Code zu analysieren, aber ich kann dir meinen geben, der funzt mit 1.11.9:

[== php ==]
function smarty_cms_function_sectionimage2($params, &$smarty)
{
global $gCms;
$depth = isset($params["depth"]) ? $params["depth"] : 3 ;
$url = isset($params["url"]) ? $params["url"] : false ;
$divid = isset($params["divid"]) ? $params["divid"] : 'header' ;
$dir = isset($params["dir"]) ? $params["dir"] : '/uploads/images/design/bg/' ;
$filename = $dir.'default.jpg';
$servpath = $gCms->config['root_path'];
$classes = array();
$manager =& cmsms()->GetHierarchyManager();
$thisPage = cmsms()->variables['content_id'];
$currentNode = &$manager->sureGetNodeById($thisPage);
while( isset($currentNode) && $currentNode->getLevel() >= 0 )
  {
    $currentContent =& $currentNode->getContent();
    array_unshift($classes, $currentContent->Alias());
    $currentNode =& $currentNode->getParentNode();
  }
for ($i = $depth; $i >= 0; $i--) {
if ($classes[$i]){
   if (file_exists($servpath.$dir.$classes[$i].'.jpg')) {
        $filename = $dir.$classes[$i].'.jpg';
   break;
   }
 }
}
if (!$url) {
echo "<style type='text/css'>div#$divid {background-image: url($filename);}</style>";
}
else
 {
 	echo $filename;
 	}
}

Ich hab das etwas umgebaut - gibt auf wunsch das .jpg aus, ansonsten einen style den man per parameter an ein div binden kann.
_______________________________________
What does this plugin do?

It lets you change background images per page/level.
How do you use it?

Put following code into a template/gcb/page: {sectionimage2}
Optional Parameters

    (otional) dir - This is the directory where the images are located. default is /uploads/images/design/bg/
    (optional) depth - how many levels should be included. default is 3
    (optional) url - output only the image URL
    (optional) divid - the div ID where to change the background. default is "header"
___________________________________________________________

Aber das sollte für deine Fehlersuche unerheblich sein ...

hth,
Alex

Beitrag geändert von faglork (31. Oktober 2013 21:30)

Offline

#6 31. Oktober 2013 21:35

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Re: [GELÖST] section image

RafaelCzernek schrieb:

Mal eine andere Idee!? Das ist doch viel zu kompliziert für den Kunden.

Na, wieviel einfacher solls denn noch werden? Er braucht doch nur ein Bild mit dem Alias der Seite als Dateinamen in ein Verzeichnis hochladen. Und ein default Bild gibts auch.

Das haben bei mir bisher *alle* Kunden kapiert, ohne Ausnahme ...

Servus,
Alex

Offline

#7 04. November 2013 08:46

RafaelCzernek
probiert CMS/ms aus
Registriert: 20. November 2012
Beiträge: 47

Re: [GELÖST] section image

Moinsen,

meine Kunden haben das irgendwie nicht verstanden und deswegen habe ich das so gelöst. wink

Offline

#8 04. November 2013 09:26

rednose
probiert CMS/ms aus
Registriert: 28. März 2011
Beiträge: 63

Re: [GELÖST] section image

Vielen Dank Alex, dass ich deine Code haben durfte. Es funktioniert wunderbar.
Vor allem mit viele Unterseiten, ist das wirklich ein praktisches plugin.

Habe es sogar etwas anpassen können, so dass ich ein Bild ausgebe, statt ein background.

Tolle Wochenstart   smile

Grüesli
Gabrielle

Offline

#9 04. November 2013 10:18

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Re: [GELÖST] section image

rednose schrieb:

Habe es sogar etwas anpassen können, so dass ich ein Bild ausgebe, statt ein background.

url=true hätte auch gereicht ...

BTW, sehe grade dass das ne quick&dirty Version ist ... mit kleinen Änderungen kann man ja ein beliebiges Element angeben, dessen Hintergrund dann ausgetauscht wird ... zb. h2 etc. etc.

Servus,
Alex

Beitrag geändert von faglork (04. November 2013 10:25)

Offline