2011-12-30 6 views
1

Je suis en train de développer un module personnalisé et pour une raison quelconque, il ajoute un espace vide avant tout ce que je produis. Mon mise en place est comme ceci:joomla espace vide avant le module

classe principale est en .php d'aide, la logique est en MOD_NAME .php, sortie est/tmpl/default .php

La chose étrange est que si je une méthode dans ma classe qui retourne html. Et puis j'appelle cette méthode dans mon modèle tout va bien, aucune ligne supplémentaire n'est ajoutée. Mais si j'essaie d'écrire une sortie, même du texte brut, dans mon template ou mod_name.php, j'obtiens cette ligne supplémentaire.

Voici une capture d'écran: enter image description here

S'il vous plaît laissez-moi savoir si quelqu'un a rencontré quelque chose comme ça avant, je serais bien obligé!

Répondre

3

avéré que le problème était parce que j'incluais 2 fichiers, chacun ils contenaient une classe distincte, pour une raison quelconque, lorsque j'incluais seulement 1 fichier, tout a bien fonctionné. Le fichier inclus n'a pas d'espace blanc et ne génère aucune sortie, il contient uniquement la logique. Merci pour votre temps et vos réponses cependant.

EDIT:

récemment trébuché sur cette question à nouveau, tourné en UTF-8 sans BOM est la voie à suivre, MAIS MVC-sage, assurez-vous que votre point d'entrée des composants » ./com_helloworld/ helloworld.php "est UTF-8 sans BOM en premier lieu!

+0

Ouais, ne pouvait pas figurer que moi-même pendant un moment ... en quelque sorte l'encodage du fichier était en train d'ajouter un espace vide entouré de doubles guillemets "" Ca arrive aussi aux composants ... – petsoukos

0

Il semble que ce soit un emplacement enregistré pour que quelque chose soit masqué. J'ai au moins trouvé cela parfois avec des icônes d'impression et rss désactivées, mais le conteneur ne disparaît pas. Vous pouvez supprimer le tout, ou apporter des corrections dans les fichiers de base de données si vous pouvez trouver la source. On dirait une sorte de module d'inscription, alors pourriez-vous regarder dans les fichiers source pour tous les modules que vous pourriez avoir comme ça si cela sonne une cloche. Désolé pas une réponse exacte, mais j'espère donne un peu de direction.

+0

Je sais ce que vous parlez, mais j'utiliser mon propre modèle personnalisé ont donc été supprimé toutes ces cachées « divs ». – michaeltintiuc

1

J'ai rencontré un problème similaire aujourd'hui, et a réussi à le résoudre en codant pour la mise en page du module « UTF-8 sans BOM »

2

UTF-8 sans nomenclature est la réponse. J'ai fait 3 sites Web Joomla complexes avec CSS conditionnel pour gérer ce problème avant que je trouve la cause. J'ai également trouvé ce script quelque part pour mettre à la racine d'un site Web Joomla pour autosave récursivement UTF-8 aucun fichier php BOM. Cela a fonctionné et m'a sauvé beaucoup de temps:

<?php 
// Tell me the root folder path. 
// You can also try this one 
// $HOME = $_SERVER["DOCUMENT_ROOT"]; 
// Or this 
// dirname(__FILE__) 
$HOME = dirname(__FILE__); 
// Is this a Windows host ? If it is, change this line to $WIN = 1; 
$WIN = 0; 

// That's all I need 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>UTF8 BOM FINDER and REMOVER</title> 
<style> 
body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; } 
.FOUND { color: #F30; font-size: 14px; font-weight: bold; } 
</style> 
</head> 
<body> 
<?php 
$BOMBED = array(); 
RecursiveFolder($HOME); 
echo '<h2>These files had UTF8 BOM, but i cleaned them:</h2><p class="FOUND">'; 
foreach ($BOMBED as $utf) { echo $utf ." 
\n"; } 
echo '</p>'; 

// Recursive finder 
function RecursiveFolder($sHOME) { 
    global $BOMBED, $WIN; 

    $win32 = ($WIN == 1) ? "\\" : "/"; 

    $folder = dir($sHOME); 

    $foundfolders = array(); 
    while ($file = $folder->read()) { 
    if($file != "." and $file != "..") { 
     if(filetype($sHOME . $win32 . $file) == "dir"){ 
     $foundfolders[count($foundfolders)] = $sHOME . $win32 . $file; 
     } else { 
     $content = file_get_contents($sHOME . $win32 . $file); 
     $BOM = SearchBOM($content); 
     if ($BOM) { 
      $BOMBED[count($BOMBED)] = $sHOME . $win32 . $file; 

      // Remove first three chars from the file 
      $content = substr($content,3); 
      // Write to file 
      file_put_contents($sHOME . $win32 . $file, $content); 
     } 
     } 
    } 
    } 
    $folder->close(); 

    if(count($foundfolders) > 0) { 
    foreach ($foundfolders as $folder) { 
     RecursiveFolder($folder, $win32); 
    } 
    } 
} 

// Searching for BOM in files 
function SearchBOM($string) { 
    if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true; 
    return false; 
} 
?> 
</body> 
</html>