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

#1 21. März 2011 12:19

conceptbay
probiert CMSMS aus
Ort: Essen
Registriert: 12. November 2010
Beiträge: 30
Webseite

Re:

Hallo zusammen,

ich hoffe, ich eröffne den Thread hier im richtigen Forum - wenn nicht, einfach verschieben ;-)

Ich sitze gerade an folgender Aufgabe:

Wir haben ein umzusetzendes Design, welches in zwei Bereiche aufgeteilt ist:
Der obere Teil besteht aus einer Grafik, die 90% Höhe und 100% Breite des Browserfensters einnimmt.

Darunter befindet sich dann der eigentliche Inhaltsbereich der Seite, mit Texten, Bilder, News etc.

Alles ist aufgesetzt und funktioniert, bis auf eine Kleinigkeit:

Sobald der Besucher der Seite auf einen Seiten-Link im unteren Bereich klickt, wird er zur nächsten Seite geführt, aber
(natürlich) wieder an das obere Ende der Seite, d.h. er hat wieder die Grafik vor sich. Das ist natürlich suboptimal, weil dann erst wieder
auf den "Nach-unten-Link" geklickt werden muss.

Ich versuche jetzt schon geraume Zeit, herauszufinden, wie ich einen Standardlink, aber auch die Links aus dem Newsmodul
(die "Weiterlesen.."-Links) mit einem Anker-Tag zu versehen, sodass die Seite direkt an der Stelle mit Beginn des Inhaltsbereiches
geladen wird.

Habe auch schon im Netz recherchiert, aber nichts wirklich brauchbares gefunden.

Meiner Idee nach müsste doch es möglich sein, in der "news/action.default.php" an der Stelle "#CreateLink" einen Anker zu implementieren,
und das gleiche auch für die Standard-Links einzubauen, allerdings finde ich den "Einstiegspunkt" dazu nicht...

Sehe ich den Wald vor lauter Bäumen nicht, und hat jemand eine Idee, wie ich das lösen kann?

Danke im voraus! :-)

Offline

#2 21. März 2011 13:14

cyberman
Moderator
Ort: Dohna / Sachsen
Registriert: 13. September 2010
Beiträge: 6.741
Webseite

Re:

Der Link wird doch im MenuManager zusammengebaut ... da solltest du doch einfach einen Anker anhängen können, also href="{$node->url}#content" - mit der API-Funktion CreateLink sollte ähnliches möglich sein.


1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMSMS
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi

Offline

#3 22. März 2011 09:53

conceptbay
probiert CMSMS aus
Ort: Essen
Registriert: 12. November 2010
Beiträge: 30
Webseite

Re:

Hallo cyberman,

danke für Deine schnelle Antwort, ich bin leider noch nicht dazu gekommen, das auszuprobieren - werde mich aber im Laufe des Tages daran machen.

----

So, hat alles geklappt, allerdings auf Umwegen.

Die Anpassung im Menümanager war kein Thema, das Newsmodul war ein wenig hakeliger.

Um einen Anker an einen Newslink zu hängen, habe ich in der Datei "lib/classes/module_support/modform.inc.php" bei

if ($returnid != '')    
    { $text .= '&'.$id.'returnid='.$returnid.'#anker';                
        if ($inline) {
....

das "#anker" an den String angehängt.

Jetzt springen die News da hin, wo sie sollen. monkey

Beitrag geändert von conceptbay (22. März 2011 13:41)

Offline

#4 23. März 2011 12:24

conceptbay
probiert CMSMS aus
Ort: Essen
Registriert: 12. November 2010
Beiträge: 30
Webseite

Re:

Hier noch ein kleiner Nachtrag:

Ich habe festgestellt, dass die Seiten-Links bei einer Galerie (die |1|2|3|-Links) das Argument #anker mitten im Link-String steht, daher musste ich eine weitere Abfrage einbauen, die folgendermaßen aussieht:

if($modinstance->GetName() =='News')        
{            
       $text .= '/'.$goto.'?mact='.$modinstance->GetName().','.$id.','.$action.','.($inline == true?1:0).$secureparam;                         
      foreach ($params as $key=>$value)            
{                
      $key = cms_htmlentities($key);                
      $value = cms_htmlentities($value);                
      if ($key != 'module' && $key != 'action' && $key != 'id')                    
      $text .= '&'.$id.$key.'='.rawurlencode($value);            
}        
if ($returnid != '')            
{                
      $text .= '&'.$id.'returnid='.$returnid.'#top';                
      if ($inline)                    
      {                        
            $text .= '&'.$config['query_var'].'='.$returnid;                    
      }
}
}        
else        
{            
      $text .= '/'.$goto.'?mact='.$modinstance->GetName().','.$id.','.$action.','.($inline == true?1:0).$secureparam;                                      
      foreach ($params as $key=>$value)            
      {                
            $key = cms_htmlentities($key);                
            $value = cms_htmlentities($value);                
            if ($key != 'module' && $key != 'action' && $key != 'id')                    
            $text .= '&'.$id.$key.'='.rawurlencode($value);            
      }        

if ($returnid != '')            
      {                
      $text .= '&'.$id.'returnid='.$returnid;                
      if ($inline)                    
      {                        
      $text .= '&'.$config['query_var'].'='.$returnid.'#top';                    
      }                                  
}                 
}    
}

Dafür muss der darunterliegende Abschnitt

foreach ($params as $key=>$value)            
{
$key = cms_htmlentities($key);
$value = cms_htmlentities($value);
if ($key != 'module' && $key != 'action' && $key != 'id')
$text .= '&'.$id.$key.'='.rawurlencode($value);            
}        
if ($returnid != '')
{                
$text .= '&'.$id.'returnid='.$returnid;    
if ($inline)        
{                        
$text .= '&'.$config['query_var'].'='.$returnid';                    
}                                  
}                 
}

entfernt werden (steht ja schon darüber in der Schleife).

Vielleicht hilft´s ja wem weiter - wenn jemand daran weiter optimieren kann, freue ich mich natürlich :-)

Offline

#5 23. März 2011 14:32

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.058

Re:

Am Modul oder am Core würde ich deswegen nicht unbedingt etwas verändern.
Man könnte auch im Template mit Smarty und dem Modifikator regex_replace an das href-Attribut den Anker anhängen.

Offline

#6 23. März 2011 17:55

conceptbay
probiert CMSMS aus
Ort: Essen
Registriert: 12. November 2010
Beiträge: 30
Webseite

Re:

Danke für den Tipp - das regex_replace kannte ich noch gar nicht.
Man lernt ja nie aus :-)

Offline

Fußzeile des Forums

Powered by FluxBB