Nur ein Vorschaubild in CP Bilder spezial

Hier bekommst Du deutschsprachigen Support. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
Post Reply
Marcel
Posts: 80
Joined: Sat 8. Jan 2005, 13:07

Nur ein Vorschaubild in CP Bilder spezial

Post by Marcel »

Hallo

Ich möchte im CP Bilder spezial nur vom ersten Bild eine Vorschau anzeigen lassen. Default werden ja alle Bilder als Vorschau angezeigt. Habe versucht ab dem zweiten Bild einfach kein Vorschaubild mehr anzugeben, dann funktioniert aber die Slide-Show (next/prev) nicht – kann mir jemand helfen?

Danke
mm
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Re: Nur ein Vorschaubild in CP Bilder spezial

Post by flip-flop »

Hallo,

ich könnte mir das ungefähr so vorstellen ohne groß herumzubasteln:

- Du legst einfach alle Thumbs übereinander (positon: absolute)
- Nun feht noch ein Index (z-index), damit wirklich das erste Thumb oben liegt.
- Dazu kann ein kleiner CP-Trigger verwendet werden.

Beispiel:
Template:

Code: Select all

<!--IMAGES_HEADER_START//-->
<!-- ImagesSpecial01 //-->
...
...
<!--IMAGES_HEADER_END//-->

<!--IMAGES_ENTRY_START//-->
	<div style="z-index:55{IMGID}; position: absolute;" class="imageEntry" id="img{IMGID}">
		{IMAGE}
	</div>
<!--IMAGES_ENTRY_END//--> 
Das <!-- ImagesSpecial01 //--> im Template Kopf dient nur dazu, um wirklich das richtige Template zu erwischen und nicht zufälligerweise auch bei anderen Image special Templates etwas zu tauschen.


Trigger: /template/inc_script/frontend_init/cp_trig_images_special.php

Code: Select all

<?php
 
// http://forum.phpwcms.org/viewtopic.php?p=107107#p107107
/* ------------------------------------------------------------------
function cp_trigger_function_name($param1, & $param2) {
   if($param2['acontent_type'] == 14) { // 14 is CP WYSIWYG
      $param1 = do_this_or_that($param2['acontent_id']);
   }
   return $param1;
}
 
* cp_trigger_function_name - the unique function name
* $param1 - holds the content part html source on which you can parse or do custom processing
* $param2 - is a reference to an array which holds content part values like ID, dates and other values - see db table phpwcms_articlecontent
 
Always return $param1;
*/
// ------------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) { die("You Cannot Access This Script Directly, Have a Nice Day."); }
// ------------------------------------------------------------------

/* Sucht im CP Image Special nach z-index:550 und ersetzt durch z-index:999 */ 
 
function CP_IMAGES_SPECIAL($text, & $data) {

   if( ($data['acontent_type'] == 31) AND                        // 31 is CP imgagesspecial
       (strpos($text, '<!-- ImagesSpecial01 //-->') != false) )   // Ist es das richtige Template?
   { 
         $text = str_replace('z-index:550','z-index:999', $text);
   }

   return $text;
}

register_cp_trigger('CP_IMAGES_SPECIAL');

?>
Sollte funktionieren.

Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
Marcel
Posts: 80
Joined: Sat 8. Jan 2005, 13:07

Re: Nur ein Vorschaubild in CP Bilder spezial

Post by Marcel »

Hey Knut – danke für die Mühe - funktioniert annähernd perfekt. Das einzige Problem ist, dass sich der ganze CP jetzt über den folgenden CP legt. Kann ich das irgendwie über eine CSS Anweisung regeln?
mm
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Re: Nur ein Vorschaubild in CP Bilder spezial

Post by flip-flop »

Das ist doch klar, wenn position:absolute; verwendet wird.
Um das zu umgehen kannst du einen Container mit definierter Höhe drumherum legen.

Kopf-und Fußteil des Templates bilden hier den umschließenden Container, der die Höhe von den Thumbs bezieht.

Code: Select all

....
....
<div style="height:{THUMB_HEIGHT_MAX}px;" .......>
<!--IMAGES_HEADER_END//-->
...
...
<!--IMAGES_FOOTER_START//-->
</div>
....
...

Hier eine andere Variante die mit display:none; arbeitet, also dieses Problem ausschließt. Läuft jedoch einen Tick langsamer, trotz optimierung
(function str_replace_once(.... ):

Template:

Code: Select all

<!--IMAGES_HEADER_START//-->
<!-- ImagesSpecial01 //-->
...
...
<!--IMAGES_HEADER_END//-->

<!--IMAGES_ENTRY_START//-->
   <!-- <div style="z-index:55{ IMGID}; position: absolute;" class="imageEntry" id="img{ IMGID}"> //-->
   <div style="display:none;" id="img{IMGID}"; class="imageEntry">
      {IMAGE}
   </div>
<!--IMAGES_ENTRY_END//-->

Trigger: /template/inc_script/frontend_init/cp_trig_images_special.php

Code: Select all

<?php
 
// http://forum.phpwcms.org/viewtopic.php?p=107107#p107107
/* ------------------------------------------------------------------
function cp_trigger_function_name($param1, & $param2) {
   if($param2['acontent_type'] == 14) { // 14 is CP WYSIWYG
      $param1 = do_this_or_that($param2['acontent_id']);
   }
   return $param1;
}
 
* cp_trigger_function_name - the unique function name
* $param1 - holds the content part html source on which you can parse or do custom processing
* $param2 - is a reference to an array which holds content part values like ID, dates and other values - see db table phpwcms_articlecontent
* 
 * Always return $param1;
*/
// ------------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) { die("You Cannot Access This Script Directly, Have a Nice Day."); }
// ------------------------------------------------------------------

/** 
 * 
 * KH: 30.12.09
 * Sucht im CP Images Special nach  %%style="display:none;" id="img0%% 
 * und erstzt durch  %%style="display:block;" id="img0%%
 * 
 *Verwendet wird hier eine Laufzeitoptimierte Version, die str_replace mit einer Funktion verwendet 
 *anstatt preg_replace 
 * ':none;" id="img0' -> ':block;" id="img0' 
 */




/* Only the first occurence is replaced ----------- */
function str_replace_once($needle , $replace , $haystack){
    // Looks for the first occurence of $needle in $haystack
    // and replaces it with $replace.
    $pos = strpos($haystack, $needle);
    if ($pos === false) {
        // Nothing found
    return $haystack;
    }
    return substr_replace($haystack, $replace, $pos, strlen($needle));
} 




// V1: Sucht im CP Image Special nach 'z-index:550' und ersetzt durch 'z-index:999' 
// V2: Sucht im CP Image Special nach 'style="display:none;" id="img0' 
//                    und ersetzt mit 'style="display:block;" id="img0'
// --------------------------------------------------------------------------------

function CP_IMAGES_SPECIAL($text, & $data) {

  if( ($data['acontent_type'] == 31) AND                         // 31 is CP imgagesspecial
      (strpos($text, '<!-- ImagesSpecial01 //-->') != false) )   // Ist es das richtige Template?
  { 
//      $text = str_replace('z-index:550','z-index:999', $text);
//      $text = preg_replace('/:none;" id="img0/',':block;" id="img0', $text,1);
        $text = str_replace_once(':none;" id="img0' , ':block;" id="img0' , $text);
  }

  return $text;

}

register_cp_trigger('CP_IMAGES_SPECIAL');

?>
[EDIT]
Ein Thumb - mehrere Großansichten: http://www.phpwcms-howto.de/wiki/doku.p ... zansichten
[/EDIT]

Knut
Last edited by flip-flop on Sat 2. Jan 2010, 10:52, edited 1 time in total.
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
Marcel
Posts: 80
Joined: Sat 8. Jan 2005, 13:07

Re: Nur ein Vorschaubild in CP Bilder spezial

Post by Marcel »

Super, danke Dir – und guten Rutsch.
Marcel
Post Reply