Mettere automaticamente su due colonne il contenuto di una news

La discussione sul CMS Made Simple in italiano.

Moderator: magallo

Post Reply
User avatar
protempore
Power Poster
Power Poster
Posts: 599
Joined: Mon Jan 14, 2008 9:08 pm

Mettere automaticamente su due colonne il contenuto di una news

Post by protempore »

come si fa?

provo a spiegare meglio.

Ho un layout di impaginazione del contenuto molto largo, per cui risulta difficile la lettura dei testi... mi servirebbe metterli su due colonne... semplice, direte, basta mettere due div affiancati invece che uno... sì, ma come faccio a gestire le due colonne? io vorrei che il contenuto della news, in base alla sua lunghezza si posizioni metà nel primo e metà nel secondo... ma anche dividendolo manualmente, non saprei come fare a gestirlo, visto che il modulo News non mi da la possibilità di due content... o si?
An eye for an eye will make the whole world blind
Mahatma Gandhi (1869-1948)
nervino
Power Poster
Power Poster
Posts: 448
Joined: Sun Dec 28, 2008 12:15 pm

Re: Mettere automaticamente su due colonne il contenuto di una news

Post by nervino »

Secondo me, o modifichi il codice delle News (ma eviterei per ovvi problemi di aggiornamento) oppure inserisci 2 DIV usando il float, direttamente nella textarea delle News, e distribuisci il testo della notizia tra di loro.

Tipo così:

Code: Select all

<div style="float:left;width:400px">

        <p>PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA
 colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna
 PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA
 colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna
 PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA
 colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna
 PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA
 colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna
 PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA
 colonna PRIMA colonna PRIMA colonna
 PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna
 PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA
 colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna PRIMA colonna 
PRIMA colonna PRIMA colonna PRIMA
 colonna PRIMA colonna </p>
    </div>
    <div style="margin-left:400px;width:400px">
        <p>Seconda Colonna Seconda Colonna Seconda Colonna Seconda 
Colonna Seconda Colonna Seconda Colonna Seconda Colonna Seconda Colonna
 Seconda Colonna Seconda Colonna Seconda Colonna Seconda Colonna Seconda
 Colonna Seconda Colonna Seconda Colonna Seconda Colonna Seconda 
Colonna Seconda Colonna Seconda Colonna Seconda Colonna Seconda 
Colonna Seconda Colonna Seconda Colonna Seconda Colonna Seconda Colonna 
Seconda Colonna Seconda Colonna Seconda Colonna Seconda Colonna Seconda 
Colonna Seconda Colonna Seconda Colonna Seconda Colonna Seconda Colonna 
Seconda Colonna Seconda Colonna Seconda Colonna Seconda Colonna Seconda 
Colonna Seconda Colonna Seconda Colonna Seconda Colonna Seconda Colonna 
Seconda Colonna Seconda Colonna Seconda Colonna Seconda Colonna Seconda
 Colonna Seconda Colonna Seconda Colonna Seconda </p>
    </div>
Altro non mi viene in mente...
User avatar
protempore
Power Poster
Power Poster
Posts: 599
Joined: Mon Jan 14, 2008 9:08 pm

Re: Mettere automaticamente su due colonne il contenuto di una news

Post by protempore »

nervino wrote:... e distribuisci il testo della notizia tra di loro....
è proprio questo il problema dividere il testo... difficile farlo in automatico...

inserire i "div" manualmente nel content della news necessita una certa capacità e conoscenza di html... e un utente normale, non ce l'ha...

ho "risolto" con un UDT... non è proprio ciò che volevo, ma me lo faccio andare bene...

in pratica si tratta di considerare i paragrafi del testo e "distribuire", a dx e sx, quelli. L'accortezza è di stabilire che la colonna di sx consideri di essere mediamente più lunga della metà del testo...

questo è l'UDT... il prametro che bisogna passargli è $entry->content

Code: Select all

$detail=$params['detail'];

$string_div=str_replace('<div>','',$detail);
$string_br=str_replace('</div>','<br />',$string_div);
$string_br=str_replace('. <br />','.<br />',$string_br);

$count_br = substr_count($string_br, '.<br />');

$numTotalChar = strlen(strip_tags($string_br));
$minCharLeft = ceil($numTotalChar/2+(($numTotalChar/2)*3/100));

$blocks = explode('.<br />', $string_br);

$charBlock = 0;
$i = 0;
foreach ($blocks as $block){
	if ($i == 0 && $charBlock < $minCharLeft){
		$charBlock = $charBlock + strlen(strip_tags($block));
		$return .= '<div class="news_content_left">'."\n";
		$return .= $block.'.<br />';
		$i++;
	} else if ($i < $count_br && $charBlock > $minCharLeft) {
		$charBlock = $charBlock + strlen(strip_tags($block));
		if ($divRight != 'Y') {
			$return .= '</div>'."\n".'<div class="news_content_right">'."\n";
			$divRight = 'Y';
			$pos = strpos($block, '<br />');
			if ($pos == 0) {
				$return .= substr_replace($block, '', 0, 6).'.<br />';
				$i++;
			} else if ($pos == 1) {
				$return .= substr_replace($block, '', 0, 7).'.<br />';
				$i++;
			} else {
				$return .= $block.'.<br />';
				$i++;
			}
		} else {
			$return .= $block.'.<br />';
			$i++;
		}
	} else if ($i < $count_br)  {
		$charBlock = $charBlock + strlen(strip_tags($block));
		$return .= $block.'.<br />';
		$i++;
	}

}

$return .= "\n".'</div>'."\n";
echo $return;
An eye for an eye will make the whole world blind
Mahatma Gandhi (1869-1948)
Post Reply

Return to “Italian - Italiano”