usados tipos sistema mas gestores gestion ejemplos contenidos cms caracteristicas content-management-system magento
aquí

content management system - tipos - Crear páginas CMS secundarias en Magento



tipos de cms (7)

Tiene razón, no hay jerarquía de páginas CMS en Magento. La mejor solución sería crear una jerarquía real agregando un parent_id a las páginas CMS y modificando el módulo CMS para manejar las URL anidadas y las migas de pan. Pero eso requiere mucha codificación.

Un truco rápido y sucio es modificar las rutas de navegación manualmente en cada subpágina añadiendo algo como esto al XML de actualización del diseño:

<reference name="root"> <action method="unsetChild"><alias>breadcrumbs</alias></action> <block type="page/html_breadcrumbs" name="breadcrumbs" as="breadcrumbs"> <action method="addCrumb"> <crumbName>home</crumbName> <crumbInfo><label>Home page</label><title>Home page</title><link>/</link></crumbInfo> </action> <action method="addCrumb"> <crumbName>myparentpage</crumbName> <crumbInfo><label>My Parent Page</label><title>My Parent Page</title><link>/myparentpage/</link></crumbInfo> </action> <action method="addCrumb"> <crumbName>mysubpage</crumbName> <crumbInfo><label>My Sub Page</label><title>My Sub Page</title></crumbInfo> </action> </block> </reference>

Me gustaría crear un conjunto subordinado de páginas CMS en Magento para que la navegación en la parte superior de la página tenga el siguiente aspecto:

Home > Parent CMS Page > Child CMS Page

Aunque puedo especificar una relación jerárquica con el campo de URL key , parece ser que todas las páginas de CMS en Magento se enumeran en el directorio raíz de forma predeterminada:

Home > Child CMS Page

¿Algunas ideas?


Para empresas (versión 1.12) use este código en el siguiente archivo, la ubicación es: default-> template-> page-> html-> breadcrumb.phtml.

<?php $cms_id = Mage::getSingleton(''cms/page'')->getPageId(); if($cms_id): if($_SERVER[''REQUEST_URI'']) { $trim_data = substr($_SERVER[''REQUEST_URI''],1); $data = explode(''/'',$trim_data); } $cms_collection = array(); $url_full = ''''; $cms_enterprise = ''''; foreach($data as $identifier) { $page_data = Mage::getModel(''cms/page'')->getCollection() ->addFieldToFilter(''identifier'', $identifier); if($page_data) { foreach($page_data as $single) { if($single->getContentHeading() != null) { if($single->getPageId()) { $cms_enterprise = Mage::getModel(''enterprise_cms/hierarchy_node'')->getCollection() ->addFieldToFilter(''page_id'', $single->getPageId()); foreach($cms_enterprise as $single_enterprise) { $url_full = $single_enterprise->getRequestUrl(); } } $cms_collection[] = array($single->getTitle(), $single->getContentHeading(), $url_full ); } else { if($single->getPageId()) { $cms_enterprise = Mage::getModel(''enterprise_cms/hierarchy_node'')->getCollection() ->addFieldToFilter(''page_id'', $single->getPageId()); foreach($cms_enterprise as $single_enterprise) { $url_full = $single_enterprise->getRequestUrl(); } } $cms_collection[] = array($single->getTitle(), $single->getTitle(), $url_full ); } } } } $count = count($cms_collection); $i = 1; ?> <?php if(count($cms_collection)): ?> <div class="breadcrumbs"> <ul> <li> <a href="<?php echo $this->getUrl() /*Home*/ ?>" title="<?php echo $this->__(''Home''); /*Home Title*/ ?>"> <?php echo $this->__(''Home''); /*Home Name*/ ?> </a> <span>> </span> </li> <?php foreach($cms_collection as $key=>$value): ?> <?php if($i == $count): ?> <li> <strong> <?php echo $value[1]; /*Name*/ ?> </strong> </li> <?php else: ?> <li> <a href="<?php echo $this->getUrl().$value[2] /*Identifier*/ ?>" title="<?php echo $value[0] /*Title*/ ?>"> <?php echo $value[1]; /*Name*/ ?> </a> <span>> </span> </li> <?php endif; ?> <?php $i++; ?> <?php endforeach; ?> </ul> </div> <?php endif; ?> <?php else: ?> <?php if($crumbs && is_array($crumbs)): ?> <div class="breadcrumbs"> <ul> <?php foreach($crumbs as $_crumbName=>$_crumbInfo): ?> <li class="<?php echo $_crumbName ?>"> <?php if($_crumbInfo[''link'']): ?> <a href="<?php echo $_crumbInfo[''link''] ?>" title="<?php echo $this->htmlEscape($_crumbInfo[''title'']) ?>"><?php echo $this->htmlEscape($_crumbInfo[''label'']) ?></a> <?php elseif($_crumbInfo[''last'']): ?> <strong><?php echo $this->htmlEscape($_crumbInfo[''label'']) ?></strong> <?php else: ?> <?php echo $this->htmlEscape($_crumbInfo[''label'']) ?> <?php endif; ?> <?php if(!$_crumbInfo[''last'']): ?> <span>> </span> <?php endif; ?> </li> <?php endforeach; ?> </ul> </div> <?php endif; ?>

Gracias,

Kashif



Esta es mi solución al problema. Utilizo el diseño personalizado para la mayoría de las páginas de CMS (predeterminado / plantilla / página / cmsLayout.phtml) así que he agregado el siguiente código en el archivo de diseño:

<div class="col-main"> <?php $urlPart=str_replace(Mage::getUrl(),'''',Mage::getUrl('''', array(''_current'' => true,''_use_rewrite'' => true))); $urlPart=explode(''/'',$urlPart); $string=''''; $return=''<div class="breadcrumbs"><ul><li class="home"><a href="''.Mage::getBaseUrl().''" title="Go to Home Page">Home</a><span> / </span></li>''; $count=count($urlPart); foreach($urlPart as $value) { $count--; $string.=''/''.$value; $string=trim($string, ''/''); $pageTitle = Mage::getModel(''cms/page'')->load($string, ''identifier'')->getTitle(); if($count==0) $return.=''<li><strong>''.$pageTitle.''</strong></li>''; else $return.=''<li><a href="''.Mage::getBaseUrl().$string.''" title="''.$pageTitle.''">''.$pageTitle.''</a><span> / </span></li>''; } echo $return.''</li></ul></div>''; ?> <?php echo $this->getChildHtml(''global_messages'') ?> <?php echo $this->getChildHtml(''content'') ?> </div>


actualización -oops- esto podría ser solo una característica de la empresa

Hay una opción incorporada de jerarquía de página CMS en Magento.

Encenderlo:

Sistema> Configuración> General> Gestión de contenido> Jerarquía de página CMS - ver aquí

Para organizar el árbol de jerarquía:

CMS> Páginas> Gestionar jerarquía

Para administrar la posición de una página en el árbol, después de guardar una página, vaya a su "pestaña de jerarquía" - vea la captura de pantalla:

En el ejemplo, la página "Nuestra cultura" es hija de "trabajos" y no del directorio raíz


Tuve el mismo problema con las migas de pan y las páginas cms hace unos días, marque aquí ->

Al igual que en la publicación de Anders Rasmussen, edité cada página de cms manualmente

En breadcrumbs.phtml agregué una pequeña condición para definir si una página es una página CMS (gracias a Alan Storm) y eliminar migajas estándar y agregar nuevas migas a través de xmllayout.

<?php if($this->getRequest()->getModuleName() == ''cms''){ unset($crumbs[''cms_page'']); } ?>

xml:

<reference name="breadcrumbs"> <action method="addCrumb"> <crumbName>cms_page_1st_child</crumbName> <crumbInfo><label>1st child</label><title>1st child</title><link>/1st child/</link></crumbInfo> </action> <action method="addCrumb"> <crumbName>cms_page_2nd_child</crumbName> <crumbInfo><label>2nd child</label><title>2nd child</title></crumbInfo> </action> </reference>

Espero que eso ayude, Rito


Construí un bloque personalizado para generar las migas (eliminando el incorporado y reemplazándolo con el personalizado a continuación en el diseño):

namespace Uprated/Theme/Block/Html; class UpratedBreadcrumbs extends /Magento/Framework/View/Element/Template { /** * Current template name * * @var string */ public $crumbs; protected $_template = ''html/breadcrumbs.phtml''; protected $_urlInterface; protected $_objectManager; protected $_repo; public function __construct( /Magento/Backend/Block/Template/Context $context, /Magento/Framework/UrlInterface $urlInterface, /Magento/Framework/ObjectManagerInterface $objectManager, array $data = []) { $this->_urlInterface = $urlInterface; $this->_objectManager = $objectManager; $this->_repo = $this->_objectManager->get(''Magento/Cms/Model/PageRepository''); $this->getCrumbs(); parent::__construct($context, $data); } public function getCrumbs() { $baseUrl = $this->_urlInterface->getBaseUrl(); $fullUrl = $this->_urlInterface->getCurrentUrl(); $urlPart = explode(''/'', str_replace($baseUrl, '''', trim($fullUrl, ''/''))); //Add in the homepage $this->crumbs = [ ''home'' => [ ''link'' => $baseUrl, ''title'' => ''Go to Home Page'', ''label'' => ''Home'', ''last'' => ($baseUrl == $fullUrl) ] ]; $path = ''''; $numParts = count($urlPart); $partNum = 1; foreach($urlPart as $value) { //Set the relative path $path = ($path) ? $path . ''/'' . $value : $value; //Get the page $page = $this->getPageByIdentifier($path); if($page) { $this->crumbs[$value] = [ ''link'' => ($partNum == $numParts) ? false : $baseUrl . $path, ''title'' => $page[''title''], ''label'' => $page[''title''], ''last'' => ($partNum == $numParts) ]; } $partNum++; } } protected function getPageByIdentifier($identifier) { //create the filter $filter = $this->_objectManager->create(''Magento/Framework/Api/Filter''); $filter->setData(''field'',''identifier''); $filter->setData(''condition_type'',''eq''); $filter->setData(''value'',$identifier); //add the filter(s) to a group $filter_group = $this->_objectManager->create(''Magento/Framework/Api/Search/FilterGroup''); $filter_group->setData(''filters'', [$filter]); //add the group(s) to the search criteria object $search_criteria = $this->_objectManager->create(''Magento/Framework/Api/SearchCriteriaInterface''); $search_criteria->setFilterGroups([$filter_group]); $pages = $this->_repo->getList($search_criteria); $pages = ($pages) ? $pages->getItems() : false; return ($pages && is_array($pages)) ? $pages[0] : []; }

Luego usó una plantilla .phtml ligeramente modificada para mostrarlos:

<?php if ($block->crumbs && is_array($block->crumbs)) : ?> <div class="breadcrumbs"> <ul class="items"> <?php foreach ($block->crumbs as $crumbName => $crumbInfo) : ?> <li class="item <?php /* @escapeNotVerified */ echo $crumbName ?>"> <?php if ($crumbInfo[''link'']) : ?> <a href="<?php /* @escapeNotVerified */ echo $crumbInfo[''link''] ?>" title="<?php echo $block->escapeHtml($crumbInfo[''title'']) ?>"> <?php echo $block->escapeHtml($crumbInfo[''label'']) ?> </a> <?php elseif ($crumbInfo[''last'']) : ?> <strong><?php echo $block->escapeHtml($crumbInfo[''label'']) ?></strong> <?php else: ?> <?php echo $block->escapeHtml($crumbInfo[''label'']) ?> <?php endif; ?> </li> <?php endforeach; ?> </ul> </div> <?php endif; ?>

Funcionando bien para mí en 2.1