Bloque estático en column_left/right

txema

Miembro
Alguien ha conseguido crear más de dos bloques estáticos en columnas laterales?

Después de crear el bloque estático desde CMS:

1.- En catalog.xml:

<reference name = "-left/right-">
<block type = "cms/block" name = "identificador">
<action method = "setBlockId"><id> identificador </id></action>
</block>
</reference>

(según el foro americano)
<reference name=”-left/right-”>
<block type=”cms/block” name=”left.permanent.callout”>
<action method=”setBlockId”><block_id>identificador</block_id></action>
</block>
</reference>

2.- desde XML de actualización de Layout:

{{block type="cms/block" block_id="identificador" template="cms/content.phtml"}}

3.- O quizá haya que ir por otra vía creando un nuevo bloque modificando -left_col/right_col-.phtml

En el 1er caso, como apenas conozco de xml, consigo que se duplique el último block que inserté, el el 2o caso, no aparece absolutamente nada cuando se coloca en columnas laterales y en el 3er caso, creo tantos boxes como sea necesario pero dudo que sea la solución más apropiada.
 

Jaione

Nuevo usuario
Yo también estoy con eso y me pasa como a ti, sigo las indicaciones y lo más que me ha llegado a pasar es a crear un bloque, pero exactamente igual al que ya había.
 

Xarlie

Super Moderador
Miembro del equipo
Lo más sencillo.
Editar el fichero .phtml correspondiente y añadir la siguiente línea:

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('identificador_del_bloque')->toHtml() ?>
Donde "identificador_del_bloque" es lógicamente el identificador que le habéis dado a vuestro bloque.
No olvidéis activar el bloque ;)
 

Jaione

Nuevo usuario
Vale, a mi a si, si me funciona, pero con problemas.

Resulta que yo lo quiero poner en la columna de la izquierda, encima del perro que hay por defecto en Magento.

Bueno, si lo pongo debajo de la imagen del perro, me va bien, pero como lo ponga encima, no hay manera, y tengo la página en 3 columnas y se convierte en una y se coloca todo el contenido en vertical, en una sola columna.
Y lo vuelvo a colocar debajo y se me queda como una sola columna y he tenido que quitarlo.

Qué me pasa?
 

Jaione

Nuevo usuario
Una cosa que no entiendo, cada vez que creo un bloque estático, me aparece en el recuadro de personalización del bloque este texto

Contenido</span>" style="height:36em" rows="2" cols="15" class=" required-entry textarea" >Contenido</span>" style="height:36em" rows="2" cols="15" class=" required-entry textarea" >Contenido</span>" style="height:36em" rows="2" cols="15" class=" required-entry textarea" >

Y lo quito, guardo el bloque y se me vuelve a poner este texto.
 

Jaione

Nuevo usuario
Ah!! y no, imposible agregar el bloque estático encima de la foto donde estaba el perro, solo me deja agregar debajo
 

txema

Miembro
Lo del "autotexto" en la personalización del bloque estático no se por que puede ser, respecto a lo del bloque encima de la foto, visualiza el bloque (<div class="box"> ... </div>) dentro de left_col.phtml y coloca el tuyo antes que ese.
Sabes que debe comenzar con
Insertar CODE, HTML o PHP:
<div class="box">
y terminar con
Insertar CODE, HTML o PHP:
</div>
En el medio todo el contenido que quieras mostrar. Ten cuidado con dejar etiquetas abiertas.
 

Jaione

Nuevo usuario
Bueno ya he conseguido personalizar :jeje:

Pero, siempre hay un pero, ahora me surge otra cuestión.

Tengo un código php que poner en una de las columnas, este código hace que se vean los últimos temas del foro, pero como el formato de la columna es .phtml, no me funciona.

Y el código en sí esta bien porque lo he probado en el foro en documento php.

Que digo yo que será por eso que no funciona :niidea:

Entonces, ¿no hay ninguna manera de poderlo poner? :pensando:
 

txema

Miembro
Sería muy interesante conocer ese código, no hace mucho leí en un post que alguien necesitaba algo parecido.

phtml es php y html, Simplemente. No deberías tener problema alguno al insertar código php, eso si, debes conocer las etiquetas propias del código que estás utilizando.

Intenta poner
Insertar CODE, HTML o PHP:
<?php
al principio de tu código y
Insertar CODE, HTML o PHP:
?>
al finalizar y ya comentarás el resultado.
 

Jaione

Nuevo usuario
El código en cuestión que yo tengo para poner los últimos post de un foro, que lo he obtenido del foro de phpbb, es este:

<?
$directorio = "directorio_del_foro";
$mostrar = "5"; // número de temas a mostrar
$caracteres = "50"; //número de caracteres

$dbhost = 'host_base_de_datos';
$dbname = 'nombre_base_de_datos';
$dbuser = 'usuario_bbdd';
$dbpasswd = 'contraseña_bbdd';

$table_prefix = 'phpbb_';

// Lo que viene ahora no lo toques para nada!!! a no ser que sepas de qué va el tema...

$conexion = mysql_connect($dbhost,$dbuser,$dbpasswd);
mysql_select_db($dbname,$conexion);
$consulta = "SELECT topic_id,forum_id,poster_id,post_id FROM ".$table_prefix."posts WHERE post_approved = '1' and forum_id NOT IN (1,2,3) ORDER BY post_time DESC";
//$consulta = "SELECT topic_id,forum_id,poster_id,post_id FROM ".$table_prefix."posts ORDER BY post_time DESC";
$resultado = mysql_query($consulta);
echo mysql_error();
$i = 0;
while ($rows = mysql_fetch_array($resultado)) {
if ($i <= $mostrar) {
$consulta1 = "select * from ".$table_prefix."forums where forum_id=$rows[forum_id]";
$resultado1 = mysql_query($consulta1);
$datosf = mysql_fetch_array($resultado1);
$consulta2 = "select * from ".$table_prefix."users where user_id=$rows[poster_id]";
$resultado2 = mysql_query($consulta2);
$datosu = mysql_fetch_array($resultado2);
$consulta3 = "select * from ".$table_prefix."topics where topic_id=$rows[topic_id]";
$resultado3 = mysql_query($consulta3);
$datost = mysql_fetch_array($resultado3);

if (strlen($datost[topic_title]) > $caracteres) {
$datost[topic_title] = substr($datost[topic_title],0,$caracteres)."...";
}

// Añadido por Defero.tk para sacar el texto del mensaje
$consulta6 = "select * from ".$table_prefix."posts_text where post_id=$rows[post_id]";
$resultado6 = mysql_query($consulta6);
$datosy = @mysql_fetch_array($resultado6);

{
$datosy[post_text] = preg_replace("([.+?])is",´´,$datosy[post_text]);
}

// Acorta el texto de los mensajes hasta los caracteres indicados
{
$datosy[post_text] = substr($datosy[post_text],0,$caracteres)."...";
}
echo "<a href=\"$directorio/viewtopic.php?t=$rows[topic_id]\" title=\"$datosy[post_text]\">$datost[topic_title]</a> en <em>$datosf[forum_name]</em> <br> \n";
$i++;
}
}
echo "</p><a href=\"$directorio/index.php\"><strong>- - - - - - - - - - - - Entrar en los Foros</strong></a></p>";
mysql_free_result($resultado);
mysql_close($conexion);
?>
Entonces yo en el archivo right_col.phtml.

Pongo:

<div class="box base-mini">
..... toda la parrafada..........
</div>

Y nada.

Pruebo poniendo:

<div class="box base-mini mini-foro">
<?php>
..... toda la parrafada..........
?>
</div>

Y tampoco.

Unas veces me da un error, que se jode toda la página y se pone en gris con la lista de errores.

Otras veces, me pone un error solo en la barra lateral, indicandome que el error está en las líneas iniciales.

Pero yo no se cual es.

En el archivo del foro que es sidebar.php me funciono a la primera y sin ninguna complicación y aquí no y no se porque puede ser. :niidea:
 

txema

Miembro
Debo entender que las variables tienen asignadas el valor correcto.

El código que citas ya está como php por lo que no tienes que poner las marcas <?php y ?>.

Escribe cual es el error.
 

Jaione

Nuevo usuario
Pues de repente la tienda deja de verse y sale todo esto:

There has been an error processing your request.

Notice: Use of undefined constant topic_title - assumed 'topic_title' in /var/www/vhosts/elrincondelsonido.com/httpdocs/app/design/frontend/default/default/template/callouts/right_col.phtml on line 76
Trace:
#0 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/design/frontend/default/default/template/callouts/right_col.phtml(76): mageCoreErrorHandler(8, 'Use of undefine...', '/var/www/vhosts...', 76, Array)
#1 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Block/Template.php(144): include('/var/www/vhosts...')
#2 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Block/Template.php(176): Mage_Core_Block_Template->fetchView('frontend/defaul...')
#3 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Block/Template.php(193): Mage_Core_Block_Template->renderView()
#4 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Block/Abstract.php(643): Mage_Core_Block_Template->_toHtml()
#5 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Block/Text/List.php(43): Mage_Core_Block_Abstract->toHtml()
#6 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Block/Abstract.php(643): Mage_Core_Block_Text_List->_toHtml()
#7 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Block/Abstract.php(503): Mage_Core_Block_Abstract->toHtml()
#8 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Block/Abstract.php(454): Mage_Core_Block_Abstract->_getChildHtml('right', true)
#9 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/design/frontend/default/default/template/page/3columns.phtml(70): Mage_Core_Block_Abstract->getChildHtml('right')
#10 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Block/Template.php(144): include('/var/www/vhosts...')
#11 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Block/Template.php(176): Mage_Core_Block_Template->fetchView('frontend/defaul...')
#12 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Block/Template.php(193): Mage_Core_Block_Template->renderView()
#13 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Block/Abstract.php(643): Mage_Core_Block_Template->_toHtml()
#14 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Model/Layout.php(525): Mage_Core_Block_Abstract->toHtml()
#15 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Controller/Varien/Action.php(325): Mage_Core_Model_Layout->getOutput()
#16 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Cms/Helper/Page.php(92): Mage_Core_Controller_Varien_Action->renderLayout()
#17 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Cms/controllers/IndexController.php(32): Mage_Cms_Helper_Page->renderPage(Object(Mage_Cms_IndexController), 'home')
#18 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Controller/Varien/Action.php(348): Mage_Cms_IndexController->indexAction()
#19 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(163): Mage_Core_Controller_Varien_Action->dispatch('index')
#20 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/code/core/Mage/Core/Controller/Varien/Front.php(174): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#21 /var/www/vhosts/elrincondelsonido.com/httpdocs/app/Mage.php(450): Mage_Core_Controller_Varien_Front->dispatch()
#22 /var/www/vhosts/elrincondelsonido.com/httpdocs/index.php(52): Mage::run()
#23 {main}
:niidea:
 

txema

Miembro
Ufff, después de revisar el código y comprobar que no hubiesen errores, desconozco por que Magento detecta un error en la linea
HTML:
if (strlen($datost[topic_title]) > $caracteres) {
y parte el código.
Quizá sea algo que paso por alto pero no logro comprenderlo :niidea:
 

Bachan

Nuevo usuario
Hola Jaione:
Conseguiste solucionar este problema?, porque me pasa lo mismo no encuentro solución. :niidea: Gracias. :contento2:

Una cosa que no entiendo, cada vez que creo un bloque estático, me aparece en el recuadro de personalización del bloque este texto

Contenido</span>" style="height:36em" rows="2" cols="15" class=" required-entry textarea" >Contenido</span>" style="height:36em" rows="2" cols="15" class=" required-entry textarea" >Contenido</span>" style="height:36em" rows="2" cols="15" class=" required-entry textarea" >

Y lo quito, guardo el bloque y se me vuelve a poner este texto.
 
Arriba