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

#1 09. September 2011 19:09

otter24
kennt CMS/ms
Ort: Hamburg
Registriert: 12. Januar 2011
Beiträge: 339

Contentblock ein und ausblenden im Backend..

Moin ..

also einen Contentblock im Backend  ein und auszublenden krieg ich ja locker hin.
Aber jetzt möchte ich eine Abhängigkeit erstellen.  Ich hab da zwei Contentblöcke die ich ungefähr so
ein und ausblende

{content block="Inhalt" 
label="Aktiviere oder deaktiviere den normalen Inhaltsblock " oneline="true" size="1" default="+" 
assign="Inhalt"  page_tab="Inhalt" }{if empty($Inhalt)}{assign var="Inhalt" value="+"}{/if} 

 {content block="Teasertext" 
label="Aktiviere oder deaktiviere den Teasertext " oneline="true" size="1" default="-" assign="Teasertext"  page_tab="Inhalt" }
{if empty($Teasertext)}{assign var="Teasertext" value="-"}{/if}

Soweit so gut diese Blöcke sind grundsätzlich unterschiedlich formatiert und werden auch unterschiedliche Inhalte enthalten.
Aktuell ist es so das ich beide Blöcke unabhängig von einander aktivieren bzw. deaktivieren kann. Aber frei nach dem Motto "Es kann nur einen geben" möchte ich, wenn ich Block "Inhalt" aktiviere, das automatisch ohne das der User noch an etwas denken muss, der Block "Teasertext" deaktiviert wir. Aktuell muss ich/der User das noch manuell machen. Das ganze soll natürlich auch umgekehrt gehen.

Gibt es da einen Ansatz?

Gruß aus HH


Ich bin war  kein Klugscheißer, ich weiß wusste es wirklich nicht besser.

Offline

#2 09. September 2011 20:53

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

Re: Contentblock ein und ausblenden im Backend..

Ah, hier gehts bestimmt um AdvancedContent, oder? wink

Da hatte schonmal jemand die gleiche Idee: http://dev.cmsmadesimple.org/feature_request/view/6726

Meine Idee wäre, einen weiteren Parameter einzuführen, der besagt, welcher Block von wem kontrolliert wird, bzw. andersherum. Prinzipiell wäre das machbar, aber ich habe da noch keine wirklich saubere Lösung.

Du könntest den Parameter description dazu misbrauchen, Javascript einzufügen, welches dann das macht, was du willst. Die Input-Elemente der Inhaltsblöcke haben alle als ID die ID des Blocks (Parameter 'block').
Also könntest Du z.B. so dem ganzen über einen UDT eine Javascript-Funktion zuweisen:

echo "
<script type=\"text/javascript\">
jQuery(document).ready(function() {
    jQuery('#". $params['control_who'] ."').change(function() { 
        if(this.value == '+') {
            jQuery('#". $params['control_what'] ."').val('-');
            if( jQuery('#". $params['control_what'] ."_wrapper').css('display') != 'none') {
                jQuery('#toggle-". $params['control_what'] ."').click();
            }
        }
        else {
            jQuery('#". $params['control_what'] ."').val('+');
            if( jQuery('#". $params['control_what'] ."_wrapper').css('display') == 'none') {
                jQuery('#toggle-". $params['control_what'] ."').click();
            }
            jQuery('#toggle-". $params['control_who'] ."').click();
        }
    });
});
</script>";

Das Ganze speicherst Du als UDT (z.B. change_input) und baust ihn so ins Template als Parameter ein:

{content block="Inhalt" label="Aktiviere oder deaktiviere den normalen Inhaltsblock " oneline="true" size="1" default="+" assign="Inhalt" page_tab="Inhalt" description=":::change_input control_who='Inhalt' control_what='Teasertext':::" smarty="true"}{if empty($Inhalt)}{assign var="Inhalt" value="+"}{/if} 

{content block="Teasertext" label="Aktiviere oder deaktiviere den Teasertext " oneline="true" size="1" default="-" assign="Teasertext" page_tab="Inhalt" description=":::change_input control_who='Teasertext' control_what='Inhalt':::" smarty="true"}{if empty($Teasertext)}{assign var="Teasertext" value="-"}{/if}

Anstelle der Textfelder könntest Du auch Checkboxen verwenden (siehe Beispiel im Feature-Request).
Wenn es um "Entweder/Oder" geht, würde ich sogar eher zu einem Dropdown tendieren.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline