- Học nghệ thuật đầu tư dựa trên giá trị.
- Kinh nghiệm đầu tư thành công.

Được tạo bởi Blogger.

Hiển thị các bài đăng có nhãn Layout. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Layout. Hiển thị tất cả bài đăng

Thứ Năm, 23 tháng 10, 2014

Thứ Bảy, 23 tháng 8, 2014

Layout - Các page layout handle thường dùng trong file layout.xml


Tất cả các trang
<default>
</default>

Tất cả các trang là CMS-Page
<cms_page>
</cms_page>

Trang chủ là CMS-page
<cms_index_index>
</cms_index_index>

Các trang có 3 cột left - content - right<page_three_columns>
</page_three_columns>

Trang duyệt qua một category
<catalog_category_default>
</catalog_category_default>

Trang User login:
<customer_logged_in>
</customer_logged_in>

Thứ Sáu, 22 tháng 8, 2014

Layout - Default handle của tất cả các module trong Magento


Thư mục: /app/design/frontend/base/default/layout/
page.xml
    <default translate="label" module="page">
        <label>All Pages</label>
        <block type="page/html" name="root" output="toHtml" template="page/3columns.phtml">

            <block type="page/html_head" name="head" as="head">
                <action method="addJs"><script>prototype/prototype.js</script></action>
                <action method="addJs"><script>lib/ccard.js</script></action>
                <action method="addJs"><script>prototype/validation.js</script></action>
                <action method="addJs"><script>scriptaculous/builder.js</script></action>
                <action method="addJs"><script>scriptaculous/effects.js</script></action>
                <action method="addJs"><script>scriptaculous/dragdrop.js</script></action>
                <action method="addJs"><script>scriptaculous/controls.js</script></action>
                <action method="addJs"><script>scriptaculous/slider.js</script></action>
                <action method="addJs"><script>varien/js.js</script></action>
                <action method="addJs"><script>varien/form.js</script></action>
                <action method="addJs"><script>varien/menu.js</script></action>
                <action method="addJs"><script>mage/translate.js</script></action>
                <action method="addJs"><script>mage/cookies.js</script></action>

                <block type="page/js_cookie" name="js_cookies" template="page/js/cookie.phtml"/>

                <action method="addCss"><stylesheet>css/styles.css</stylesheet></action>
                <action method="addItem"><type>skin_css</type><name>css/styles-ie.css</name><params/><if>lt IE 8</if></action>
                <action method="addCss"><stylesheet>css/widgets.css</stylesheet></action>
                <action method="addCss"><stylesheet>css/print.css</stylesheet><params>media="print"</params></action>

                <action method="addItem"><type>js</type><name>lib/ds-sleight.js</name><params/><if>lt IE 7</if></action>
                <action method="addItem"><type>skin_js</type><name>js/ie6.js</name><params/><if>lt IE 7</if></action>
            </block>

            <block type="core/text_list" name="after_body_start" as="after_body_start" translate="label">
                <label>Page Top</label>
            </block>

            <block type="page/html_notices" name="global_notices" as="global_notices" template="page/html/notices.phtml" />

            <block type="page/html_header" name="header" as="header">
                <block type="page/template_links" name="top.links" as="topLinks"/>
                <block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>
                <block type="core/text_list" name="top.menu" as="topMenu" translate="label">
                    <label>Navigation Bar</label>
                    <block type="page/html_topmenu" name="catalog.topnav" template="page/html/topmenu.phtml"/>
                </block>
                <block type="page/html_wrapper" name="top.container" as="topContainer" translate="label">
                    <label>Page Header</label>
                    <action method="setElementClass"><value>top-container</value></action>
                </block>
            </block>

            <block type="page/html_breadcrumbs" name="breadcrumbs" as="breadcrumbs"/>

            <block type="core/text_list" name="left" as="left" translate="label">
                <label>Left Column</label>
            </block>

            <block type="core/messages" name="global_messages" as="global_messages"/>
            <block type="core/messages" name="messages" as="messages"/>

            <block type="core/text_list" name="content" as="content" translate="label">
                <label>Main Content Area</label>
            </block>

            <block type="core/text_list" name="right" as="right" translate="label">
                <label>Right Column</label>
            </block>

            <block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml">
                <block type="page/html_wrapper" name="bottom.container" as="bottomContainer" translate="label">
                    <label>Page Footer</label>
                    <action method="setElementClass"><value>bottom-container</value></action>
                </block>
                <block type="page/switch" name="store_switcher" as="store_switcher" template="page/switch/stores.phtml"/>
                <block type="page/template_links" name="footer_links" as="footer_links" template="page/template/links.phtml"/>
            </block>

            <block type="core/text_list" name="before_body_end" as="before_body_end" translate="label">
                <label>Page Bottom</label>
            </block>
        </block>

        <block type="core/profiler" output="toHtml" name="core_profiler"/>

    </default>

core.xml
<default>
<block name="formkey" type="core/template" template="core/formkey.phtml" />
</default>


cms.xml
  <default>
        <reference name="footer">
            <block type="cms/block" name="cms_footer_links" before="footer_links">
                <!--
                    The content of this block is taken from the database by its block_id.
                    You can manage it in admin CMS -> Static Blocks
                -->
                <action method="setBlockId"><block_id>footer_links</block_id></action>
            </block>
        </reference>
    </default>

catalog.xml
<default>
        <!-- Mage_Catalog -->
        <reference name="left">
            <block type="core/template" name="left.permanent.callout" template="callouts/left_col.phtml">
                <action method="setImgSrc"><src>images/media/col_left_callout.jpg</src></action>
                <action method="setImgAlt" translate="alt" module="catalog"><alt>Our customer service is available 24/7. Call us at (555) 555-0123.</alt></action>
                <action method="setLinkUrl"><url>checkout/cart</url></action>
            </block>
        </reference>
        <reference name="right">
            <block type="catalog/product_compare_sidebar" before="cart_sidebar" name="catalog.compare.sidebar" template="catalog/product/compare/sidebar.phtml"/>
            <block type="core/template" name="right.permanent.callout" template="callouts/right_col.phtml">
                <action method="setImgSrc"><src>images/media/col_right_callout.jpg</src></action>
                <action method="setImgAlt" translate="alt" module="catalog"><alt>Keep your eyes open for our special Back to School items and save A LOT!</alt></action>
            </block>
        </reference>
        <reference name="footer_links">
            <action method="addLink" translate="label title" module="catalog" ifconfig="catalog/seo/site_map"><label>Site Map</label><url helper="catalog/map/getCategoryUrl" /><title>Site Map</title></action>
        </reference>
        <block type="catalog/product_price_template" name="catalog_product_price_template" />
    </default>

catalogsearch.xml
<default>
        <reference name="header">
            <block type="core/template" name="top.search" as="topSearch" template="catalogsearch/form.mini.phtml"/>
        </reference>
        <reference name="footer_links">
            <action method="addLink" translate="label title" module="catalogsearch" ifconfig="catalog/seo/search_terms">
                <label>Search Terms</label>
                <url helper="catalogsearch/getSearchTermUrl" />
                <title>Search Terms</title>
            </action>
            <action method="addLink" translate="label title" module="catalogsearch">
                <label>Advanced Search</label>
                <url helper="catalogsearch/getAdvancedSearchUrl" />
                <title>Advanced Search</title>
            </action>
        </reference>

    </default>

customer.xml
  <default>
        <!-- Mage_Customer -->
        <reference name="top.links">
            <action method="addLink" translate="label title" module="customer"><label>My Account</label><url helper="customer/getAccountUrl"/><title>My Account</title><prepare/><urlParams/><position>10</position></action>
        </reference>

    </default>

checkout.xml
 <default>

        <!-- Mage_Checkout -->
        <reference name="top.links">
            <block type="checkout/links" name="checkout_cart_link">
                <action method="addCartLink"></action>
                <action method="addCheckoutLink"></action>
            </block>
        </reference>
        <reference name="right">
            <block type="checkout/cart_sidebar" name="cart_sidebar" template="checkout/cart/sidebar.phtml" before="-">
                <action method="addItemRender"><type>simple</type><block>checkout/cart_item_renderer</block><template>checkout/cart/sidebar/default.phtml</template></action>
                <action method="addItemRender"><type>grouped</type><block>checkout/cart_item_renderer_grouped</block><template>checkout/cart/sidebar/default.phtml</template></action>
                <action method="addItemRender"><type>configurable</type><block>checkout/cart_item_renderer_configurable</block><template>checkout/cart/sidebar/default.phtml</template></action>
                <block type="core/text_list" name="cart_sidebar.extra_actions" as="extra_actions" translate="label" module="checkout">
                    <label>Shopping Cart Sidebar Extra Actions</label>
                </block>
            </block>
        </reference>

    </default>

contacts.xml
 <default>
        <reference name="footer_links">
            <action method="addLink" translate="label title" module="contacts" ifconfig="contacts/contacts/enabled"><label>Contact Us</label><url>contacts</url><title>Contact Us</title><prepare>true</prepare></action>
        </reference>
    </default>

newsletter.xml    <default>

        <!-- Mage_Newsletter -->
        <reference name="left">
            <block type="newsletter/subscribe" name="left.newsletter" template="newsletter/subscribe.phtml"/>
        </reference>


    </default>

rss.xml
    <default>
        <reference name="footer_links">
            <action method="addLink" translate="label title" module="rss" ifconfig="rss/config/active"><label>RSS</label><url>rss</url><title>RSS</title><prepare>true</prepare><urlParams/><position/><li/><a>class="link-rss"</a></action>
        </reference>
        <block type="rss/list" name="head_rss" ifconfig="rss/config/active" />

    </default>

wishlist.xml
    <default>
        <reference name="top.links">
            <block type="wishlist/links" name="wishlist_link" />
            <action method="addLinkBlock"><blockName>wishlist_link</blockName></action>
        </reference>

        <!-- Mage_Wishlist -->
        <reference name="right">
            <block type="wishlist/customer_sidebar" name="wishlist_sidebar" as="wishlist" after="cart_sidebar" template="wishlist/sidebar.phtml" />
        </reference>

    </default>

tag.xml
    <default>
        <!-- Mage_Tag -->
        <reference name="left">
            <block type="tag/popular" name="tags_popular" template="tag/popular.phtml"/>
        </reference>


    </default>

reports.xml
    <default>
        <!-- Mage_Reports -->
        <reference name="right">
            <block type="reports/product_viewed" before="right.permanent.callout" name="right.reports.product.viewed" template="reports/product_viewed.phtml" />
            <block type="reports/product_compared" before="right.permanent.callout" name="right.reports.product.compared" template="reports/product_compared.phtml" />
        </reference>

    </default>


poll.xml
    <default>

        <!-- Mage_Poll -->
        <reference name="right">
            <block type="poll/activePoll" name="right.poll">
                <action method="setPollTemplate"><template>poll/active.phtml</template><type>poll</type></action>
                <action method="setPollTemplate"><template>poll/result.phtml</template><type>results</type></action>
            </block>
        </reference>


    </default>

directory.xml    <default>
        <reference name="head">
            <block type="core/template" name="optional_zip_countries" as="optional_zip_countries" template="directory/js/optional_zip_countries.phtml" />
        </reference>
    </default>

googleanalytics.xml    <default>
        <!-- Mage_GoogleAnalytics -->
        <reference name="after_body_start">
            <block type="googleanalytics/ga" name="google_analytics" as="google_analytics" template="googleanalytics/ga.phtml" />
        </reference>

    </default>
còn tiếp ...

Code - Các hàm lấy đường dẫn URL trong Magento trong file template .phtml


A. Các hàm get Url magento sử dụng trong file template .phtml

1. Get Base Url magento:
Mage::getBaseUrl();

2. Get Magento Skin Url magento:
Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_SKIN);

3. Get Media Url magento:
Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);

4. Get Js Url magento:
Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS);

5. Get Store Url magento:
Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);

6. Get Current Url magento:
Mage::helper('core/url')->getCurrentUrl();

7. Get Home Url magento :
Mage::helper('core/url')->getHomeUrl();

B. Các hàm Get Url magento trong CMS Pages hoặc Static Block:

1. Get Base Url magento :
{{store url=""}}

2. Get Skin Url magento:
{{skin url='images/imagename.jpg'}}

3. Get Media Url magento :
{{media url='/imagename.jpg'}}

4. Get Store Url magento :
{{store url='mypage.html'}}

Thứ Ba, 19 tháng 8, 2014

Layout - Tìm hiểu về thiết kế layout trong Magento


- Layout trong magento được định nghĩa trong các file .xml chứa trong thư mục /frontend/.../layout/
- Layout trong Magento là sự kết hợp của default layout layout updates.
- Mỗi module trong Magento cũng có 1 file layout.xml riêng, bên trong mỗi file này chứa các thẻ handle khác nhau, trong đó có handle <default> sẽ luôn được load.

Default layout: gồm page.xml và local.xml
- page.xml : chứa một block root mà tất cả các trang phải load đó là:
<block type="page/html" name="root" output="toHtml" template="page/3columns.phtml">
</block>
page/html : còn gọi là root block, các block khác đều là con trong block này.
Bên trong Block root này chứa các block structure:
- Block structure ( block cấu trúc ) sẽ chứa các block con bên trong, các block này cũng được <reference name=""> đến thông qua name="", as="" từ các nơi khác ( layout update cho block ), nội dung của block thể hiện trong file .phtml tương ứng của block đó:
- Nếu 1 Block cha được khai báo trong file layout, cùng với việc khai báo các Blocks con bên trong block cha đó, thì file template quy định nội dung .phtml của Block cha sẽ gọi các block con đã khai báo bằng hàm là: <?php echo $this->getChildHtml('ten_block_con') ?>
Sau đây là một số Structure Block và vai trò của chúng:


<block type="page/html_head" name="head" as="head">
</block> => Chứa các file CSS và JS


<block type="core/text_list" name="after_body_start" as="after_body_start" translate="label">

</block> => Các block con trong core/text_list sẽ tự nhiên được load mà không cần gọi hàm getChildHTML('block_name');



<block type="page/html_notices" name="global_notices" as="global_notices" template="page/html/notices.phtml" />


 <block type="page/html_header" name="header" as="header">
</block>

 <block type="page/html_breadcrumbs" name="breadcrumbs" as="breadcrumbs"/>

 <block type="core/text_list" name="left" as="left" translate="label">
</block>

<block type="core/messages" name="global_messages" as="global_messages"/> 

<block type="core/messages" name="messages" as="messages"/>

<block type="core/text_list" name="content" as="content" translate="label">
</block>

<block type="core/text_list" name="right" as="right" translate="label">
</block>

<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml">
</block>

<block type="core/text_list" name="before_body_end" as="before_body_end" translate="label">
</block>

 <block type="core/profiler" output="toHtml" name="core_profiler"/>