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

#1 07. März 2011 13:06

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Cannot redeclare id_array_make()

Ich benutze in einem Template content_dump 2mal. Das ist nix neues:

{content_dump assign="dump1" show_in_menu="force" active="force" block_name="headerimage" extensions="logo"}
{capture assign="headerimage"}{$dump1[0]->content->data}{/capture}
{capture assign="newheaderimage"}
    {if $dump1[0]->content->data}
        {supersizer url=true path=uploads/$headerimage width=900 height=200 crop=true}
    {else}
        {root_url}/uploads/tms_light_template/images/tms_default_header.jpg
    {/if}
{/capture}
…
{content_dump assign="dump2" show_in_menu="force" active="force" block_name="slideshowimage" extensions="content_en"}
{$dump2|print_r}
                    <ul>
    {foreach from=$dump2 item=dump}
                        <li>
        {capture assign="imagepath"}{$dump->content->data}{/capture}
                            <img src="uploads/{$imagepath}" alt="{$dump->content->title}" longdesc="{$dump->extensions->content_en->data}"/>
                        </li>
    {/foreach}
                    </ul>

aber ich kriege immer folgenden fehler:

Fatal error: Cannot redeclare id_array_make() (previously declared in /www/htdocs/w00885cf/cmsms/lib/content.functions.php(969) : eval()'d code:21) in /www/htdocs/w00885cf/cmsms/lib/content.functions.php(969) : eval()'d code on line 21

sobald ich den ersten bzw zweiten dump rausnehme, geht der erste bzw zweite.
irgendwie stehe ich grad auf dem schlauch. liegt das problem überhaupt an content_dump?

Offline

#2 07. März 2011 13:39

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: Cannot redeclare id_array_make()

reicht übrigens schon wenn ich nur

{content_dump assign="dump1" show_in_menu="force" active="force" block_name="headerimage" extensions="logo"}
{content_dump assign="dump2" show_in_menu="force" active="force" block_name="slideshowimage"}

schreibe

Offline

#3 07. März 2011 17:38

piratos
Gast

Re: Cannot redeclare id_array_make()

Das Plugin enthält neben dem eigentlichen Smarty - Tag eine Anzahl normaler Funktionen.
id_array_make ist lediglich die erste davon.

Das Plugin kann man aus dem Grunde nicht mehrfach in einem Lauf aufrufen, da es unter PHP stets eine Funktion nur einmal geben kann

Man müsste diese Funktionen einbetten wie z.B,

if (!function_exists( 'id_array_make'))
{

function id_array_make($thearray,$theitem) {

    $found = 'false';
    $size = count($thearray);
   
    for ($q=0; $q<=$size-1; $q++){
        if ($thearray[$q] == $theitem) {
            $found = 'true';
        }
    }
   
    if ($found <> 'true') {
        $thearray[$size] = $theitem;
        $id_array_make = $thearray;
    }
   
    return $thearray;
}

}

#4 07. März 2011 18:16

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: Cannot redeclare id_array_make()

aber ich versteh das problem noch nicht. das plugin ist ausgelegt mehrfach in einem template verwendet zu werden. und das habe ich bei nem anderen projekt auch schon gemacht. das und dieses projekt laufen unter cmsms 1.9.3. irgendwie habe ich das gefühl, was zu übersehen

Offline

#5 07. März 2011 19:06

piratos
Gast

Re: Cannot redeclare id_array_make()

Sobald eine Doppelfunktion auftritt erfolgt Abpfiff - das ist PHP Standard,

Abhilfe habe ich gepostet - mach was draus.

#6 07. März 2011 20:05

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: Cannot redeclare id_array_make()

aber dann meckert er wieder bei der nächsten (und nächsten) function. das kanns doch net sein  hmm

Offline

#7 07. März 2011 20:39

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: Cannot redeclare id_array_make()

Hab Nils (den Autor) mal auf das Thema hingewiesen ... evtl. findet er dafür etwas Zeit.

Offline

#8 07. März 2011 20:59

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: Cannot redeclare id_array_make()

mir ist aufgefallen, dass der fehler verschwindet sobald ich das plugin als plugin laufen lasse und nicht als UDT.
hatte es zuvor als UDT abgespeichert aus bestimmen gründen. wieso geht das als plugin aber nicht als udt??

Offline

#9 07. März 2011 21:09

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: Cannot redeclare id_array_make()

Hmm, ist mir so noch nicht aufgefallen - scheint so, als ob jedes Plugin als separate "Instanz" läuft, ein UDT aber nicht  roll ...

PS: Hätte diese UDT-Geschichte nicht schon im ersten Posting stehen sollen wink ?

Offline

#10 07. März 2011 21:10

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: Cannot redeclare id_array_make()

ich hätte nicht gedacht dass das ein problem ist. wie soll man darauf auch kommen?  monkey
es lief ja wunderbar. doch sobald noch ne abfrage kommt, kam der fehler.

Offline

#11 07. März 2011 21:38

piratos
Gast

Re: Cannot redeclare id_array_make()

Hast du das eigentliche Plugin entfernt ?

#12 07. März 2011 21:40

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: Cannot redeclare id_array_make()

ja. nun habe ich es aber wieder reingelegt und das udt gelöscht. jetzt gehts. aber ich will es ja als udt haben.
hintergrund: ich möchte mit dem themes made simple ein paket exportieren. und das modul exportiert UDTs aber keine plugins aus dem plugin ordner. daher dieser kleine workaround

Offline

#13 07. März 2011 21:48

piratos
Gast

Re: Cannot redeclare id_array_make()

Ein Unterschied zwischen einem UDT und einem Plugin liegt darin das ein Plugin nur dann registriert wird wenn es noch nicht vorhanden ist, demzufolge gibt es keine doppelten Funktionen.

Bei einem UDT wird ein einfaches eval ausgeführt, d.h. 2 mal aufgeführt = doppelt.

Das kannst du nur verhindern wenn du die paar if's eintippts (hätte man in der Zeit ja längst machen können).

#14 07. März 2011 22:31

nhaack
Server-Pate
Ort: Bonn
Registriert: 12. Dezember 2010
Beiträge: 171
Webseite

Re: Cannot redeclare id_array_make()

ja, ich muss da langsam mal ein Update nachschieben, es gibt noch ein paar Bugs und ich finde den Code ziemlich unübersichtlich.

Zudem will ich auch endlich die Template-ID mit aufnehmen. Diese Woche wird das leider nichts mehr, ich könnte so ab nächster/übernächster Woche mal 1-3 Abende in die Weiterentwicklung investieren.

Was das Laufen als UDT angeht ... verstehe wo der Schuh drückt ... aber wie Piratos schon schrieb, wenn du alle Funktionen kurz klammerst hast du zumindest eine schnelle Lösung.

Alles in einem Paket auszuliefern ist aus User-Sicht zwar charmant, aber könntest du beim Download des Themes nicht auf das Plugin verweisen?

Grüße
Nils

Offline

#15 07. März 2011 22:42

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: Cannot redeclare id_array_make()

ja, aber du wießt ja wie die absoluten einsteiger drauf sind… die kriegen es gerade so hin ne xml datei zu importieren. aber ne function.content_dump.php in /plugins/ via ftp zu legen?! hat alles seine vor und nachteile aber ich mags eher "charmant" big_smile
danke für deine rückmeldung

Offline