Page 1 of 1

Breadcrumbs mit TruetypeText möglich?

Posted: Tue Jun 23, 2009 3:59 pm
by mic
Hallo,
ich habe BreadCrumps in ein benutzer definiertes Tag gewandelt und möchte, dass die texte mit dem TTT gestyled werden.

Ist das überhaupt möglich, einen Smarty-tag im PHP-Code einzubinden?

Es müsste an dieser stelle etwa so aussehen (funktioniert aber nicht):

Code: Select all

$trail .= {cms_module module='TruetypeText' style='crumps-1' text=$onecontent->MenuText()};
Danke für einen Hinweis!
mic

Re: Breadcrumbs mit TruetypeText möglich?

Posted: Wed Jun 24, 2009 12:39 pm
by NaN
Ein Modul in einem UDT aufrufen?
Geht definitiv nicht mit Smarty.
Da muss man komplett mit PHP arbeiten.
Und dazu muss man die API von CMSms kennen und wissen wie das Modul TruetypeText arbeitet.

Modul API gibts hier: http://www.cmsmadesimple.org/apidoc/ .

Und zum TruetypeText Modul muss man den Quellcode studieren (oder mit Hilfe von phpDocumentor oder Doxygen von seiner CMS Installation selber die API Doku erstellen, da hat man dann alle installierten Module mit in der Doku).

Bsp (ist nur ein Auszug; musst Du noch an Deinen UDT anpassen; habs demnach auch noch nicht ausprobiert):

Code: Select all


// prüfen ob das TruetypeText Modul installiert ist:
if( isset( $gCms->modules['TruetypeText'] ) && isset( $gCms->modules['TruetypeText']['object'] ) ) {

   // instanz vom TruetypeText Modul erzeugen:
   $truetypeText = $gCms->modules['TruetypeText']['object'];

   // den rest habe ich aus der action.default.php des TTT Moduls:
   include_once cms_join_path( $truetypeText->GetModulePath(), 'class.style.php' );

   // Deine Parameter:
   $style = 'crumps-1'; 
   $text = $onecontent->MenuText();
   
   $TTTstyle = new TTTstyle();
   if (is_numeric($style))
      $TTTstyle->loaddb($style);
   else
      $TTTstyle->loaddbbyname($style);

   $trail .= $TTTstyle->getImage($text);

}
else {
   // wenn kein TTT modul gefunden wird, wird der reine Text verwendet:
   $trail .= $text;
}

Hoffe das bringt Dich weiter.
Wenn es funktioniert, wäre es schön, wenn Du Deinen modifizierten Breadcrumbs-Tag hier bereitstellen würdest:

http://wiki.cmsmadesimple.org/index.php ... _tags_here

Kann mir vorstellen, dass da noch andere Interesse an TrueType-Breadcrumbs haben.

Re: Breadcrumbs mit TruetypeText möglich?

Posted: Wed Jun 24, 2009 8:53 pm
by cyberman
Hast du schon etwas in dieser Art probiert?

Code: Select all

{capture assign='nav'}{breadcrumbs ...}{/capture}
{cms_module module="truetypetext" style="Text" text=$nav}
http://smarty.net/manual/de/language.bu ... on.capture

Re: Breadcrumbs mit TruetypeText möglich?

Posted: Thu Jun 25, 2009 5:56 am
by mic
Danke für die Antworten. Habe in der Zwischenzeit etwas hingekriegt, das aber die Smarty-Tags im Template hatte (also unschön). Der Ansatz von NaN ist das, was ich suche. Die Idee von Cyberman gibt auch die Links mit (http://...).

Sobald ich mein Teil fertig habe, poste ich es hier.

Re: Breadcrumbs mit TruetypeText möglich?

Posted: Thu Jun 25, 2009 8:17 am
by mic
so, hier ist es. schön programmiert wohl eher nicht, denn die funktion zum bildtext erstellen könnte ausgelagert werden.

für meine anwendung ist der erste eintrag in einer andern schrift wie die darauf folgenden. sobald die website zeigbar ist, poste ich sie hier.

Code: Select all

/* Create a BreadCrumb-Path with Pictures instead of Text 
	{picturepath alias=$page_alias style_1='mystile-for-first-entry' style_ff='mystile-for-following-entries' delimiter=''}
	possible to set a different style for the root-entry
*/


global $gCms;

#Check if page_alias is set
if( !isset($params['alias']) ) return;

#Check if module TruetypeText is installed
if( isset( $gCms->modules['TruetypeText'] ) && isset( $gCms->modules['TruetypeText']['object'] ) ) {
	$truetypeText = $gCms->modules['TruetypeText']['object'];
	include_once cms_join_path( $truetypeText->GetModulePath(), 'class.style.php' );
} else {
	return;
}

#Check if user has specified a delimiter, otherwise use default
	if (isset($params['delimiter'])) {
		$delimiter = $params['delimiter'];
	}	else {
		$delimiter = ">>";
	}

#Check if user has specified a TTT-Style
	if (isset($params['style_1'])) {
		$style_1= $params['style_1'];
	}	else {
		$style_1 = 0;
	}
	if (isset($params['style_ff'])) {
		$style_ff= $params['style_ff'];
	}	else {
		$style_ff = $style_1;
	}

$contentops =& $gCms->GetContentOperations();

#create path and reverse it
$path = array();
$id = $contentops->GetPageIDFromAlias( $params['alias'] );
while( $id != -1 )
  {
     $content =& $contentops->LoadContentFromId( $id );
     if( is_object( $content ) ) {
        $id = $content->ParentId();
        $path[] = array("Url" => $content->getURL(),"Menutext" =>$content->Menutext());
     }
  }
$path=array_reverse($path);

#take the picture
$trail = "";
for ($i=0;$i < count($path); $i++) {
	#first element
	$trail .= '<a href="' . $path[$i]['Url'] . '">';
	if ($i == 0) {
		$TTTstyle = new TTTstyle();
		if (is_numeric($style_1)) {
			$TTTstyle->loaddb($style_1);
		} else {
			$TTTstyle->loaddbbyname($style_1);
		}
		$trail .=  $TTTstyle->getImage($path[$i]['Menutext']);
	} else {
		$TTTstyle = new TTTstyle();
		if (is_numeric($style_ff)) {
			$TTTstyle->loaddb($style_ff);
		} else {
			$TTTstyle->loaddbbyname($style_ff);
		}
		$trail .=  $TTTstyle->getImage($path[$i]['Menutext']);
	}
	$trail .= '</a> ';
	#add delimiter
	if ($i < (count($path)-1)) {
		$TTTstyle = new TTTstyle();
		if (is_numeric($style_ff)) {
			$TTTstyle->loaddb($style_ff);
		} else {
			$TTTstyle->loaddbbyname($style_ff);
		}
		$trail .=  $TTTstyle->getImage(' ' . $delimiter . ' ');
	}
}
return $trail; 

Re: Breadcrumbs mit TruetypeText möglich?

Posted: Thu Jun 25, 2009 11:48 am
by NaN
Ich würde nicht einfach abbrechen, wenn kein TTT-Modul installiert ist, sondern (wie in meinem Beispiel) einfach den reinen Text ausgeben.
Somit funktioniert Dein Tag immer.
Egal ob TrueTyoe oder nicht.
Kannst ja evtl. noch mit Parametern vom Anwender selbst steuern lassen, ob TrueType verwendet werden soll.
Dann könnte ich mir vorstellen, dass das der neue Breadcrumb Tag wird ;)