Tworzę niestandardowy moduł, który wyświetla Mapy Google w interfejsie Magento. Aby uzyskać te mapy, administrator musiałby wprowadzić i zapisać adres URL lokalizacji mapy w panelu administracyjnym. To wszystko działa dobrze. Adres URL jest zapisywany w bazie danych, a mapy są wyświetlane w interfejsie sklepu.
Ale teraz chciałbym wyświetlić podgląd tej mapy również w panelu administracyjnym. Umożliwi to administratorowi łatwe sprawdzenie, czy prawidłowy adres URL został wprowadzony i zapisany.
Chcę wyświetlić to Preview Map
w nowym <field>
(tuż pod polem, w którym należy wprowadzić adres URL) i użyć podglądu mapy <label>
. Poniższa makieta pokazuje, co próbuję osiągnąć.
Do mojego system.xml
pliku modułów dodałem następujący kod:
<fields>
....
<preview translate="label comment">
<label>Map Preview</label>
<frontend_type>link</frontend_type>
<frontend_model>mymodule/system_config_map</frontend_model>
<comment>Preview of your map</comment>
<sort_order>20</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</preview>
</fields>
A mój MyNamespace/MyModule/Block/System/Config/Map.php
zawiera następujący kod:
class MyNamespace_MyModule_Block_System_Config_Map extends Mage_Adminhtml_Block_Abstract implements Varien_Data_Form_Element_Renderer_Interface
{
public function render(Varien_Data_Form_Element_Abstract $element) {
$url = Mage::helper('mymodule')->getMapUrl($store = null);
return '<iframe style="border: 0;" src="'.$url.'" frameborder="0" width="100%" height="270"></iframe>';
}
}
To renderuje Mapę Google w panelu administracyjnym, a także renderuje się we właściwy sposób, <group>
ale nie jest ładowany w żądanym przeze <field>
mnie miejscu. To jest zrzut ekranu z bieżącej sytuacji.
Próbowałem wszystkiego <frontend_type>
, co mogłem wymyślić ...
Więc moje pytanie brzmi: jak mogę wstawić do <iframe>
panelu administracyjnego <field>
? Czy powinienem coś dodać do swojego <frontend_model>
?
sort_order
twoja 'Map Details'
dziedzina? Czy jest mniejszy niż 20
użyty do twojego 'Map Preview'
?
<frontend_model>
jest rzeczywiście właściwą drogą. W tym pliku powinieneś być w stanie$rendered .= '<iframe...