Установка глобальной переменной в Magento, GUI?

Недавно я начал использовать Magento для интернет-магазина клиента и все еще нуждаюсь в том, чтобы справиться с его системами.

Интернет-магазин должен иметь несколько ссылок и получать информацию из другого домена, где расположен корпоративный веб-сайт. Я бы предпочел не жестко указывать имя домена или URL-адрес, а вместо этого определять его в каком-то месте и использовать это значение в шаблонах phtml во всем интернет-магазине. Это упрощает настройку, когда мы перемещаем сайт между URL-адресом разработчика, промежуточным и производственным URL.

Может ли кто-нибудь предложить способ Magento сделать это? Предпочтительно мы могли бы добавить поле в GUI Config Store в бэкэнд, аналогично тому, как установлен {{base_url}}. Или, может быть, я ошибаюсь?

Solutions Collecting From Web of "Установка глобальной переменной в Magento, GUI?"

Magento предлагает (относительно) легкую поддержку настраиваемых значений конфигурации. Лучшим способом, который я нашел для этого, является создание единственного модуля пурпурного цвета, который содержит все ваши пользовательские значения конфигурации.

Как и все, что угодно Magento, есть много шагов, и любой, кто ошибается, может вас тронуть (или меня!).

Создание пустого модуля Magento

Во-первых, вам нужно настроить модуль magento для хранения всех ваших настраиваемых значений конфигурации. Создание модуля пурпурного

  1. Создайте xml-файл в приложении / etc / modules
  2. Создание структуры папок в приложении / code / local / Companyname

Companyname – это уникальная строка, которая служит пространством имен, и большинство учебных пособий magento рекомендуют вам использовать название вашей компании здесь. Для целей этого руководства я буду использовать «Stackoverflow». Везде, где вы видите строку Stackoverflow, замените ее своей уникальной строкой.

Итак, для шага 1 создайте файл в приложении / etc / modules с именем «Stackoverflow_Customconfig.xml» и поместите следующее внутри

<?xml version="1.0"?> <config> <modules> <Stackoverflow_Customconfig> <active>true</active> <codePool>local</codePool> </Stackoverflow_Customconfig> </modules> </config> 

Случайный Magento Tip: есть части системы magento, которые рассматривают пробелы значительными, поэтому всегда лучше не включать пробелы со значениями вашего атрибута (<active> true </ active> vs. <active> true </ active>

Затем создайте следующую папку

 mkdir app/code/local/Stackoverflow/Customconfig mkdir app/code/local/Stackoverflow/Customconfig/etc 

И создайте файл на

 app/code/local/Stackoverflow/Customconfig/etc/config.xml 

со следующим содержанием

 <?xml version="1.0"?> <config> <modules> <Stackoverflow_Customconfig> <version>0.1.0</version> </Stackoverflow_Customconfig> </modules> </config> 

Поздравляем, вы только что создали новый модуль Magento. Если вы очистите кеш пуповины и переходите к

 System -> Configuration -> Advanced -> Disable Modules Output 

вы должны увидеть свой модуль в списке.

Добавьте файл System.xml в модуль

Затем мы добавим файл system.xml. Этот файл используется для добавления настраиваемого значения конфигурации в magento, которое вы сможете захватить в любом месте во время цикла запроса magento. Добавить файл в

 app/code/local/Stackoverflow/Customconfig/etc/system.xml 

Это содержит следующее

 <config> <sections> <design> <groups> <my_or_their_group translate="label"> <label>A grouping of config values. Make your own, or us an existing group.</label> <frontend_type>text</frontend_type> <sort_order>50</sort_order> <show_in_default>1</show_in_default> <show_in_website>0</show_in_website> <show_in_store>0</show_in_store> <fields> <my_config translate="label"> <label>This will be my config's label</label> <frontend_type>text</frontend_type> <sort_order>50</sort_order> <show_in_default>1</show_in_default> <show_in_website>0</show_in_website> <show_in_store>0</show_in_store> </my_config> </fields> </my_or_their_group> </groups> </design> </sections> </config> 

<design> – это название раздела, в котором будет отображаться ваш конфиг. «Общее, веб, дизайн, настройка валюты и т. д.» По большому счету, это будет более строчная версия названия, т. Е. «Общее» становится «общим», «Дизайн» становится «дизайном». Если вы не знаете, каков должен быть этот внешний тег, выполните поиск через основные модули magento. т.е. grepping для «Currency Setup» показывает упоминание в

 app/code/core/Mage/Directory/etc/system.xml <currency translate="label" module="directory"> <label>Currency Setup</label> и app/code/core/Mage/Directory/etc/system.xml <currency translate="label" module="directory"> <label>Currency Setup</label> 

Таким образом, вы должны использовать тег <currency / <, а не более интуитивно понятный <currency_setup />

<my_or_their_group translate = "label"> – это название группы, в которой будет отображаться ваша переменная конфигурации. Группы – это выпадающие списки Ajax, содержащие поля конфигурации. Например, в разделе «Общие» есть группа «Варианты стран» и группа «Локальные параметры». Опять же, проверьте существующие основные модули, если вы не знаете, как разместить значение в существующей группе.

Вы также заметите здесь атрибут translate , а также соответствующий тег метки. Это позволяет использовать любую строку, которую вы хотите в HTML-интерфейсе, в качестве названия группы, но внутренне сохраняйте имя допустимым именем тега XML. Наш тег называется

 <my_or_their_group /> 

но в интерфейсе группа будет иметь заголовок

Группировка значений конфигурации. Сделайте свою собственную или существующую группу.

Наконец, <my_config translate = "label"> – это имя значения yoru conifg. Снова обратите внимание на атрибут translate . Те же правила, что и выше, применяются.

Другая структура xml необходима и (в основном) используется для управления тем, какие входы HTML будут использоваться для вашей конфигурации. Если вам нужен конкретный элемент интерфейса, найдите пример в основном модуле и скопируйте структуру XML.

Это позволит вам устанавливать и искать значения конфигурации в интерфейсе GUI Magento. Вы можете получить свои значения, используя статический метод getStoreConfig глобального объекта Mage и указав URI вашего значения конфигурации. URI создается с использованием раздела / группы / имени вашей конфигурации.

 Mage::getStoreConfig('design/my_or_their_group/my_config'); 

Magento предоставляет пользовательские переменные с версии 1.4 и далее.

Войдите в систему администратора, система -> Пользовательские переменные -> создайте новую настраиваемую переменную с кодом «my_variable».

Введите HTML-текст и обычный текст для этой переменной

Вы можете показать пользовательскую переменную на страницах CMS, поставив этот {{customVar code=my_variable}}

Или на .phtml страницах:

 $variableHtml = Mage::getModel('core/variable')->loadByCode('my_variable')->getValue('html'); $variablePlain = Mage::getModel('core/variable')->loadByCode('my_variable')->getValue('plain'); 

Самый простой способ – добавить узел в основной конфигурационный файл xml magento. Но это не рекомендуется, так как это вызовет проблемы с обновлением. Чтобы установить пользовательские значения без редактирования ядра … проверьте эту ссылку

Как переопределить значения конфигурации

Я слишком новичок, чтобы добавить комментарий к ответу Алана, но вот еще информация от Magento:

  • XML для конфигураций администратора – «В этом документе описывается, как определять поля для использования вашего модуля в разделе« Конфигурация ».

-ed.

Алан, спасибо за ваш ответ! Это был ключ, который открыл мне тайну. Даже после того, как я читал ваш отличный гид . Поскольку я делаю все возможное, чтобы не создавать основные файлы, я начал создавать расширения для своей электронной коммерции. И у меня есть тот, который, по моему мнению, достаточно хорош, чтобы выпустить людей, но я хотел бы настроить его в администраторе, чтобы не было необходимости в редактировании файлов.

Я начал с вашего кода выше и увидел, что добавленное «меню» не было в «General», но в «General-General» или General-Web, General-Design и т. Д. Я хотел, чтобы моя вещь появилась в General , но я не хотел делать, как все остальные, и добавлять целую группу меню для моих расширений.

Если читатель пришел сюда от Google, просто желая, чтобы мои параметры где-то были легкими в Admin, тогда читайте дальше (и именно поэтому я добавляю еще один ответ). Во-первых: сделайте то, что говорит Алан выше. Получите ваше меню, чтобы отобразить его в меню Общие -> Общие -> Меню. Примечание. Вам нужно будет очистить кеш, а также выйти из системы, поскольку некоторая информация сохраняется в сеансе.

Чтобы ваше собственное меню отображалось в разделе «Общие», вы должны сделать то же самое, что если вы получаете свою собственную группу или даже Tab в верхней строке меню, вы должны предоставить себе разрешение ACL в config.xml :

 <!-- file: config.xml --> <config> <adminhtml> <acl> <resources> <admin> <children> <system> <children> <config> <children> <ytf translate="title"> <title>Youtube Feed</title> </ytf> </children> </config> </children> </system> </children> </admin> </resources> </acl> </adminhtml> </config> 

Вот мой system.xml который соответствует конфигурации. Обратите внимание, что ytf является родительским меню. Я смоделировал это с модуля «True Order Edit» от TniyBrick. Также ytf : ytf и ytfeed имеют тонкие отличия от их записей. Запись ytf – это то, что отображается, когда вы переходите в Admin -> config и смотрите слева в группе General. ytfeed – это «бар», который открывается в центре страницы, когда вы нажимаете «General-> Youtube Feed»,

 <!-- file: system.xml --> <config> <sections> <ytf translate="label" module="ytfeed"> <label>Youtube Feed</label> <tab>general</tab> <frontend_type>text</frontend_type> <sort_order>700</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> <groups> <ytfeed translate="label" module="ytfeed"> <label>Youtube Feed</label> <sort_order>50</sort_order> <expanded>1</expanded> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> <fields> <username translate="label"> <!-- Mage::getStoreConfig('ytf/ytfeed/username'); --> <label>YouTube Username:</label> <comment>(or YouTube channel name)</comment> <frontend_type>text</frontend_type> <sort_order>10</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> </username> </fields> </ytfeed> </groups> </ytf> </sections> </config> 

Еще одна ссылка, которая очень помогла мне:
http://www.scorgit.com/blog/custom-options-in-a-magento-back-end-dropdown-menu/

Обновление: я сделал расширение из этого ответа .