Teaser Rechts Mehrsprachig Problem

Gesperrt
marcello89
Beiträge: 116
Registriert: Di 20. Sep 2005, 18:10
Wohnort: Lörrach
Kontaktdaten:

Teaser Rechts Mehrsprachig Problem

Beitrag von marcello89 » Mo 19. Mär 2007, 12:32

Hallo zusammen,

ich habe genau das Selbe Problem wie hier beschrieben ist:
http://contenido.org/forum/viewtopic.ph ... ronisieren

das dass Teaser Rechts modul mir schwierigkeiten bereitet.

Hat dafür jemand eine Alternative oder Lösung?

Danke vielmals
viele grüße
marcello

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Di 20. Mär 2007, 15:12

ich glaub wenn createcode == 0 und kein con_code eintrag vorhanden ist tritt das problem auf...

verschoben...
*** make your own tools (wishlist :: thx)

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mi 21. Mär 2007, 00:49

Yep. Muss nur noch rausbekommen, warum der Code in der anderen Sprache verschwindet, wenn er in der einen editiert wird...

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mi 21. Mär 2007, 08:35

ist eigentlich ganz einfach...

createcode ist nicht sprachabhängig...
bei setzen von createcode wird aber gleichzeitig der inhalt der con_code für alle sprachen geleert... war mal ein fix von timo...

das löschen passiert glaub ich in der functions.con.php und front_content.php
*** make your own tools (wishlist :: thx)

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » So 25. Mär 2007, 23:55

Ja, passiert dort. Ich habe jetzt noch nicht gesucht, wofür der Fix gut war.

Das Modul habe ich überarbeitet (nur Ausgabe):

Code: Alles auswählen

<?php
# Get current settings
$cms_idcat    = "CMS_VALUE[1]";
$cms_idcatart = "CMS_VALUE[2]";
$bDebug       = false;

# Check data
if (!is_numeric($cms_idcat)) {
   $cms_idcat = 0;
}
if (!is_numeric($cms_idcatart)) {
   $cms_idcatart = 0;
}

if ($bDebug) echo "<pre> cat $cms_idcat catart $cms_idcatart</pre>";

if ($cms_idcat >= 0 AND $cms_idcatart >= 0)
{
   $bArticleAvailable = false;
   # Get idcat, idcatart, idart and lastmodified from the database
   $sql = "SELECT A.idart AS idart, A.idcat AS idcat, A.createcode AS createcode,
                  A.idcatart AS idcatart, B.lastmodified AS lastmodified
           FROM ".$cfg["tab"]["cat_art"]." AS A, ".$cfg["tab"]["art_lang"]." AS B
           WHERE
            A.idart = B.idart AND
            B.online = 1 AND ";

   if ($cms_idcatart == 0) {
      $sql .= "A.idcat = '" . $cms_idcat . "' ORDER BY B.lastmodified DESC"; # Only idcat specified, get latest article of category
   } else {
      $sql .= "A.idcatart = '" . $cms_idcatart . "'"; # Article specified
   }

   if ($bDebug) {
      echo "<pre>";
      print_r($sql);
      echo "</pre>";
   }
   $db->query($sql);
   
   if ($db->next_record())
   {
      $bArticleAvailable = true;
      $iIDCatArt   = $db->f("idcatart");
      $iIDCat      = $db->f("idcat");
      $iIDArt      = $db->f("idart");
      $iCreateCode = $db->f("createcode");
      $sModified   = $db->f("lastmodified");
   }

   $db->free();

   #Check if category is online or protected
   $sql = "SELECT public, visible
           FROM " . $cfg["tab"]["cat_lang"] . "
           WHERE idcat = '" . $iIDCat . "' AND idlang = '" . $lang . "'";
   if ($bDebug) {
      echo "<pre>";
      print_r($sql);
      echo "</pre>";
   }
   $db->query($sql);
   $db->next_record();

   $iPublic  = $db->f("public");
   $iVisible = $db->f("visible");

   $db->free();

   #Check if article is online
   # Not necessary anymore, as only online articles are used
   /* $sql = "SELECT online FROM " . $cfg["tab"]["art_lang"] . "
           WHERE idart = '" . $cms_artid . "' AND idlang = '" . $lang . "'";
   if ($bDebug) {
      echo "<pre>";
      print_r($sql);
      echo "</pre>";
   }
   $db->query($sql);
   $db->next_record();

   $online = $db->f("online");

   $db->free(); */

   # If the article is online and the according category is not protected and visible, include the article
   if ($bArticleAvailable AND $iPublic == 1 AND $iVisible == 1)
   {
      # Check, if code creation is necessary
      # Note, that createcode may be 0, but no code is available (all code for other languages will be deleted in
      # front_content, if code for one language will be created). This "bug" may be fixed in future releases.
      if ($iCreateCode == 0)
      {
         $sql = "SELECT count(*) AS CodeCount FROM " . $cfg["tab"]["code"] . "
                 WHERE idcatart = '" . $iIDCatArt . "' AND idlang = '" . $lang . "'";
         if ($bDebug) {
            echo "<pre>";
            print_r($sql);
            echo "</pre>";
         }

         $db->query($sql);
         $db->next_record();
         if ($db->f("CodeCount") == 0) {
            $iCreateCode = 1;
         }
         $db->free();
      }

      # Create code if necessary
      if ($iCreateCode == 1) {
         cInclude('includes', 'functions.con.php');
         cInclude('includes', 'functions.tpl.php');
         cInclude('includes', 'functions.mod.php');

           conGenerateCode($iIDCat, $iIDArt, $lang, $client);
      }

      # Get code from database and execute it
      $sql = "SELECT code FROM " . $cfg["tab"]["code"] . "
              WHERE idcatart = '" . $iIDCatArt . "' AND idlang = '" . $lang . "'";
      if ($bDebug) {
         echo "<pre>";
         print_r($sql);
         echo "</pre>";
      }

      $db->query($sql);

      if ($db->next_record())
      {
         $sCode = stripslashes($db->f("code"));
         $db->free();

         ob_start();
         eval("?>
".$sCode."
<?php
");
         $sCode = ob_get_contents();

         # Clean buffer
         ob_end_clean();

         $iStartPos = strpos($sCode, "<!--start:content-->");
         $iEndPos   = strpos($sCode, "<!--end:content-->");
         $iDiffLen  = $iEndPos - $iStartPos;

         $sCode = substr($sCode, $iStartPos, $iDiffLen);

         echo $sCode;
      } else {
         echo "<!-- ERROR in module Article Include<pre>no code created for article to include!<br>idcat $cms_catid, idart $cms_artid, idlang $lang, idclient $client</pre>-->";
      }
   }
}
?>
Begrenzt getestet.

Ca. 3 Datenbankabfragen eingespart, erzeugt Code, wenn keiner da ist. Funktioniert u.U. nicht mit mehreren Kategorien zugeordneten Artikeln als Datenquelle.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » So 24. Jun 2007, 19:38

Checkin.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Gesperrt