Magento: изменения макета с использованием только локального XML - PullRequest
2 голосов
/ 29 ноября 2010

Я довольно новичок в magento, и я хотел бы настроить интерфейс магазина.

Я использую Magento 1.4.1 и планирую внести все изменения в дизайн в файле local.xml моего нового шаблона.

Я сомневаюсь, что можно изменитьструктура макета только с использованием local.xml.Я имею в виду без изменения файлов phtml.

Простой пример того, что я хотел бы получить: я хочу поместить поиск по каталогу в другую часть моего html, а не внутри, как сегодня.Поэтому я хотел бы удалить его из верхней панели и поместить в другой div.

<div class="top-bar">
<div class="breadcrumbs">
    <ul>
                    <li class="home">
                            <a href="http://www.domain.com/magento/" title="Ir para página principal">Principal</a>
                                        <span>/ </span>
                        </li>
                    <li class="category9">
                            <strong>Product Category</strong>
                                    </li>
            </ul>
</div><!--breadcrumbs-->
<form id="search_mini_form" action="http://www.domain.com/magento/catalogsearch/result/" method="get">
    <div class="form-search">
        <label for="search">Pesquisar</label>
        <input id="search" type="text" name="q" value="" class="input-text" />
        <button type="submit" title="Ir" class="button"><span><span>Ir</span></span></button>
        <div id="search_autocomplete" class="search-autocomplete"></div>
        <script type="text/javascript">
        //<![CDATA[
            var searchForm = new Varien.searchForm('search_mini_form', 'search', 'Procurar em toda a loja...');
            searchForm.initAutocomplete('http://www.domain.com/magento/catalogsearch/ajax/suggest/', 'search_autocomplete');
        //]]>
        </script>
    </div>
</form>
</div>   <!--top bar-->

Как мне это сделать?Можно ли использовать только local.xml?

Заранее спасибо и наилучшими пожеланиями

1 Ответ

3 голосов
/ 29 ноября 2010

Практический ответ: «Нет, вы не можете этого сделать».

То, что вы хотите сделать, теоретически возможно, хотя объем работы, которую необходимо выполнить, и ее ценность будут сомнительными.

Вы используете local.xml для добавления, удаления и взаимодействия с блоками. Каждый файл phtml имеет родительский блок, который соответствует чему-то в вашем макете. Вы не можете изменить способ отображения блока phtml с помощью XML-формата, если только блок и phtml не содержат логику, разрешающую это.

Теоретически, вы могли бы

  1. Определите класс, отвечающий за рендеринг определенного шаблона
  2. Создать новый класс Block, который расширяет этот класс (не переопределяет)
  3. Изменить код добавления в local.xml для замены класса блока
  4. В вашем новом классе блоков переопределите метод визуализации представления, чтобы он вызывал метод визуализации родительского представления, а затем пытается изменить результаты возвращенной строки перед возвратом ее значения

Опять все возможно, но сомнительной ценности.

Почему не решается заменить phtml-файл из темы по умолчанию на phtml-файл в своих собственных темах?

...