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

#1 14. September 2013 20:20

altermac
hat von CMS/ms gehört
Registriert: 14. September 2013
Beiträge: 3

[GELÖST] Menuetext in Suchergebnis anzeigen

Hallo zusammen!

Ich möchte für die Suche das Ergebnistemplate in dieser Zeile anpassen:

 <li><a href="{$entry->url}">{$entry->title} - {$entry->urltxt}</a> ({$entry->weight}%)</li>

Ich suche nach einen Tag, mit dem ich bei einer gefundenen Seite den Menuetext der Seite im Suchergebnis einblenden kann. Einen {title} verwende ich leider in meiner Website immer für einen Gruppe von Seiten gleich. Leider steht in urltxt dann der gleiche Inhalt. Ich möchte hier den Inhalt von {menu_text} der jeweiligen Seite anzeigen. Bin etwas ratlos ...

Was muss ich anstelle von {$entry->urltxt} eintragen?

Gruß
altermac

Offline

#2 15. September 2013 22:35

Klenkes
Server-Pate
Ort: 89428 Syrgenstein
Registriert: 17. Dezember 2010
Beiträge: 1.437

Re: [GELÖST] Menuetext in Suchergebnis anzeigen

Willkommen im Forum!

altermac schrieb:

Was muss ich anstelle von {$entry->urltxt} eintragen?

Ganz so einfach ist es nicht.

Du brauchst dazu das Modul Toolbox

Dann musst du einen UDT(Benutzerdefinierter Tag) anlegen mit dem Namen get_alias
Inhalt:

/** Get page alias from url
* @params string $params['url']
*/

$gCms = cmsms();
$cntnt = cmsms()->GetContentOperations();

foreach ($cntnt->GetAllContent() as $page)
 {if ($page->GetURL() == $params['url']) {
   $return = $page->Alias();
   break;}}

if(!empty($params['assign'])){
        $smarty = cmsms()->GetSmarty();
        $smarty->assign(trim($params['assign']), $return);
}
else
{
        return $return;
}

In deiner Resulttemplate dann dort wo der Link erscheinen soll:

{* Mit UDT den Seitenalias durch $entry-url holen *}
{get_alias url=$entry->url assign='set_alias'}
{* dann mit diesem Alias den Menütext holen, $menutext zuweisen *}
{tbtools::getPageMenutext($set_alias, 'menutext')}

<li><a href="{$entry->url}">{$menutext}</a> ({$entry->weight}%)</li>

Wie auch kommentiert muss zuerst der Alias deiner Trefferseite festgestellt werden. Erst mit diesem Alias kann über das Modul Toolbox der Menütext geholt werden.

(Samstag abend ungetestet... sollte aber funktionieren)

Offline

#3 15. September 2013 10:55

altermac
hat von CMS/ms gehört
Registriert: 14. September 2013
Beiträge: 3

Re: [GELÖST] Menuetext in Suchergebnis anzeigen

Danke für die schnelle Antwort, Lösung ist dann doch etwas anders geworden, da tbtools::getPageMenutext nicht richtig wollte. Ausgehend von Deinem Code im UDT hab ich den Menutext direkt aus dem Benutzerdefiniertem Tag geholt:

[== PHP ==]
/** Get page Menutext from url
* @params string $params['url']
*/

$gCms = cmsms();
$cntnt = cmsms()->GetContentOperations();

foreach ($cntnt->GetAllContent() as $page)
 {if ($page->GetURL() == $params['url']) {
   $return = $page->menutext();
   break;}}

if(!empty($params['assign'])){
        $smarty = cmsms()->GetSmarty();
        $smarty->assign(trim($params['assign']), $return);
}
else
{
        return $return;
}

Das Suchergebnis-Template sieht jetzt so aus:

[== Smarty ==]
<h3>{$searchresultsfor} &quot;{$phrase}&quot;</h3>
{if $itemcount > 0}
<ul>
  {foreach from=$results item=entry}
  {* Mit UDT den Menuetext durch $entry-url holen *}
  {get_menutext url=$entry->url assign='menutext'}
  <li>{$entry->title} - <a href="{$entry->url}"> {$menutext}</a> ({$entry->weight}%)</li>
  {/foreach}
</ul>
<p>{$timetaken}: {$timetook}</p>
{else}
  <p><strong>{$noresultsfound}</strong></p>
{/if}

Mein Problem ist gelöst. Vielen Dank!

Offline