We want to edit the left part of the page layout of about us as seen in the photo, we want to remove the "compare" part and customize it. Where can we edit it?
For this functionality i see you're using layout 2columns-left
To edit this functionality in magento you can do it by updating the layout file for your page.
You can remove this part of the page by using this xml handle in your xml config:
<referenceBlock name="catalog.compare.sidebar" remove="true"/>
After you have removed compare from left sidebar you can create your own block and assign it to left sidebar using this command
<referenceBlock name="left">
<block name="your.custom.block.name" class="Vendor\Module\Block\YourBlock" template="Vendor\Module::template.phtml" />
</referenceBlock>
These two command layouts updates will do:
First one will remove the compare products from sidebar
Second one will add your custom block to the sidebar, where you can put code you need to
Only thing you should be carefull to put this is on right layout handle.
The handle for this will lay in your module: Vendor\YourModule\view\frontend\layout
In case that you showed here it would be
cms_tmt_about_us.xml
Please check this in your configuration that this is the right handle
Related
I am trying to modify the head of my website made in the Magento platform and I am having very much trouble in dooing this. Everywhere I search I read something about app/design/frontend/default/modern/template/page/html/head.phtml
What is this? The physical location of the code ? I only have access to the Magento platform. Is there any way to have acces to the head file? I want to add a metadata (<meta name="google-site-verification" content="quuawwomLqURQt6N34_Pr0cBlYnWcYdiRz8tdXC3Oe8" />) in it and I tried to overwrite the XML file and failed.
I tried something like this:
default>
<reference name="head">
<block type="cms/block" name="google verification" as="google verification">
<action method="setBlockId"><block_id>google_plus</block_id></action>
</block>
</reference>
</default>
If you want to add a custom meta tag to your Magento store, you need to edit the head.phtml file of your current running template.
app/design/frontend/Your-template/default/template/page/html/head.phtml
If you not found this file in your template then you can get this file in
app/design/frontend/base/default/template/page/html/head.phtml
Edit head.phtml file and flush magento cache. Refresh the page and check the source code of page.
In case if you want to add meta title and description data for specific product page then you can check the Link.
To check which template is running currently on your site.
Login into admin panel.
System > configuration > under the left menu find General tab and under this you will get Design tab . Click on Design tab.
Current Package Name is the current template name.
OR To solve your problem (easier):
Use the field Miscellaneous Scripts from System->Configuration->Design->Head and put your scripts in there.
They will be added before the </head> tag and you can set different scripts per website or even store views.
I have an empty magento CMS page, literally nothing on it.
The reason why I need an empty page is because the theme installed has a fixed width, whereas I want to use the entire width of the page for a unique design.
The only problem I have is the fact that the navigation menu is not added by default when I select an empty CMS page. Also, if I simply copy and paste the nav menu from another page, the shopping basket does not update on the empty CMS page, but I need it to.
How do I add the theme's navigation menu to the CMS page?
Ben,
There are a few different ways to approach this. Is this unique CMS page the home page?
Option 1:
Set the CMS page to use a new 1column-custom layout where you can move the main blocks around to your hearts content.
To prove if this will work go into template/page/1column.phtml I am assuming you are looking to restructure the one column layout. Make a backup of the original file first and see if you can manipulate the .phtml file to get your desired result on the page you are working on.. If so, take your changes and place them into a new file named 1column-custom.phtml.
Then in the admin panel in the design update section of the desired cms page. You will place in the following code.
<reference name="root">
<action method="setTemplate"><template>page/1column-custom.phtml</template></action>
</reference>
Option 2:
Use a local.xml layout update to set the content block within the home page to your own template.
From the sounds of it option 1 would be more efficient.
I'm trying to create a module that adds new content to existing pages. For testing purposes I'm trying to add to the checkout/cart/index page, but I want a general solution as there are other pages I need to modify.
I've examined the code of free extensions which achieve this by copying all the code of an existing template file into an override template and then using getChildHtml('some_block') to show a new block at the appropriate place. I'd like to add my blocks without having to override any of the core template files to make my module as compilable as possible.
This thread Magento - Add custom block using custom module on Shopping Cart page, shows how to add a block but the accepted answer doesn't work for me. I've followed the link to Alan Storms's answer to another Stackoverflow question Magento XML using before/after to place blocks hardly ever works and I sort of understand that most block types will only render sub blocks if there are direct calls to getChildHtml('subblockname') within the blocks template file.
Is there a general way of adding blocks to any part of an existing page without having to override the template files? What is the preferred way in Magneto modules of adding to existing content on a page as I cannot believe that overriding core files is the way to do this.
Thanks.
You don't need to override magento native template files. Just create your own theme. Magento will search markup file in your theme and if he did not find it, then he will be using base theme.
Also you can set your own template file name or path for this template using xml layouts. All what you need for this - make referense for existing block name and add action setTemplate. Example:
<layout>
<checkout_onepage_review>
<reference name="root">
<action method="setTemplate">
<template>my/path/to/template/file.phtml</template>
</action>
</reference>
</checkout_onepage_review>
</layout>
You need two things to insert a block using only your own layout and have the block be output in the page.
Firstly, you need your layout to insert your block into an existing block that has the type="core/text_list" attribute - or a block which extends the Mage_Core_Block_Text_List class. Examples of core/text_list blocks include left, right, content, before_body_end and so on.
Secondly, you need the template assigned to that block to include this call:
echo $this->getChildHtml();
//note that there is no block alias parameter passed in to this function
Calling getChildHtml() without a block alias will output all children blocks, in order. If your block is a child of this one's layout, then it will be output, too.
I'm assuming that your module has its own layout file linked from the it's etc/config.xml, in which case you can try adding this layout update:
<default><!-- On all pages -->
<reference name="content"><!-- in the content (middle) column -->
<block type="your_module/your_block" name="my.test.module" template="your/template/path.phtml" before="-" /><!-- insert your block -->
</reference>
</default>
Once you can see that this is working, you can start digging through the default layouts to find blocks into which you can insert yours.
Note the before="-" attribute.
This causes the block the be inserted before all other blocks in that container.
You can also use before="block.alias" to position your block before a particular block in the list, and after="block.alias" to position it after a particular block.
You could write after="-" to position your block at the bottom of the list.
There's a brief introduction to the Magento layout system here.
If you plan on distributing your module, you'll find that most people have modified and customised either the templates, layout, or both, of the pages you want to modify and your non-invasive approach will not work and you will have to, either, modify and override core templates, use the layout to change a block's template to your own modified one (without overriding files using the filesystem), or instruct end-users on how to add the right echo command into their existing templates.
I'd suggest, instead, this approach:
Add new templates into template folders for your module that are modified from the base/default or default/default templates just enough to make your module work in those themes.
Add custom layout to your module that makes these changes when it is installed - override the template for the blocks you need to modify in the layout:
<checkout_cart_index><!-- on the cart page -->
<reference name="checkout.cart"><!-- in the cart block -->
<action method="setTemplate"><!-- change the block's template -->
<template>path/to/your/modified/template.phtml</template>
</action>
</reference>
</checkout_cart_index>
You should also provide documentation on how to integrate your changes into third-party templates by adding echo $this->getChildHtml('your.block.alias'); where necessary.
People who have customised their themes, have to accept that they must customise other features, or adapt their existing changes, to use them in their themes, too.
I created new page in CMS blocks > pages . but I need to add new classes "css" to the new page , how can I manage this from Magneto , also If I want to add new users who access the Magneto and how can I give them permissions to access some menus as Catalog , system ...etc and they didn't access others how can I do it.
Thanks,
The cleanest and most efficient way to add styles to one specific CMS page only is to use the Layout Update XML input area in the Design tab of that page. I've included a screenshot below that shows you what I mean, in that case it's adding in some JS.
For you to add CSS you'd just create your CSS file and upload it to your active theme's CSS directory. You'd use the following code in your Layout Update XML input area;
<reference name="head">
<action method="addCss"><stylesheet>css/pagestyles.css</stylesheet></action>
</reference>
I would like to able load my 'wishlist' on header block in my magento-1.6 site.
I am using magento1.6.2.0. Now my wishlist is showing up on left side block.
I just changed the reference of wishlist.xml from left to header like
<reference name="header">
<block type="wishlist/customer_sidebar" name="wishlist_sidebar" as="wishlist" template="wishlist/sidebar.phtml"/>
</reference>
But its not coming
How can I achieve that..? Which xml file i want to edit ..?
All layout XML files are one - that is, they are merged as part of typical rendering.
You need to edit the page/html/header.phtml file and add this bit of code:
<?php echo $this->getChildHtml('wishlist') ?>
Before you do any of this though you should read through the articles at the Official Magento Knowledge Base, paying particular attention to the theme hierarchy and developer articles. The time to get theme customizations right is at the beginning of a project.